Invisible Text Hider
Hide secret messages inside any visible text using invisible zero-width Unicode characters. AES-256 encrypted. Platform-aware (Gmail, Discord, Twitter). 100% client-side.
Paste Your Cover Text
This is the visible text your recipient will see. Your secret message will be invisibly embedded inside it.
Cover text length matters. Longer cover text = more hiding capacity. Use a natural-looking excerpt — news articles, Wikipedia paragraphs, or email text work well.
🔒 Runs locally — your text never leaves your device
How to Hide a Message in Plain Text (4 steps)
- Paste your visible cover text — the text people will actually see and read
- Enter your secret message (text or binary file) — optionally encrypt with AES-256-GCM
- Select your target platform (Discord, Gmail, Twitter, etc.) and encoding mode — the tool auto-selects platform-safe characters
- Click Encode — the output looks identical to your cover text but carries your hidden message
Zero-Width Steganography Methods — What This Tool Handles
| Method | Technique | Compatibility | Best For |
|---|---|---|---|
| Binary (ZWNJ / ZWJ) | 1 bit per ZW char using U+200C and U+200D | Standard · All platforms | Default — safest, most compatible, CTF-standard |
| Quaternary (4 chars) | 2 bits per ZW char using ZWNJ, ZWJ, WJ, LRM | 2× binary capacity · Most platforms | Good balance of capacity and compatibility |
| Octal (8 chars) | 3 bits per ZW char using 8 different ZW chars | 3× binary capacity · Discord / Files only | Maximum capacity — not safe for Gmail / Twitter |
| AES-256-GCM Encryption | PBKDF2 (100k iterations) + random salt/IV | +32 bytes overhead | Payload encrypted before ZW encoding — only decryptable with password |
| Reed-Solomon Error Correction | XOR-based parity shards added to payload | +11–43% overhead | Payload survives 10–30% ZW character stripping by platforms |
Frequently Asked Questions
Can anyone detect the hidden message just by looking?
No. Zero-width characters are completely invisible — they have zero display width by Unicode specification. The text looks, reads, and copies identically before and after encoding. However, specialized ZW detector tools can find them. For true security, enable AES-256-GCM encryption so that even if detected, the payload is unreadable.
Does the hidden message survive copy-paste?
Yes. Zero-width characters travel with the text wherever it goes — copy, paste, email, instant message, social media posts. They are part of the Unicode character stream, not metadata. The exception: some platforms actively strip certain ZW characters. Use the Platform selector to pick characters safe for your target.
Which encoding mode should I use?
Binary (ZWNJ/ZWJ) for most cases — it's the standard approach, works everywhere, and is what CTF challenges typically use. Quaternary or Octal if your message is longer and your cover text is short. The Capacity Optimizer tells you exactly how much more cover text you need.
What is the Seed?
The seed controls which positions in the cover text receive zero-width characters. With the same seed, positions are always distributed identically — so both encoder and decoder know where to find the hidden characters. Think of it as a second security layer beyond encryption.
Does this work in Gmail?
Only in Binary mode with ZWNJ/ZWJ characters. Gmail strips U+200B (Zero Width Space) and some other ZW chars. Select Gmail as your target platform and the tool automatically uses only Gmail-safe characters. Reed-Solomon is recommended when sending via Gmail in case any chars are stripped.
Can I hide files, not just text?
Yes. Switch to Binary/File payload mode to embed any file (up to the cover text capacity). The file is encoded as raw bytes and embedded as ZW characters. The decoder will detect the file type via magic bytes and offer a direct download.
Is my text uploaded anywhere?
Never. All processing runs entirely in your browser using the Web Crypto API and pure JavaScript string manipulation. Your text never leaves your device.
What is Reed-Solomon error correction?
RS adds redundant parity data to your payload before encoding. If a platform strips some ZW characters (up to 10%, 20%, or 30% depending on the RS level you choose), the decoder can still reconstruct the full payload from the remaining intact characters. Recommended for Twitter, which strips most non-standard ZW chars.