JavaScript Minifier & Beautifier
Private by design — runs entirely in your browser
Minify or beautify JavaScript in your browser. Toova compresses JS for production or expands minified bundles into readable code, all without uploading your source to any server.
Production-grade minification
Minify mode removes comments, collapses whitespace, and shortens common patterns to produce a compact bundle. The output is semantically equivalent to the input — every function call, every side effect, every export survives. Useful for one-off snippets that do not pass through a build pipeline, or for shrinking inline scripts in HTML pages before deploying.
Beautify minified code
When you need to audit a minified library, debug an obfuscated script, or read the compiled output of a framework, beautify mode is what you want. Toova takes a single-line minified bundle and expands it into properly indented code with newlines between statements, sensible spacing around operators, and clear block boundaries. It does not deobfuscate — that is a separate problem — but it makes the code legible enough to read.
Local-only
All processing happens in your browser. The JavaScript you paste never leaves the page, which matters when the source is proprietary or contains secrets you would rather not share. The page works offline after first load and there are zero outbound requests during processing.
Frequently Asked Questions
- How much smaller is minified JavaScript?
- Typically 50-70% smaller before gzip, sometimes much more if the source had lots of whitespace and comments. After gzip the savings shrink to 20-30% because compression already removes redundant whitespace.
- Does beautify undo obfuscation?
- No. Beautify reformats the code so it is readable, but it does not rename variables back to meaningful identifiers or restore stripped function names. Obfuscation is one-way by design — beautify only fixes formatting.
- Will minification break my JavaScript?
- Not if the input is syntactically valid. The minifier preserves all semantics — every function call and side effect runs in the same order. If you rely on Function.name or specific stack traces, those may change.
- Does it support modern JavaScript?
- Yes. Arrow functions, async/await, destructuring, optional chaining, and other modern syntax are all handled correctly. The output stays in the same syntax level as the input — no transpilation happens.
- Is my code sent to a server?
- No. Processing happens entirely in your browser. Nothing is uploaded or logged.