A JavaScript library that encodes JavaScript code into invisible Unicode characters, making it appear as empty or whitespace while preserving full functionality.
- Encode: Convert JavaScript code into invisible Unicode characters
- Decode: Convert invisible Unicode characters back to JavaScript code
- Decode and Eval: Decode and execute JavaScript code in one step
const { encode, decode, decodeAndEval } = require('./invisible-encoder.js');
// Encode JavaScript code
const code = 'console.log("Hello, World!");';
const encoded = encode(code);
console.log('Encoded:', encoded); // Appears invisible/empty
// Decode back to original code
const decoded = decode(encoded);
console.log('Decoded:', decoded); // "console.log("Hello, World!");"
// Decode and execute
const result = decodeAndEval(encoded);
// Executes the code and returns the result<script src="invisible-encoder.js"></script>
<script>
const code = 'alert("Hello!");';
const encoded = invisibleEncoder.encode(code);
invisibleEncoder.decodeAndEval(encoded); // Executes the code
</script>The encoder uses invisible Unicode characters:
- Zero Width Space (U+200B)
- Zero Width Non-Joiner (U+200C)
- Zero Width Joiner (U+200D)
- Left-to-Right Mark (U+200E)
- Right-to-Left Mark (U+200F)
- Word Joiner (U+2060)
The JavaScript code is converted to binary, then each 2-bit chunk is mapped to one of the invisible characters. This allows the code to be completely hidden while remaining fully functional.
See demo.js for complete examples of encoding, decoding, and executing JavaScript code.
This is an obfuscation technique, not encryption. The code can be decoded by anyone who knows the encoding scheme. Do not use this for security purposes.