Introduction
What is this?
This tool transforms your original JavaScript source code into a new representation that's harder to understand, copy, re-use and modify without authorization. The obfuscated result will have the exact functionality of the original code.
So, like UglifyJS, Closure Compiler, etc?
Yes and no. While UglifyJS (and others minifiers) does make the output code harder to understand (compressed and ugly), it can be easily be transformed into something readable using a JS Beautifier.
This tool prevents that by using various transformations and "traps", such as self-defending and debug protection.
How does the obfuscation works?
Through a series of transformations, such as variable / function / arguments renaming, strings removal, and others, your source code is transformed into something unreadable, while working exactly as before.
Sounds great!
Just paste your code or upload it below and click on "obfuscate".
Also, be sure to read about all the options to understand all the trade-offs between code protection and code size / speed.
Reference
| Compact Code | Removes line breaks from the output obfuscated code. | ||||||
| Self Defending |
This option makes the output code resilient against formating and variable renaming. If one tries to use a JavaScript beautifier on the obfuscated code, the code won't work anymore, making it harder to understand and modify it. requires the Compact Code setting. |
||||||
| Control Flow Flattening |
Enables code control flow flattening. Control flow flattening is a structure transformation of the source code that hinders program comprehension. See the docs on JavaScript's obfuscator GH page for an example of how the transformation works.
|
||||||
| Seed |
By default ( |
||||||
| String Array |
Removes string literals and place them in a special array. For instance the string
"Hello
World" in See the options below on how to configure this feature be more or less resilient.
|
||||||
| Disable Console Output |
Disables the use of console.log, console.info,
console.error and console.warn by replacing them with empty
functions.
This makes the use of the debugger harder.
|
||||||
| Debug Protection |
This option makes it almost impossible to use the Console tab of the Developer Tools (both on Google Chrome and Mozilla Firefox).
|
||||||
| Domain Lock |
Locks the obfuscated source code so it only runs on specific domains and/or sub-domains. This makes really hard for someone just copy and paste your source code and run elsewhere. Multiple domains and sub-domainsIt's possible to lock your code to more than one domain or sub-domain. For instance, to
lock
it so the code only runs on www.example.com add
|
||||||
| Reserved Names |
Disables the obfuscation of variables names, function names and function parameters that match the Regular Expression used. For instance, if you add |
||||||
| Source Map |
Source maps can be useful to help you debug your obfuscated Java Script source code. If you want or need to debug in production, you can upload the separate source map file to a secret location and then point your browser there. Read more about source maps on the Google Chrome Developer Tools website. Inline Source MapThis embeds the source map of your source in the result of the obfuscated code. Useful if you just want to debug locally on your machine. Separate Source MapThis generates a separate file with the source map. Useful to debug code in production, as this enables you to upload the source map to a secret location on your server and then point your browser to use it. Use the Source Map Base URL and Source Map File Name to
customize the For instance, if you set the Base URL to
|
FAQs
Why would I want to obfuscate my JavaScript code?
There're a numerous reasons why it's a good idea to protect your code, such as:
- Prevent anyone from simply copy/pasting your work. This is specially important on 100% client side projects, such as HTML5 games;
- Removal of comments and whitespace that aren't needed. Making it faster to load and harder to understand;
- Protection of work that hasn't been paid yet. You can show your work to the client knowing that they won't have the source code until the invoice has been paid.
After obfuscated, can I call a function or use a variable name which was defined within the obfuscated file from outside, for example, HTML page or the other files?
NO. Keep in mind that all the data have been obfuscated, so its almost impossible to read from outside. I suggest you put all your code into a file then import it into your HTML page. Whenever you update your code, do it in your original file then re-obfuscate into a new file again.
Is this obfuscator absolutely foolproof?
No, while it's impossible to recover the exact original source code, someone with the time, knowledge and patience can reverse-engineer it.
Since the JavaScript runs on the browser, the browser's JavaScript engine must be able to read and interpret it, so there's no way to prevent that. And any tool that promises that is not being honest.
Why my obfuscated code is larger than my original source?
Because the obfuscator introduces new pieces of code that are meant to protect and defend against
debugging and reverse-engineering. Also strings are converted to \xAB hexadecimal code to
make things a little bit harder to understand. You don't have to worry too much about code size because
since there're a lot of repetition, the obfuscated code will be compressed extremely well by your
webserver (if you have GZIP compression enabled on your server, which most do nowadays).
Can I run a minifier such as UglifyJS or Google Closure Compiler on the obfuscated output?
No, it's not recommended and in some cases it'll break the code (such as if you enable self-defending). You can run your code through a minifier before to make sure that it removes dead code and do other optimizations, though.
Do you store my source code?
No. The source is processed by our application server, then to the obfuscator and back to the browser, so it only stays on our server memory for a brief period of time (usually milliseconds).
Can I recover the original source code from the obfuscated one?
No, it's impossible to revert the obfuscated code back to your original code, so keep the original safe.
Does this tool works with Node.js source code?
Yes.
I want to run the obfuscator on my own server/machine. Is it possible?
Sure. This tool uses a free and open source (BSD-2-Clause licensed) obfuscator written in TypeScript. You can go to it's GitHub page and read more there.