LFUnminify, online code unminifier by Ludovic Frank
EN

Unminify JavaScript online

Paste a minified .js file, a webpack bundle or a single line snippet, and get properly indented JavaScript back in the panel on the right. Formatting is done by Prettier, in your browser, with nothing uploaded anywhere.

Your unminified, beautified code will appear here

Why JavaScript ends up unreadable

Every modern build pipeline minifies JavaScript before shipping it. Terser, esbuild, SWC and their equivalents remove whitespace and comments, then rename local variables and functions to single letters, collapse nested blocks into chained expressions, and merge the whole application into one or two files. A React app that started as three hundred readable source files arrives in the browser as a single line of a few hundred kilobytes. The code still runs perfectly, but the moment you need to read it, the file is a wall of text with no structure to hold on to.

What formatting actually gives you back

Beautifying a bundle restores the things that make code navigable. Statements go back on their own lines, so a stack trace pointing at line 1 column 24815 becomes a real location you can jump to. Nesting becomes visible, so you can see where a function starts and ends, which branch a condition guards, and how a callback chain is assembled. Strings, URLs and endpoint names become easy to scan, which is usually what you are after when you are auditing a script rather than debugging your own.

Modern syntax is handled

The formatter parses current JavaScript, not a subset from a decade ago. Arrow functions, classes, async and await, generators, optional chaining, nullish coalescing, template literals, destructuring, spread syntax, dynamic imports and ES modules all format correctly. JSX is supported too, which matters when you are looking at a React component that was compiled without being transformed away. Because it is Prettier doing the work, the output follows the same conventions your editor already applies to your own files.

Where the limits are

Unminifying is not reverse engineering. The minifier deleted your comments and renamed your variables, and no formatter can guess that the variable now called n used to be called remainingRetries. If the project published a source map, load that in your browser devtools instead, it is the only route back to the genuine original. And if the file was deliberately obfuscated rather than merely minified, expect readable structure but not readable intent.

Frequently asked questions

Can this unminify a webpack or Vite bundle?

Yes. Paste the bundle or load it by URL and it will be formatted like any other JavaScript file. Large bundles take a few seconds because the work happens on your own machine, and the module structure stays visible once the code is indented.

Does it deobfuscate JavaScript?

It formats obfuscated code, which makes it far easier to read, but it does not undo the obfuscation itself. Encoded strings, artificial control flow and dead code inserted on purpose remain exactly where they were.

Will it break my code?

No. Formatting only changes whitespace and line breaks, never the program itself. The output is functionally identical to the input, so you can run it, diff it against another version, or paste it straight into your editor.

Unminify another format