A JavaScript console without the clutter
Browser developer tools are powerful, but they are not friendly for practising: they mix your output with page messages, and a typo can leave variables behind. This runner gives you a clean editor and a clean console. Every run starts fresh in a new Web Worker, a background thread with its own global scope and no access to this page, its cookies or its DOM. That makes it a safe place to try snippets you found online and a good fit for learning, interview questions and coding exercises.
What is supported
You get the full modern language your browser supports: let and const, arrow functions, classes and private fields, destructuring, spread, optional chaining, BigInt, Map/Set, generators, regular expressions and the Intl formatting APIs. Your code is wrapped in an async function, so top-level await works and you can test promises and timers. console.log, info, warn and error are captured, objects and arrays are printed as readable JSON, and an uncaught exception shows its message and the line in main.js.
Reading input
Many exercises read from standard input, as they would in Node.js. Put the lines in the Input box and call readline(), input() or prompt(); each call returns the next line, and null when the input runs out, so a while loop can read everything. There is no DOM in a worker, so code that uses document or window should go in the HTML, CSS and JS playground instead.
Stopping runaway code
An accidental infinite loop in a normal tab freezes the whole page. Here the editor stays responsive: press Stop, or let the time limit end the run, and the worker is terminated immediately. Node-specific modules such as fs and require() are not available because this is a browser engine, not Node.js. Share link encodes the code into the address after the # sign, so nothing is stored on a server.