BYTETOOLS

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. 1

    Leave the mode on “Hide a message inside cover text”.

  2. 2

    Type the visible cover text, then the secret message you want to hide inside it.

  3. 3

    Set the character offset where the invisible payload should be inserted.

  4. 4

    Copy the result with the Copy button — retyping it by hand loses the invisible characters.

  5. 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