Tool
REstringer
HUMAN Security's Node.js JavaScript deobfuscator. It identifies the obfuscation type, runs matching processors for obfuscator.io, Caesar Plus and array-based patterns, then iterates 40+ AST modules that rebuild strings, resolve expressions and calls and simplify control flow; unsafe modules evaluate code in a sandbox. It works as a CLI or library.
Requirements & limits
- The reviewed HumanSecurity main commit (2025-12-07) is v2.1.0 plus one README edit removing the retired REstringer.tech web tool. The author now continues the project in his fork ctrl-escp/restringer, which the npm package lists as its repository: npm 2.2.0 (2026-05-09) and 2.3.0 (2026-08-30) come from it, and at 2.3.0 its README requires Node.js 22+, makes isolated-vm optional and adds Node, Deno and Bun subprocess sandboxes, so npm installs code newer than the reviewed source.
- The reviewed source needs Node.js 20+ (22+ recommended) and installs as a global CLI or a module. It depends on flast, obfuscation-detector, commander and isolated-vm 5.0.4, a native module that CI builds with Python and g++. Output goes to stdout or <input>-deob.js; -m caps iterations, and -c removes dead nodes, which README marks unsafe.
- Input is an obfuscated JavaScript file or string. Safe modules transform the AST without evaluating code; unsafe modules evaluate parts of the input with eval() inside an isolated-vm sandbox to resolve expressions and calls.
- GitHub Actions runs npm test on Node.js 20 and 22. Besides module and processor unit tests, the full suite deobfuscates 11 bundled obfuscated samples, among them obfuscator.io, JSFuck and Caesar Plus scripts, and compares each result with a stored expected output.
- MIT, copyright 2025 HUMAN Security; the fork adds a 2026 copyright line for Ben Baryo. The repository was formerly PerimeterX/restringer, which now redirects to HumanSecurity/restringer.
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 · HumanSecurity/restringer · Revision d9eae69
- package.json GitHub · HumanSecurity/restringer · Revision d9eae69
- src/processors/README.md GitHub · HumanSecurity/restringer · Revision d9eae69
- .github/workflows/node.js.yml GitHub · HumanSecurity/restringer · Revision d9eae69
- tests/samples.test.js GitHub · HumanSecurity/restringer · Revision d9eae69
- tests/resources GitHub · HumanSecurity/restringer · Revision d9eae69
- LICENSE GitHub · HumanSecurity/restringer · Revision d9eae69
- https://github.com/HumanSecurity/restringer/releases/tag/v2.1.0
- README.md GitHub · ctrl-escp/restringer · Revision 5fe8ac8
- package.json GitHub · ctrl-escp/restringer · Revision 5fe8ac8
- https://registry.npmjs.org/restringer/2.2.0
- https://registry.npmjs.org/restringer/2.3.0
More in Websites
- 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
- REA in Claude Code: an isolated static-analysis A/B trial · Case study
- Dinosaur runner: an REA-inspected speed rule rebuilt with Codex · Case study
- BaoCut Design: porting reconstructed canvas and design-system editors · Case study