cfmlFiddle

A self-hosted CFML playground. Run code against Adobe ColdFusion, Lucee, and BoxLang side by side.

View on GitHub Read the blog post
cfmlFiddle running code against CF2025 and Lucee 7 simultaneously

Why?

Online CFML tools like CFFiddle.org, TryCF.com, and Try.BoxLang.io are handy for quick tests. cfmlFiddle is for when you need to control the exact engine version, compare output across multiple engines at once, or test code that touches the filesystem, Java objects, or custom tags. It runs on your machine. No login, no restricted functions, works offline.

What you get

Multi-engine execution

Run the same code on every engine simultaneously. Results come back with timing and version info so you can see exactly what ran where.

Version pinning

Each engine is a CommandBox server.json. Install whatever version you want, down to the patch. Keep old versions around for as long as you need them.

Interactive mode

Write code with forms and they just work. cfmlFiddle auto-detects forms in your output and renders them in a sandboxed iframe so they can post back to themselves.

Real-time status

Server-Sent Events stream engine status to the browser. The heartbeat checks all engines in about 50ms using raw socket connections.

Snippets and Gists

Save your code as a snippet for later, or import directly from a GitHub Gist URL. Snippets appear in a dropdown for quick loading.

No dependencies

All frontend libraries ship locally. No CDN calls by default. One config switch if you prefer remote loading. Just CommandBox and your engines.

Included engines

Default server configs ship for all of these. Start the ones you need.

adobe@2016 adobe@2021 adobe@2023 adobe@2025 lucee@5 lucee@6 lucee@7 boxlang native boxlang adobe compat boxlang lucee compat

Quickstart

  1. Install CommandBox if you don't have it.
  2. Clone the repo:
    git clone https://github.com/JamoCA/cfmlFiddle.git
    cd cfmlFiddle
  3. Edit config.json and set boxExe to your CommandBox path.
  4. Launch:
    box task run launchCFMLFiddle
  5. Pick an engine from the menu. It starts and opens in your browser.

FAQ

Do I need all 10 engines installed?

No. Only the engines you start get installed. CommandBox downloads them on first run. You can delete a server.json from current-servers/ if you never want a particular engine.

How much disk space does this use?

The cfmlFiddle code itself is small (under 2MB). Each engine takes between 100MB and 500MB when CommandBox installs it. If you only run two engines, that's about 400MB to 1GB total.

Can I use this with a team?

It was built for local single-user use, but it works on a LAN. Set allowedIPs in config.json to your team's IP range (or * to allow all). The IP allowlist protects the UI and all API endpoints. SSE holds one connection per browser tab, so a small team is fine.

Is there a public hosted version?

No. cfmlFiddle is designed to run locally. The payload execution model (writing temp files to disk, executing via cfhttp) isn't safe for untrusted users. That's a feature, not a limitation: you get full access to everything the engine can do.

What's the difference between this and CFFiddle or TryCF?

Those are hosted services you use through a browser. cfmlFiddle runs on your machine. You control the versions, there's no login, no function restrictions, and you can test code that accesses files, databases, Java objects, or custom tags. You can also compare output across engines simultaneously.

Does it work on Mac and Linux?

The CFML code is cross-platform. The server start/stop commands use cmd /c start which is Windows-specific, so those parts would need a shell equivalent on other operating systems. CommandBox itself runs everywhere.

Can I add my own engine version?

Copy any server.*.json in current-servers/, change the cfengine to the version you want (e.g. adobe@2021.0.14), give it a unique name and port, and Reinit. CommandBox handles the download.

What license is it under?

MIT. Use it however you want. Third-party libraries (Ace, jQuery, SweetAlert2, jQuery contextMenu) include their own license files in assets/vendor/.