JavaScript Deobfuscator
Beautify and simplify obfuscated JavaScript.
Input JavaScript
Run
The deobfuscator re-parses your code into an AST, beautifies it and inlines simple string arrays. It never executes your code, so it is 100% safe to paste untrusted obfuscated files.
Complete recovery is impossible for heavily obfuscated code (dynamic string decoders,
control-flow flattening). This tool reliably handles the easy layers — read the
notes for what was and wasn\u2019t recovered.
Output
What this deobfuscator can and cannot do
- Always: reformat minified code with proper indentation and line breaks.
- Always: decode \x / \u escapes and inline simple string arrays like
_0x1234[0x0]. - Never: restore original variable names or comments — that information is gone.
- Never: decode code packed with
eval()— decoding it would require executing it, which we refuse to do for safety.
Frequently asked questions
Can you fully reverse javascript-obfuscator output?
Only partially. Heavily obfuscated code uses dynamic string decoding and control-flow flattening that requires executing the code to unpack. For safety this tool never runs your code, so complete recovery is impossible. It reliably beautifies and resolves the easiest layers.
Is my code executed anywhere during deobfuscation?
No. Everything is parsed and transformed statically in your browser. No eval, no code execution, no data leaves your device.
Will deobfuscation restore original variable names?
No. Renamed identifiers contain no information about their original names. The output is well-formatted and easier to read, but original names and comments are gone forever.