Zero-Width Text Encoder
Hide a secret message inside ordinary text using invisible zero-width characters, and decode it again. Shows exactly which code points are used.
Text with hidden message
Enter both a cover text and a secret message. The output looks identical to the cover text but carries your message in invisible characters.
Which code points are used
- U+200B zero width space — a binary 0
- U+200C zero width non-joiner — a binary 1
- U+200D zero width joiner — separates one UTF-8 byte from the next
- U+2060 word joiner — marks the end of the payload
What is the Zero-Width Text Encoder?
Zero-width characters are real Unicode code points that render as nothing at all. This encoder turns your secret message into UTF-8 bytes, writes each bit as U+200B for a 0 or U+200C for a 1, separates bytes with U+200D and terminates the payload with U+2060 — then drops the whole invisible run into your cover text at the position you choose.
- Encodes any Unicode message, including accents and emoji, as UTF-8 bits
- Uses U+200B, U+200C, U+200D and U+2060 — each one documented on the page
- Choose exactly where in the cover text the payload is inserted
- Decoder rebuilds the message and shows the cover text stripped clean
- Reports payload size in bytes and invisible characters added
- Runs entirely in your browser; neither the cover text nor the secret is uploaded
How to use the Zero-Width Text Encoder
- 1
Leave the mode on “Hide a message inside cover text”.
- 2
Type the visible cover text, then the secret message you want to hide inside it.
- 3
Set the character offset where the invisible payload should be inserted.
- 4
Copy the result with the Copy button — retyping it by hand loses the invisible characters.
- 5
To read a message, switch the mode to “Reveal a hidden message” and paste the text you received.
About the Zero-Width Text Encoder
Zero-width characters are real Unicode code points that render as nothing at all. This encoder turns your secret message into UTF-8 bytes, writes each bit as U+200B for a 0 or U+200C for a 1, separates bytes with U+200D and terminates the payload with U+2060 — then drops the whole invisible run into your cover text at the position you choose.
The result looks exactly like the cover text you typed, but carries the hidden message with it through copy and paste. The decoder reverses the mapping, rebuilds the bytes and gives you back the original message, along with the cover text stripped of every invisible character. It is a neat way to watermark documents and a genuinely useful demonstration of why invisible characters are worth auditing in text you receive.
Everything happens locally in your browser — the cover text and the secret both stay on your device and are never uploaded. This is obfuscation, not encryption: anyone who knows the scheme can read the message, so do not use it to protect anything that actually matters.
Frequently asked questions
What are zero-width characters?
They are Unicode code points that take up no visual space, such as the zero width space U+200B and the zero width joiner U+200D. They exist for legitimate typographic reasons in scripts like Arabic and Devanagari, but because they are invisible they can also carry hidden data.
Will the hidden message survive copy and paste?
Usually yes if you copy the whole block, but not always. Many chat apps, form fields and content management systems strip zero-width characters on paste, and retyping the text by hand loses them entirely. Always test the round trip before relying on it.
Is this encryption?
No, it is steganography — hiding the existence of a message rather than protecting its contents. The encoding scheme is published right on this page, so anyone can decode it. Encrypt anything sensitive before you hide it.
How do I check whether text I received contains a hidden message?
Switch to reveal mode and paste it in. If a complete payload written by this encoder is present, the message is decoded. If there are zero-width characters but no readable payload, the tool tells you that too.
Is my secret message sent to a server?
No. The encoding and decoding both run in your browser with JavaScript, so your cover text and secret never leave your device, and the page keeps working offline.
Related tools
Whitespace Visualizer
Draw every space, tab and line break as a visible glyph, and highlight non-breaking spaces, exotic spaces and zero-width characters with a per-type tally.
Homoglyph Detector
Spot Cyrillic, Greek and other characters disguised as ASCII letters in domains, brand names and messages. Shows the position, script and code point of each one.
Emoji Counter
Count emoji the way people see them. Handles ZWJ sequences, skin tones and flags as single characters, and lists every emoji with its code points.
Base64 Encoder
Encode text or files to Base64 instantly in your browser. UTF-8 safe, with a URL-safe Base64 option, copy and download. Free online Base64 encoder.
Text Entropy Calculator
Calculate Shannon entropy in bits per character, word or byte. Shows maximum entropy, redundancy and a full symbol probability table.