PackageTrack

npm

javascript-obfuscator

5.6.0javascript-obfuscator/javascript-obfuscator

JavaScript obfuscator

Release timeline

269 releases since 2016
20162026

One column per quarter.

Releases

  1. 5.6.023 Aug 2026
    Release notes2 sources agree
    • Pro API: obfuscatePro now fall back to the basic local obfuscation API when no Pro feature (vmObfuscation or parseHtml) is enabled, instead of throwing an ApiError
    • Improved stringArrayEncoding runtime performance
    Open source →
  2. 5.5.121 Aug 2026
    Release notes2 sources agree
    • Fixed leading whitespace of the source code being stripped without being reflected in the source map, shifting all sourcesContent and original position mappings. Fixes #1437
    Open source →
  3. 5.5.018 Jul 2026
    Release notes2 sources agree
    • Pro API: reworked large file uploads — fixed 413 Content Too Large for ~4.4–4.6MB request bodies, and Blob uploads now send the raw source (blobFormat: 'raw') instead of the JSON request body, so uploads always fit the plan's file size cap
    Open source →
  4. 5.4.710 Jul 2026
    Release notes2 sources agree
    • Fixed directory obfuscation with a set sourceMapFileName making all files share and overwrite one .map. Fixes #817
    • Fixed CLI --config failures hiding the real cause behind a generic Cannot open config file message. Fixes #1101
    • Fixed sourceMapFileName ending in .js.map (e.g. foo.min.js.map) being mangled in the emitted //# sourceMappingURL= comment. Fixes #1312
    • Fixed URIError: URI malformed crash when stringArray with base64/rc4 encoding processed a string literal containing lone surrogate code units (e.g. "[^\uD800-\uDFFF]"). Fixes #1431
    • Bumped the production brace-expansion transitive dependency to a patched version, resolving CVE-2026-25547. Fixes #1405
    Open source →
  5. 5.4.69 Jul 2026
    Release notes2 sources agree
    • Fixed unicode (\uXXXX, \u{XXXX}) and hex (\xXX) escape sequences of string literals being un-escaped into their literal characters during obfuscation. Fixes #345
    Open source →
  6. 5.4.59 Jul 2026
    Release notes2 sources agree
    • Fixed controlFlowFlattening intermittently dropping arguments of a spread call (e.g. foo(...args)) when it reused a control flow wrapper of a same-arity plain call. Fixes #1423
    • Fixed selfDefending making obfuscated code run several times slower on Bun/JavaScriptCore. Fixes #1421
    • Fixed dropped parentheses around an in operator inside an arrow body in a for-init, producing unparsable output. Fixes #1419
    Open source →
  7. 5.4.49 Jul 2026
    Release notes2 sources agree
    • Optimized scope identifiers transformer performance
    • Optimized identifier renaming performance by reusing scope analysis between transformers
    • Fixed Invalid regular expression error when obfuscating code that uses ES2025 RegExp pattern modifiers (e.g. /(?i:abc)/). Fixes #1410
    • Fixed SyntaxError when obfuscating a class that extends a boolean literal (e.g. class C extends true {}). Fixes #1131
    Open source →
  8. 5.4.321 May 2026
    Release notes
    • Fixed controlFlowFlattening occasionally dropping the ?. short-circuit on foo?.(arg) calls, causing TypeError: <X> is not a function. Fixes #1408
    Open source →
    Additional notes
    • Fixed controlFlowFlattening occasionally dropping the ?. short-circuit on foo?.(arg) calls, causing TypeError: <X> is not a function. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1408
    Open source →
  9. 5.4.224 Apr 2026
    Release notes2 sources agree
    • Fixed obfuscated code hanging in Bun when selfDefending is enabled. Fixes #1404
    Open source →
  10. 5.4.122 Mar 2026
    Release notes2 sources agree
    • Fixed Utils.nodeRequire causing ReferenceError: require is not defined in browser build by making it lazy-evaluated
    • Fixed missing space between keywords (return, throw, typeof) and Unicode surrogate pair identifiers in compact mode. Fixes #1112
    • Fixed domainLock being case-sensitive — domain values are now normalized to lowercase. Fixes #1182
    • Removed source-map-support runtime dependency. Use node --enable-source-maps instead. Fixes #1149
    Open source →
  11. 5.4.022 Mar 2026
    Release notes
    • Add support for import attributes. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1256
    • Add renameProperties support for private class fields and methods (#foo, #bar()). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1220
    • Fixed reservedNames not preserving class method and property names when stringArray or deadCodeInjection is enabled. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1279
    • Fixed infinite loop / stack overflow when reservedNames patterns match all generated identifier names. Now throws a descriptive error instead. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1382
    • Fixed transformObjectKeys changing evaluation order when object expression is inside a sequence expression with preceding side effects (e.g. return aux(ys), { min }). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1246
    • Fixed destructuring patterns inside class static blocks not being renamed when renameGlobals is disabled. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1141
    • Fixed CLI --options-preset not applying preset values for options not explicitly set via command line (e.g. splitStrings from high-obfuscation preset was ignored). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1236
    • Replaced mkdirp dependency with native fs.mkdirSync({ recursive: true }). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1275. Thank you https://github.com/roli-lpci!
    • Updated reserved DOM properties list, fixing renameProperties breaking modern built-in methods like Array.prototype.at(). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1066
    • Replaced conf dependency with custom implementation using env-paths and native fs
    Open source →
  12. 5.3.121 Mar 2026
    Release notes
    • Fixed class expression name references inside class body being incorrectly resolved to an import binding with the same name, causing broken code at runtime. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1386
    Open source →
  13. 5.3.04 Feb 2026
    Release notes
    • Add Pro API support to CLI
    • Add large files upload support to Pro API
    Open source →
  14. 5.3.0-beta.03 Feb 2026pre-release

    Nothing published for this version

  15. 5.2.128 Jan 2026
    Release notes
    • Fixed transformObjectKeys incorrectly hoisting object literal outside of loop when loop body is a single statement without braces, causing all iterations to share the same object reference. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1300
    • Fixed parsing error when await is used as an identifier in non-async context. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1127
    • Fixed deadCodeInjection causing SyntaxError when arguments from collected block statements was injected into class field initializers or static initialization blocks. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1166
    • Fixed transformObjectKeys with mangled identifier generator causing variable shadowing when extracted object variable name matched an existing inner scope variable. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1232
    Open source →
  16. 5.2.027 Jan 2026
    Release notes
    • Skip obfuscation of process.env.*
    • Fixed controlFlowFlattening breaking short-circuit evaluation with spread operator and conditional objects. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1372
    • Fix Annex B function hoisting: block-scoped function declarations are now correctly linked to references outside the block in non-strict mode
    • Fixed NodeUtils.cloneRecursive corrupting range property when cloning AST nodes, causing scope analysis to incorrectly resolve destructuring default parameter references
    Open source →
  17. 5.1.013 Dec 2025
    Release notes
    • Add version parameter to the apiConfig to use different versions JavaScript Obfuscator Pro via API
    Open source →
  18. 5.0.17 Dec 2025
    Release notes
    • Add JavaScript Obfuscator PRO advertisement message
    Open source →
  19. 5.0.06 Dec 2025
    Release notes
    • Add JavaScript Obfuscator PRO support via calling its API
    Open source →
  20. 4.2.27 Dec 2025

    Nothing published for this version

  21. 4.2.14 Dec 2025
    Release notes
    • Downgrade multimatch version to avoid esm errors
    Open source →
  22. 4.2.030 Nov 2025
    Release notes
    • Dropped support of Node versions 17 and below
    • Fix transformObjectKeys performance in some edge-cases
    • Fix controlFlowFlattening + optional chaining compatibility. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1325
    • Don't obfuscate import.meta.*. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1267
    • Revert Improved stringArray calls wrapper templates commit. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1330
    • Fix error when ClassExpression is the CallExpression callee. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1132
    • Don't publish root index.ts files to NPM. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1252
    • Update class-validator version. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1324
    • Update other dependencies
    • CLI: support .mjs and .cjs extensions. Kudos to https://github.com/javascript-obfuscator/javascript-obfuscator/pull/1301
    Open source →
  23. 4.1.115 Jun 2024
    Release notes
    • Update supported Node.js versions up to node@22. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/pull/1100
    • Update class-validator version. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1247
    • Fixed CI
    Open source →
  24. 4.1.05 Sept 2023
    Release notes
    • Add target service-worker
    Open source →
  25. 4.0.213 Feb 2023
    Release notes
    • Add support for node@18
    • Update dependencies
    Open source →
  26. 4.0.111 Feb 2023
    Release notes
    • Update class-validator dependency https://github.com/javascript-obfuscator/javascript-obfuscator/pull/1146
    Open source →
  27. 4.0.014 Feb 2022
    Release notes
    • Breaking change: debugProtectionInterval option now accepts value in milliseconds instead of boolean value. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1031
    Open source →
  28. 3.2.714 Feb 2022
    Release notes
    • Fixed cases when dead code is added to the inner code of eval expressions. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1053
    Open source →
  29. 3.2.612 Feb 2022
    Release notes
    • Improved integration between renameProperties and controlFlowFlattening options. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1053
    Open source →
  30. 3.2.59 Feb 2022
    Release notes
    • Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1056
    Open source →
  31. 3.2.47 Feb 2022
    Release notes
    • Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1052
    Open source →
  32. 3.2.37 Feb 2022
    Release notes
    • Fixed missing transformation of string array calls in some cases
    • Fixed generation of reserved identifier names like Map or Set for mangled and mangled-shuffled identifier names generators
    Open source →
  33. 3.2.26 Feb 2022
    Release notes
    • Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1039
    Open source →
  34. 3.2.15 Feb 2022
    Release notes
    • Updated copyright
    Open source →
  35. 3.2.05 Feb 2022
    Release notes
    • New options: stringArrayCallsTransform and stringArrayCallsTransformThreshold
    • Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/pull/1046
    Open source →
  36. 3.1.029 Jan 2022
    Release notes
    • Added support of es2022 features: class static block
    Open source →
  37. 3.0.129 Jan 2022
    Release notes
    • Dependencies update
    • Fixed performance for Apple M1 chip
    Open source →
  38. 3.0.017 Oct 2021
    Release notes
    • Breaking change: ignoreRequireImports option renamed to ignoreImports
    • Breaking change: rotateStringArray option renamed to stringArrayRotate
    • Breaking change: shuffleStringArray option renamed to stringArrayShuffle
    • ignoreImports now ignores dynamic imports in addition to require imports

    v2.19.1

    • Updated @javascript-obfuscator/escodegen with fixed parenthesis of default export IIFE

    v2.19.0

    • Fixed very rare cases when rotateStringArray couldn't rotate array properly
    • Improved selfDefending option
    • Installed npm package now has types directory and doesn't have src directory
    • Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/959

    v2.18.1

    • Updated @javascript-obfuscator/escodegen with fixed generation of private property names

    v2.18.0

    • Added support of es2022 features: private identifiers and class properties
    • Dropped support for node@15
    • Increased minimum supported node versions: ^12.22.0 || ^14.17.0 || >=16.0.0

    v2.17.0

    • New option: sourceMapSourcesMode allows to control sources and sourcesContent fields of the source map
    • inputFileName option now required when using NodeJS API and sourceMapSourcesMode option has sources value`
    • Fixed some cases with wrong source map file name generation when sourceMapFileName option is set

    v2.16.0

    • stringArrayWrappersType: 'function' now generates different indexes between each wrapper inside the same lexical scope
    • stringArrayWrappersType: 'function' now generates different parameters order between each wrapper inside the same lexical scope
    • stringArrayWrappersType: 'function' now appends FunctionDeclaration functions instead of FunctionExpression functions. This allows to append these wrappers at random positions inside each scope
    • renameProperties option now won't generate duplicated property names in some cases

    v2.15.6

    • To increase performance and prevent possible runtime errors transformObjectKeys option now completely ignores objects with CallExpression or NewExpression nodes. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/948

    v2.15.5

    • Improved stringArray calls wrapper decode code

    v2.15.4

    • Improved stringArray calls wrapper code

    v2.15.3

    • Slightly improved integration between deadCodeInjection and stringArrayWrappersChainedCalls options

    v2.15.2

    • Fixed invalid behaviour of transformObjectKeys option when object values contains this references. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/937

    v2.15.1

    • Hotfix: domainDest => domainLockRedirectUrl option rename

    v2.15.0

    • Added domainDest option that option allows the browser to be redirected to a passed domain if the source code isn't run on the domains or URL specified by domainLock. Thank you https://github.com/erikdubbelboer!
    • ObfuscationResult object now contains getOptions method to get options that were used during obfuscation

    v2.14.0

    • Added identifierNamesCache option for reading and writing identifier names cache. See README.md.
    • CLI: Added --identifier-names-cache-path option for reading and writing identifier names cache. See README.md.

    v2.13.0

    • Fixed invalid code generation for start/middle rest arguments when controlFlowFlattenig option is enabled. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/920
    • Internal: Added support of node@16 and dropped support of node@10. This should not affect obfuscated code

    v2.12.0

    • stringArray calls wrappers now inserted as FunctionDeclaration nodes at random indexes

    v2.11.1

    • CLI: now it's possible to specify the path to the input file after specifying the obfuscator options. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/904

    v2.11.0

    • Added option renamePropertiesMode to switch between new safe and old unsafe modes of renameProperties option. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/878
    • renameProperties option now works in safe way by default

    v2.10.7

    • Fixed CVE-2019-18413. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/880

    v2.10.6

    • Added support of top-level await. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/884

    v2.10.5

    • Fixed invalid code generation for rest arguments when controlFlowFlattening option is enabled. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/887

    v2.10.4

    • Fixed invalid behaviour of numbersToExpressions option for float numbers. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/882

    v2.10.3

    • Fixed simplify option regression after 2.10.2. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/864

    v2.10.2

    • Fixed behavior of simplify options when a node with a single-statement body is inside simplified IfStatement node. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/860

    v2.10.1

    • Removed padding characters from all base64 encoded strings. Removed RegExp that trims padding characters from base64 encoded strings from atob code helper to prevent mutation of RegExp.$1 value during calls to the stringArray. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/829

    v2.10.0

    • Improved rotateStringArray option
    Open source →
  39. 2.19.117 Oct 2021

    Nothing published for this version

  40. 2.19.09 Aug 2021

    Nothing published for this version

  41. 2.18.123 Jul 2021

    Nothing published for this version

  42. 2.18.023 Jul 2021

    Nothing published for this version

  43. 2.17.019 Jul 2021

    Nothing published for this version

  44. 2.16.016 Jul 2021

    Nothing published for this version

  45. 2.15.615 Jul 2021

    Nothing published for this version

  46. 2.15.522 Jun 2021

    Nothing published for this version

  47. 2.15.417 Jun 2021

    Nothing published for this version

  48. 2.15.316 Jun 2021

    Nothing published for this version

  49. 2.15.213 Jun 2021

    Nothing published for this version

  50. 2.15.111 Jun 2021

    Nothing published for this version

  51. 2.15.010 Jun 2021

    Nothing published for this version

  52. 2.14.031 May 2021

    Nothing published for this version

  53. 2.13.023 May 2021

    Nothing published for this version

  54. 2.12.012 Apr 2021

    Nothing published for this version

  55. 2.11.17 Apr 2021

    Nothing published for this version

  56. 2.11.07 Mar 2021

    Nothing published for this version

  57. 2.10.728 Feb 2021

    Nothing published for this version

  58. 2.10.628 Feb 2021

    Nothing published for this version

  59. 2.10.528 Feb 2021

    Nothing published for this version

  60. 2.10.425 Feb 2021

    Nothing published for this version