CruxDevCruxDev Tools Prompts
dev Utility • Zero-Server Privacy • 100% Client-Side

WebAssembly IDE

Run Python, JS, and more natively in the browser via WASM. No installs — execute code instantly.

Overview

Run JavaScript, Python, SQL, and HTML in your browser with a Monaco editor and WebAssembly runtimes. Python executes on Pyodide, SQL on an in-memory SQLite compiled to WebAssembly, and everything runs client-side with the output shown in a console panel.

How It Works

Pick a language from the dropdown: JavaScript, Python, SQL, or HTML. The editor loads a starter snippet for each. Press Run to execute. JavaScript output comes from console.log and console.error calls, including formatted objects. Python and SQL show a status pill while their WebAssembly engines load, then run your code. SQL results render as tables of rows, and HTML renders as a live preview below the editor. A copy button takes the current code.

Step-by-Step Usage Guide

  1. Choose a language; the editor fills with a starter snippet.
  2. Edit the code in the Monaco editor.
  3. Press Run and read the console panel; for Python and SQL, wait for the ready pill on first use.
  4. For SQL, keep building on the same in-memory database across runs, or reload to start clean.

Technical Specifications & Standards

Each language runs on a different execution path. JavaScript is compiled to an async function and executed in the page, so top-level await works and the captured console shows objects as formatted JSON; because it runs on the main thread, an accidental infinite loop will freeze the tab rather than time out. Python uses Pyodide, the CPython build for WebAssembly, fetched from a CDN the first time it is needed; stdout and stderr are captured separately so tracebacks appear in the output panel. SQL uses sql.js, SQLite compiled to WebAssembly, against an in-memory database that persists across runs within the page session: tables you CREATE remain available to the next Run, but everything resets on reload. HTML renders your markup in a live preview. The two WASM engines are the only parts of this tool that fetch anything from the network; JavaScript and HTML execution are fully local, and neither Python nor SQL code is ever uploaded, it only triggers the engine download.

Targeted Use Cases

  • Testing a JavaScript snippet that needs top-level await without setting up a project.
  • Trying Python code with the standard library where installing Python is impractical.
  • Practicing SQL against a scratch in-memory database with instant feedback.
  • Previewing a small HTML and CSS fragment before pasting it into a real page.

Notes & Gotchas

  • Reload the page to reset the SQLite database when earlier statements have polluted it.
  • Avoid unbounded loops in JavaScript; execution runs on the main thread and cannot be interrupted.
  • Wait for the Pyodide or SQLite ready pill before judging a slow first run as failed.
  • Check the console panel for stderr separately; Python tracebacks print there rather than vanishing.

Frequently Asked Questions

Why did my Python run say the engine is loading?

Pyodide is a multi-megabyte WebAssembly build fetched from a CDN on first use. The status pill shows loading and ready states; once loaded it stays for the session and subsequent runs start immediately.

Do my SQL tables survive between runs?

Yes, within the page session. The SQLite database is in-memory and persists across Run presses, so you can CREATE once and query later. Reloading the page discards everything.

Can a JavaScript infinite loop be stopped?

No. JavaScript execution happens on the page's main thread, so a loop without an exit condition will hang the tab until the browser kills it. Test risky loops in small steps.

Is my code sent to a server?

No. Python and SQL execute in WebAssembly inside your browser, and JavaScript and HTML never leave the page. The only network traffic is the one-time engine download for Pyodide and SQLite.