JS Runner
Run JavaScript and TypeScript in your browser
Write or paste code and run it in an isolated worker with console output, a time limit and no network access.
- JavaScript
- TypeScript
- Console
- Playground
How to use JS Runner
- Pick JavaScript or TypeScript, then type or paste code into the editor, load one with Example, or use Open file. Tab indents; press Esc then Tab to move focus out of the editor.
- Press Run or Ctrl/⌘ + Enter. Output from
console.log,console.table,console.groupand the other console methods appears in the Console below. - Choose a Time limit (5, 10, 30 or 60 s). Press Stop at any time, for example to end an infinite loop or a
setInterval. - For TypeScript, tick Show compiled JS to see the JavaScript that actually runs.
- Turn on Timestamps to see when each entry was logged, and use Copy output, Send to… or Clear output on the console.
How it works
Each run starts a fresh Web Worker, created from your code, and terminates it when the run is over, so nothing carries over between runs and the worker can’t read or change the page. Your code is wrapped in an async function, which is why top-level await works. A small runtime replaces console so output is captured and pretty-printed, and keeps track of timers and fetch calls so the run only counts as finished when your code and everything it scheduled are done.
TypeScript is turned into JavaScript with Sucrase, which strips type annotations without type-checking and keeps every line where it was, so error line numbers match your code. Errors and stack traces are mapped back to lines in the editor. Sucrase is downloaded from this site the first time you run TypeScript.
The site’s Content Security Policy also applies inside the worker: requests to other servers are blocked, and eval and new Function don’t work.
Limits
- Runs as a plain script in a worker: there is no DOM, so
document,windowandalertdon’t exist. - Static
importandexportstatements aren’t supported, and npm packages aren’t available; paste the code you need instead. - Network requests to other sites are blocked, and
evalandnew Functionare blocked. - TypeScript types are removed but not checked, so type errors don’t stop the code from running; only syntax errors do.
- Output stops after 2,000 console entries or 1 MB of text, and the run is then stopped. Objects are printed 4 levels deep and with up to 100 items per collection;
console.tableshows the first 1,000 rows.
Privacy
Your code runs only in your browser, in an isolated worker, and is never uploaded. The editor contents, language and time limit are saved in this browser’s local storage so they are still there when you come back. Code sent here from another tool or a Learn page with Send to… arrives through this tab’s session storage and is removed as soon as it is read; the same applies to console output you send on. This tool doesn’t offer share links.
Frequently asked questions
Why does document or window say it is not defined?
Code runs in a Web Worker, which has no page to work with, so DOM APIs don’t exist there. Use the console methods to see results. Worker APIs such as setTimeout, Promise, crypto and TextEncoder are available.
Can I fetch data from an API?
Not from other sites. The site’s security policy blocks requests to any server except this one, so a fetch to an external URL fails with a network error. Paste the data into your code instead.
Does it type-check my TypeScript?
No. Types are stripped with Sucrase without checking them, so the code runs even if it has type errors. Syntax errors are reported with their line and column before anything runs.
What happens if my code has an infinite loop?
The page stays responsive because the code runs in a separate worker. Press Stop, or wait for the time limit, and the worker is terminated.
When does a run finish?
When your code has finished and no timers or fetch calls it started are still pending. A setInterval that is never cleared keeps the run going until you press Stop or the time limit is reached.
Why can’t I use import?
Code runs as a classic script, not a module, and there is no network access to download packages. Static import and export statements are detected before running and explained instead.
More tools
- Clean Image: Inspect and remove hidden image metadata
- JWT Decoder: Decode and verify JSON Web Tokens
- Diff Checker: Compare two texts line by line
- JSON Formatter: Format, validate and minify JSON
- Encode / Decode: Base64, URL, HTML entity and hex
- Hash Generator: MD5, SHA and HMAC of any text
- UUID Generator: Generate UUID v4 and v7 in bulk
- Timestamp Converter: Unix time ↔ human dates
- Regex Tester: Test regular expressions live
- URL Parser: Break a URL into its parts
- HTTP Status Codes: Look up any HTTP status code
- MIME Type Lookup: File extension ↔ MIME type
- Password Generator: Strong random passwords and passphrases
- Random String Generator: Random tokens, IDs and keys
- Slug Generator: Turn titles into URL slugs
- Case Converter: camelCase, snake_case, Title Case and more
- Word Counter: Count words, characters and reading time
- JSON to TypeScript: Generate TypeScript types from JSON
- JSON Diff: Compare two JSON documents structurally
- JSON to SQL: Turn JSON arrays into SQL inserts
- YAML ↔ JSON: Convert between YAML and JSON
- XML ↔ JSON: Convert between XML and JSON
- CSV ↔ JSON: Convert between CSV and JSON
- CSV Viewer: View, sort and filter CSV files
- SQL Formatter: Format and beautify SQL queries
- cURL ↔ Fetch: Convert cURL commands to fetch and back
- Markdown Editor: Write Markdown with a live preview
- Text Cleaner: Remove duplicate lines, empty lines and extra spaces
- Find & Replace: Find and replace in any text
- Cron Expression Builder: Build and explain cron schedules
- User-Agent Parser: Identify browser, OS and device from a user agent
- HTTP Headers Inspector: Paste response headers and get them explained
- JWT Generator: Create and sign test JSON Web Tokens
- Certificate Inspector: Decode PEM certificates and keys
- Meta Tag Inspector: Check a page's SEO and social tags
- UTM Builder: Build campaign URLs with UTM parameters
- URL Cleaner: Strip tracking parameters from links
- Robots.txt Generator: Create and test a robots.txt file
- Sitemap Generator: Create an XML sitemap from a list of URLs
- Image Compressor: Shrink JPEG, WebP and AVIF images in your browser
- Image Resizer: Resize images by pixels, percentage or to fit a box
- Image Converter: Convert between PNG, JPEG, WebP and AVIF
- Image to Base64: Encode images as Base64 data URIs and decode them back
- SVG Optimizer: Minify and sanitize SVG files
- Favicon Generator: Make favicon.ico, Apple and Android icons from an image or emoji
- Color Converter: HEX, RGB, HSL, OKLCH and contrast checks
- Number Base Converter: Binary, octal, decimal, hex and float bits
- IP / CIDR Calculator: Subnets, masks and IP ranges for IPv4 and IPv6
- JSONPath Query: Query JSON with JSONPath expressions
- JSON Schema Validator: Validate JSON against a schema, or generate one
- Semver Checker: Check versions against semver ranges
- chmod Calculator: Unix permissions: rwx ↔ octal
- .env Diff: Compare and validate .env files
- TOTP Generator: Generate and verify 2FA codes
- String Escaper: Escape and unescape strings for any language
- Unicode Inspector: See every character, code point and hidden symbol
- Mock Data Generator: Generate realistic fake data
- QR Code Generator: Create QR codes for links, Wi-Fi and contacts
- Lorem Ipsum Generator: Placeholder text in paragraphs, sentences or words
- Date Calculator: Date differences, business days and durations
- Unit Converter: Convert bytes, lengths, weights, temperatures and more
- Query CSV with SQL: Run SQL queries on CSV files
- PDF Merge & Split: Merge, split, reorder and rotate PDFs
- PDF Metadata Cleaner: See and remove hidden PDF metadata
- Office Metadata Cleaner: Remove author and revision data from Word, Excel and PowerPoint
- Images to PDF: Combine images into one PDF
- Image Editor: Crop, rotate, resize and adjust images
- Encrypt / Decrypt Text: Encrypt text with a passphrase (AES-GCM)
- SSH Key Generator: Generate Ed25519 and RSA SSH keys locally
- Email Header Analyzer: Trace an email's path and check SPF, DKIM and DMARC
- JSON to Code: Generate Go, Python, Rust, Java, C# and Kotlin models from JSON
- docker run ↔ Compose: Convert docker run commands to docker-compose and back
- Color Palette Extractor: Pull the dominant colours out of any image
- Password Strength Checker: How long would your password take to crack?
- SPF / DKIM / DMARC Checker: Validate and explain email DNS records
- Kubernetes YAML Checker: Validate and explain Kubernetes manifests
- .gitignore Generator: Build a .gitignore from presets
- CSP Builder: Build and check a Content-Security-Policy
- JSON-LD Generator: Create schema.org structured data
- Open Graph Image Generator: Make 1200×630 social preview images
- CSS Generator: Gradients, shadows, clamp() and more
- Time Zone Meeting Planner: Find meeting times across time zones