Tool
synchrony
JavaScript cleaner and deobfuscator aimed mainly at output from javascript-obfuscator (obfuscator.io). It parses a script with acorn and runs a fixed pipeline of AST transformers that fold expressions, clean member accesses, remove dead branches, split sequence expressions, undo switch-based control-flow flattening and decode string arrays, re-implementing their base64 and RC4 decoders in TypeScript rather than executing the input. It ships on npm as deobfuscator with a synchrony CLI and a library API, and optional renaming replaces identifiers with generated word names rather than recovering the originals.
Requirements & limits
- Latest release at review: 2.4.6, published to GitHub and to npm as deobfuscator on 2026-07-07, the same day as the reviewed master commit; the previous release, 2.4.5, dates from 2023-11-09. The README also points to a hosted web version at deobfuscate.relative.im, whose deployment was not reviewed.
- Install with npm, yarn or pnpm, or from the Git repository; package.json declares no Node.js version. The CLI reads one file, writes <name>.cleaned.<ext> unless --output is given, and offers --rename, --loose parsing, --ecma-version and --sourceType. A --config file is loaded with Node's require, so it runs as code, and a custom transformer list replaces the default pipeline; two jsconfuser transformers are available only that way and are not documented in the README.
- The README warns that output from old javascript-obfuscator versions will likely not deobfuscate correctly and that there is no user configuration for the automatic string decoder. The repository has no test suite, and its latest commit removed the GitHub CI configuration.
- GPL-3.0-only according to package.json and LICENSE.md. No scripts were deobfuscated in this review, and the reviewed sources establish no REA connection.
About this entry
- Type
- Tool
- Category
- Website analysis tools
- Relationship
- Foundation tool
- Targets
- Website
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · relative/synchrony · Revision 710e9f6
- package.json GitHub · relative/synchrony · Revision 710e9f6
- src/cli.js GitHub · relative/synchrony · Revision 710e9f6
- src/deobfuscator.ts GitHub · relative/synchrony · Revision 710e9f6
- src/context.ts GitHub · relative/synchrony · Revision 710e9f6
- src/transformers/stringdecoder.ts GitHub · relative/synchrony · Revision 710e9f6
- LICENSE.md GitHub · relative/synchrony · Revision 710e9f6
- https://github.com/relative/synchrony/releases/tag/2.4.6
More in Websites
- sourcemapper · Tool
- ngrev · Tool
- jsluice · Tool
- Dinosaur runner: recovering one acceleration rule · Case study
- rauchg.com: rebuilding an RSC blog from captured Flight output · Case study
- BaoCut Slides: adapting an interactive web editor · Case study