Product Tour

How JavaScript Obfuscator protects shipped code.

Five protection layers, four shipping paths, one engine that has been continuously delivered since 2004. This page is the short version — for deeper detail, see the docs.

The Engine

Five layers of protection, applied in sequence

Each layer removes a different cue an attacker, an automated deobfuscator, or an LLM might use to recover the original. Higher tiers add the later layers; the earlier ones are always on.

01

Name mangling

Variables, parameters, and function names rewrite to short, meaningless tokens. Comments and original identifiers are gone for good.

All paid tiers
02

String encoding

Literal strings move into a runtime-decoded array. Search-by-string — the easiest way to locate logic in a bundle — stops working.

All paid tiers
03

Encrypted constants

Strings and numeric constants exist only after a runtime decoder runs. Static analysis sees opaque blobs — LLMs lose their anchor points.

Maximum mode
04

Flat control flow

If/else and loops compile to a state-machine dispatch. Visual structure that pattern-matchers depend on is replaced by uniform switches.

Maximum mode
05

Per-build polymorphic decoder

Decoder shape, key derivation, and identifier prefix regenerate on every release. An AI deobfuscator that solves one build cannot reuse the approach.

Anti-LLM
See It

Same function, before and after Maximum mode

A short license check on the left; what ships to the browser on the right after all five layers run.

Input
function validateLicense(plan) {
  if (plan === 'trial') return false;
  return plan.expiresAt > Date.now();
}
Maximum · Anti-LLM
(function(){var _0xa3=_dec(0x4a);
function _0xa4(_p){var _st=0;
 while(_st!==-1){switch(_st){
  case 0:if(_p===_dec(0x4b))return!1;
   _st=1;break;
  case 1:return _p[_dec(0x4c)]>
   Date[_dec(0x4d)]();
}}}})();
Real Product, Not A Demo

The desktop app, side by side with your project tree.

The same engine you just saw in the code preview ships as a Windows desktop application. Drop in a folder, configure presets, and run the same Maximum-mode protection across hundreds of files in one batch — with a deterministic command line you can commit to your release pipeline.

  • Whole-project batches, not single-file demos
  • JavaScript embedded in HTML, PHP, ASP, ASPX, JSP
  • Source stays on the workstation — no cloud round-trip
  • Generated CLI for repeatable CI handoff
JavaScript Obfuscator desktop application showing batch project configuration and Maximum-mode preset

Desktop app on Windows · Maximum-mode preset shown

Where It Runs

Four shipping surfaces, one engine

The same protection logic, packaged for the constraint your release flow has — quick evaluation, on-prem source, repeatable CI, or a Node-based pipeline.

Online tool

Quick before-and-after preview, single-file tests, shareable evaluation links. No install, free tier with monthly quota.

Open the tool ›

Desktop app

Whole-project batches, JavaScript embedded in HTML/PHP/ASP/JSP, deterministic command line for CI handoff. Source never leaves the workstation.

Download ›

HTTP+JSON API

Hosted endpoint for any pipeline that issues HTTPS requests. Ideal when the build runs somewhere we don't — cloud-only, ephemeral runners, internal CI.

API docs ›

npm CLI

Drop-in for Node-based pipelines. npm install javascript-obfuscator, same options as the GUI, runs in any CI that runs Node.

npm guide ›

Ready to evaluate it on your real code?

Paste a function into the online tool to see what Maximum mode does to it. When you're ready for a project-wide test, the desktop app processes whole directories — including JavaScript embedded in HTML, PHP, ASP, ASPX, and JSP.