Zero-Width Steganography

Hide a UTF-8 message inside text using zero-width characters.

Open tool

Overview

Hide a secret message inside ordinary-looking text using zero-width characters — Unicode code points that render as nothing but still occupy positions in the string. Paste your cover text, type the secret you want to embed, and the tool stitches them together so the cover reads normally but secretly carries your hidden payload.

Steganography enthusiasts, journalists exploring author-tracing techniques used to identify leakers, CTF puzzle creators, and writers curious about hidden-text watermarking all use it. It's also a powerful (and slightly unsettling) demonstration of how much information can be packed into "invisible" characters.

How it works

Each character of your secret message is converted to a UTF-8 byte sequence, and each bit of those bytes is encoded as one of two zero-width characters — typically zero-width space (U+200B) for "0" and zero-width non-joiner (U+200C) for "1". The resulting invisible character sequence is then sprinkled into the cover text. Because the zero-width characters render as nothing, the cover text looks unchanged.

To decode, the tool extracts every zero-width character from the input, re-bundles them into bits, parses the bits as UTF-8, and shows the recovered message.

Examples

Cover:     Hello world
Secret:    HI

Output:    Hello​‌‌‍​‌‌​​​‌‌‍​​​‌‌‌ world   (zero-width characters between letters)

Decode the output → recovers "HI"
Decode mode:
Input:     "Visible text with hidden payload"
Hidden:    "secret message"

FAQ

Can the hidden payload survive copy-paste?

Yes, as long as the destination preserves the original characters. Some platforms (Twitter, certain chat apps) strip zero-width characters as anti-abuse mitigation, in which case the payload is lost.

Is this a real privacy technique?

Light watermarking, yes — newsrooms and corporations sometimes use invisible character variations to identify which copy of a document was leaked. For real secrecy, encrypt your payload before embedding, since the steganography alone provides no cryptographic protection.

How much can I hide?

Each character of your secret needs roughly 8–32 zero-width bits depending on its UTF-8 length. Long secrets bloat the cover with thousands of invisible characters but stay visually identical.

Try Zero-Width Steganography

An unhandled error has occurred. Reload ×