TontonTools

JavaScript DeObfuscator

Deobfuscate JavaScript — unpack scrambled code enough to read its intent.

100% Free No signup Privacy-friendly Web Development
Updated Sep 2026
Share X / Twitter Facebook LinkedIn WhatsApp

How to use JavaScript DeObfuscator

  1. Paste the suspicious script — as text; never execute it first.
  2. Read the unpacked output — formatted, strings decoded where mechanically possible.
  3. Hunt the signals: URLs, password-field access, eval, cookie reads — decoded strings usually confess first.
  4. Escalate appropriately — confirmed malice in a site means cleanup and credential rotation, not just deletion.

What is JavaScript DeObfuscator?

A JavaScript deobfuscator reverses the mechanical layers of code scrambling: reformatting the crushed text, decoding encoded strings, simplifying the indirection tricks (hex escapes, array-shuffled string tables, unnecessary wrappers) that obfuscators inject — recovering code readable enough to understand its intent.

The natural use is defensive: something suspicious landed in front of you — a script tag in a hacked site, a "paste this into your console" snippet, an npm dependency acting oddly, a browser-extension file — and you need to know what it does before it does it. Obfuscation on unexpected code is itself a red flag; deobfuscation is how you look inside.

About the JavaScript DeObfuscator

Paste obfuscated JavaScript and get it unpacked as far as mechanical transforms allow: formatted structure, decoded string literals, simplified expressions — the intent visible even where original names are gone forever.

What analysis looks for once readable: network destinations (what URLs does it call — exfiltration shows up here), DOM access to sensitive fields (password inputs, form data), eval/Function construction (code that builds more code), cookie and storage access, and crypto-mining or redirect patterns. Decoded strings usually tell the story fastest — obfuscators hide URLs and keywords precisely because they're incriminating.

Limits, honestly: renamed identifiers stay renamed (names were destroyed, not hidden), and heavy commercial obfuscation with VM-based layers resists casual unpacking. For most real-world malicious snippets — which favor cheap, common obfuscation — one pass reveals plenty. Treat everything pasted here as text; never run suspect code to "see what happens".

Frequently Asked Questions

No — variable names are gone permanently, and only mechanical transforms reverse. The goal is readable intent, not source recovery: what it contacts, what it reads, what it executes.
No — it's processed as text; nothing executes. The danger is only ever running it. Analysis-by-reading is exactly what this tool is for.
Decoded strings containing unfamiliar URLs, atob/eval chains, document.cookie reads, password-input selectors, WebSocket/beacon calls to odd hosts, and setInterval loops hitting mining endpoints. Any one warrants deeper review.
Commercial license protection, anti-cheat, DRM — context decides. A vendor's licensed widget being obfuscated is normal; an unknown script appearing in your CMS being obfuscated is an incident.
Multi-layer or VM-based obfuscation needs specialist tooling (AST-based deobfuscators, sandboxed dynamic analysis). For a website infection, you rarely need full reversal — the URLs and the injection point are enough to act on.

We use cookies for analytics and to keep the tools free via ads. See our Privacy Policy.