NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm
JavaScript obfuscator
Last release 8 days ago
04 Oct 2026
Ships fairly regularly
a new release about every 4 weeks
Most releases are documented
notes for 40 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
273 releases · first in 2016
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Preventing move of "use strict"; directive during obfuscation
"use strict"; directive during obfuscationFixed runtime errors in large obfuscated code when both rc4 and base64 encodings are enabled
rc4 and base64 encodings are enabledFixed missing prefix of root identifiers added by stringArrayWrappersCount option when identifiersPrefix option is set
stringArrayWrappersCount option when identifiersPrefix option is setCLI: Fixed wrong name of obfuscated files when input directory path is the . symbol. https://github.com/javascript-obfuscator/javascript-obfuscator/is
. symbol. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/816Ignore object expressions as body of arrow function expression when transformObjectKeys option is enabled. Fixed https://github.com/javascript-obfusca
transformObjectKeys option is enabled. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/813Fixed wrong stringArrayWrappersParametersMaxCount CLI option name
stringArrayWrappersParametersMaxCount CLI option nameNew option: stringArrayIndexesType accepts an array of types of string array call indexes
stringArrayIndexesType accepts an array of types of string array call indexeshexadecimal-numeric-string to hexadecimal-numberstringArrayIndexShift enables additional index shift for all string array callsstringArrayWrappersParametersMaxCount allows to control the maximum number of string array wrappers parametersstringArrayWrappersType: 'function' option value moved from high-obfuscation to medium-obfuscation options presetFixed incorrect rename of the identifiers of the added helpers in some rare cases. Fixed https://github.com/javascript-obfuscator/javascript-obfuscato
New option ignoreRequireImports prevents obfuscation of require imports. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/8
ignoreRequireImports prevents obfuscation of require imports. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/801Updated @javascript-obfuscator/escodegen to 2.1.1
@javascript-obfuscator/escodegen to 2.1.1Switched form escodegen to @javascript-obfuscator/escodegen
escodegen to @javascript-obfuscator/escodegennullish-coalescing. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/604exported field of ExportAllDeclaration node. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/710Added ignoring of all object members previous to SpreadElement when transformObjectKeys option is enabled. Fixed https://github.com/javascript-obfusca
SpreadElement when transformObjectKeys option is enabled. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/797Added ExportSpecifierTransformer. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/791
ExportSpecifierTransformer. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/791Fixed installation in PowerShell. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/783
PowerShell. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/783Node.js@15Fixed missing rename of object pattern properties in some cases. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/781
Optimized performance of ExpressionStatementsMergeTransformer when simplify option is enabled. Fixed https://github.com/javascript-obfuscator/javascri
webpack@5ExpressionStatementsMergeTransformer when simplify option is enabled. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/777identifierNamesGenerator: 'mangled-shuffled' after 2.2.0. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/778Improved hierarchy of generated directories when --output is a directory path
--output is a directory pathwin32 environment. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/576win32 environment. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/760javascript-obfuscator now can be built under win32 environmentFixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/769
Fixed URI-malformed when splitStrings and stringArrayEncoding options are enabled. https://github.com/javascript-obfuscator/javascript-obfuscator/issu
URI-malformed when splitStrings and stringArrayEncoding options are enabled. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/530Small release with some README.md improvements that allow to use it on obfuscator.io
New option: forceTransformStrings allows force transform strings even if by stringArrayThreshold (or possible other thresholds in the future) they sho
forceTransformStrings allows force transform strings even if by stringArrayThreshold (or possible other thresholds in the future) they shouldn't be transformed. Implemented https://github.com/javascript-obfuscator/javascript-obfuscator/issues/657Fixed a rare bug with identifierNamesGenerator: 'mangled' option that causes wrong identifier names generation
identifierNamesGenerator: 'mangled' option that causes wrong identifier names generationNew option: stringArrayWrappersType allows to select a type of the wrappers that are appending by the stringArrayWrappersCount option
stringArrayWrappersType allows to select a type of the wrappers that are appending by the stringArrayWrappersCount optionFixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/745
New option (enabled by default): stringArrayWrappersCount sets the count of wrappers for the string array inside each root or function scope
stringArrayWrappersCount sets the count of wrappers for the string array inside each root or function scopestringArrayWrappersChainedCalls enables the chained calls between string array wrappersNew API: getOptionsByPreset allows to get options for the passed options preset name
getOptionsByPreset allows to get options for the passed options preset nameBreaking change: stringArrayEncoding option now accepts an array of encodings. Each string will be randomly encoded with passed encoding
stringArrayEncoding option now accepts an array of encodings. Each string will be randomly encoded with passed encodingsplitStrings and renameProperties option. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/729optionsPreset allows to set options presetdeadCodeInjection dead code identifiers. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/708TaggedTemplateLiteral obfuscation. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/716ExportNamedDeclaration and ExportAllDeclaration nodesTaggedTemplateLiteral obfuscation. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/696disableConsoleOutput template. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/691Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Improved obfuscation of destructured variables. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/688
Fixed runtime error Uncaught SyntaxError: yield is a reserved identifier when deadCodeInjection is enabled
Uncaught SyntaxError: yield is a reserved identifier when deadCodeInjection is enableddomainLock option patterns with leading dot character (.example.com) now cover root domains (example.com) in addition to all sub-domains (sub.example.
domainLock option patterns with leading dot character (.example.com) now cover root domains (example.com) in addition to all sub-domains (sub.example.com). https://github.com/javascript-obfuscator/javascript-obfuscator/issues/640simplify option now affects all block statements. Improved variable declarations merging.
simplify option now affects all block statements. Improved variable declarations merging.New option: numbersToExpressions enables numbers conversion to expressions
numbersToExpressions enables numbers conversion to expressionsPrevented mutation of the name sequences of mangled identifier name generators
mangled identifier name generatorsFixed runtime error when IfStatement contains only single let or const variable declaration when simlify option enabled. https://github.com/javascript
IfStatement contains only single let or const variable declaration when simlify option enabled. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/661source-map: 'inline' encoding after 1.3.0New mangled-shuffled identifier names generator based on mangled identifier names generator
mangled-shuffled identifier names generator based on mangled identifier names generatorNew option: simplify enables additional code obfuscation through simplification
simplify enables additional code obfuscation through simplificationImprovements of stringArrayEncoding: base64 and rc4
stringArrayEncoding: base64 and rc4.js and .json extensions)Fixed performance regression of Initializing stage after 1.2.0
Initializing stage after 1.2.0Support of old browsers when selfDefending is enabled. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/615
selfDefending is enabled. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/615Conditional comments will be removed from the code after obfuscation. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/641
Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/638
New option: renameProperties enables renaming of property names
renameProperties enables renaming of property namesFixed .d.ts typings. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/623
Breaking change: dropped node@4 and node@5 support.
ObjectPattern with single RestElement. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/607self-defending code for target: 'browser-no-eval'. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/610identifierNamesGenerator: 'mangled'deadCodeInjection optionacorn-import-meta packageobfuscateMultiple methodobfuscateMultiple to obfuscation of multiple source codesmangled identifier names generator logicselfDefending helper logicsuper call--output logic. Now --output value can describe if it's a file or a directory path. Check README.md for more infonode target for sourceMap* optionsimport.meta support. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/505target: 'node' will cause a validation erroridentifierNamesGenerator: 'mangled speedtransformObjectKeys runtime errorsMaximum call stack size exceeded error on large strings when splitString option is enabledawesome-typescript-loader on ts-loadershuffleStringArray randomly shuffles string array itemsespree on acornTypeError: Assignment to constant variable when auto-detection of kind of variables is inserted const variables for controlFlowStorage nodestransformObjectKeys transformation to cover more casesfor-await-of statement: https://github.com/javascript-obfuscator/javascript-obfuscator/issues/419mangled and dictionary identifier names generatorsidentifierNamesGenerator: dictionary and debugProtection optionsseed option now accepts string and number valuesidentifierNamesGenerator now allows to set new dictionary identifier names generatoridentifiersDictionary sets identifiers dictionary for identifierNamesGenerator: dictionary optionThanks to our contributors!
reservedNames optionThanks to our contributors!
splitStrings option now correctly works with transformObjectKeys optionTransformersRunner rework to support topological sort of node transformerssplitStrings option now correctly splits strings inside objectssplitStrings option now affects template literal stringssplitStrings splits literal strings into chunks with length of splitStringsChunkLength option valuesplitStringsChunkLength sets chunk length of splitStrings optionThanks to our contributors!
Thanks to our contributors!
Thanks to our contributors!
Thanks to our contributors!
reservedStrings disables transformation of string literals, which being matched by passed RegExp patternsinputFileName allows to set name of the input file with source code. This name will used internally, for example, for source map generation.domainLock now will work in SVG.
<br/>
Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/273esprima on espreenode@4 and node@5 support.extension value of target option on browser-no-eval.reservedName option. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/216exclude allows to exclude specific files or directories from obfuscation.import and export declarations.esprima error messages.identifiersPrefix sets prefix for all global identifiers.transformObjectKeys enables object keys transformation and obfuscation.eval expressions obfuscation.deadCodeInjection is enabled and identifierNamesGenerator is set to mangled.mangle option was removed.identifierNamesGenerator allows to set identifier names generator (hexadecimal or mangled).kebab-case format (--disableConsoleOutout -> --disable-console-output).mangle option algorithm without esmangle; fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/110@license and @preserve words won't be removed from obfuscated code.target allows to set target environment for obfuscated code.es2015 class names.log enables logging of the information to the console.renameGlobals allows to enable obfuscation of global variable and function names with declaration.deadCodeInjection. With this option random blocks of dead code will add to the obfuscated code.deadCodeInjectionThreshold allows to set percentage of nodes that will affected by deadCodeInjection.mangle enables mangling of variable names.--config allows to set config file with obfuscator options.disableConsoleOutput option now disabled by default.escapeUnicodeSequence option now disabled by default.controlFlowFlattening now affects string literal nodes.rc4 stringArrayEncoding.Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →