Text Steganography
Hide a UTF-8 message inside ordinary-looking cover text with a transparent zero-width convention, then reveal it locally.
Privacy: your files never leave your device. All processing happens locally in your browser.
How to use
- 1.Enter visible cover text and a short hidden UTF-8 message, then generate the steganographic string.
- 2.Copy the exact result through a channel that preserves zero-width Unicode characters.
- 3.Paste it into reveal mode and verify both the hidden message and restored visible cover after transport.
About Text Steganography
Text Steganography hides a short UTF-8 message inside visible cover text by inserting zero-width Unicode characters. The result looks like the original sentence in many interfaces, while reveal mode reads the documented invisible sequence and reconstructs the hidden message. All processing occurs in the browser and no cover or secret text is uploaded.
This tool uses an explicit Lizely convention rather than claiming compatibility with every steganography website. An invisible separator marks the payload start, an invisible plus marks the end, zero-width space represents binary zero, and zero-width non-joiner represents binary one. Each hidden UTF-8 byte is written as exactly eight invisible bits.
The framed sequence is inserted after the first visible Unicode code point. Reveal mode finds the markers, checks that every payload character is one of the two bit symbols, requires a multiple of eight bits, converts those bits back to bytes, and rejects byte sequences that are not valid UTF-8. It also returns the recovered visible cover.
Visible equality does not mean byte equality. The steganographic result contains many extra code points even though a typical font gives them no width. A character counter, diff tool, source viewer or security scanner can expose them immediately. This is concealment for demonstrations and puzzles, not a cryptographic secret channel.
Many applications normalize, filter or reserialize text. Social networks, email gateways, chat clients, content-management systems and clipboard managers may remove default-ignorable characters, replace line endings or reject the marker code points. If even one hidden bit disappears, the payload can become malformed or decode to different bytes.
For that reason, copy the generated string only through a channel you have tested end to end. Reveal it before relying on delivery. Plain-text editors that preserve Unicode exactly are more likely to retain the payload than systems that sanitize pasted content. Screenshots and printed copies cannot carry invisible code points at all.
The hidden message is limited to 10,000 UTF-8 bytes and the cover to 100,000 code points. Those limits keep bit expansion and DOM rendering responsive: every hidden byte becomes eight additional code points plus framing. Emoji and non-Latin text can occupy several UTF-8 bytes, so the hidden character count can be smaller than the byte limit.
The cover cannot already contain this convention's start or end marker, because accepting one would make payload boundaries ambiguous. Ordinary zero-width characters outside the framed region remain part of the visible cover. Reveal mode extracts only the first valid framed segment and treats malformed framing as an error instead of guessing.
Steganography does not provide confidentiality, authenticity or integrity. Anyone who knows or detects the mapping can decode the message, and anyone can alter it. Encrypt sensitive information with an appropriate reviewed system before transport; do not use this page to hide credentials, harmful instructions, personal data or material that violates a platform's rules.
Tests cover ASCII, CJK, emoji, tabs, newlines, one-code-point covers, empty inputs, reserved markers, absent payloads and incomplete bytes. They assert both the recovered hidden text and exact restoration of the cover. The round trip proves this convention's implementation, not survival through an external service.
Use hide mode by entering an ordinary cover sentence and a separate hidden message, then copy the result. Use reveal mode by pasting the exact steganographic text without cleanup or retyping. If extraction fails after transport, compare raw code points to find which application removed or changed the invisible characters.
Keep expectations modest: this is useful for learning how Unicode can carry non-rendering data, creating harmless puzzles and testing sanitization. It deliberately states every marker and limit so the transformation is inspectable and reversible. For durable data exchange, prefer visible encodings or an authenticated file format.
Methodology & sources
Hidden UTF-8 bytes are expanded most-significant-bit first, mapped to U+200B and U+200C, framed by U+2063 and U+2064, and inserted after the first cover code point. Reveal mode validates framing, bit count and fatal UTF-8 decoding.
Frequently asked questions
Related tools
- Unicode Encoder / DecoderConvert text to explicit Unicode code points or rebuild text from U+ and JavaScript-style scalar notation without splitting supplementary characters.
- UTF-8 Encoder / DecoderConvert Unicode text to well-formed UTF-8 bytes or strictly decode byte sequences without silent replacement.
- Text to Binary ConverterEncode text as visible 8-bit UTF-8 binary bytes or decode strictly formatted binary back to valid Unicode text.
- Text To HEXEncode text into exact UTF-8 hexadecimal with continuous, spaced, or 0x-prefixed output and explicit Unicode replacement warnings.
- A1Z26 Cipher TranslatorTranslate English letters to the explicit A=1 through Z=26 puzzle format and decode validated number groups without ambiguous word boundaries.
- AES Encryption OnlineEncrypt text into a portable authenticated AES-256-GCM JSON package or decrypt a package with its password entirely in your browser.