Hide secret messages in plain sight — inside images or text
Encoding: Your message is converted to binary. Each bit replaces the least significant bit of one color channel (R, G, or B) across successive pixels. A 32-bit length header is stored first. The change to each pixel is at most ±1 — invisible to the naked eye.
Decoding: The LSBs are read back in order. The length header tells how many bytes to extract, then those bits are reassembled into text.
Capacity: Each pixel stores 3 bits (one per RGB channel).
A W×H image holds floor(W×H×3/8) - 4 bytes.
Instead of hiding data in pixels, text steganography hides messages within ordinary-looking text. The cover text reads naturally, but carries a hidden payload. Select a technique below to try it out.
Unicode defines characters with no visible width: zero-width space (U+200B) and
zero-width non-joiner (U+200C). We encode each bit of the secret as one of these
characters and insert them between the letters of cover text. The text looks identical but its byte content is different.
This is the most practical text steganography method — high capacity and truly invisible.
Many Unicode characters look identical but have different code points. For example, Latin a
(U+0061) and Cyrillic а (U+0430) are visually indistinguishable
in most fonts. By choosing Latin = 0 or Cyrillic = 1 for each eligible letter,
we can encode a binary message. The text reads normally but carries hidden bits.
Codebook:
| Letter | Bit 0 (Latin) | Bit 1 (Cyrillic) |
|---|---|---|
| a | a U+0061 | а U+0430 |
| c | c U+0063 | с U+0441 |
| e | e U+0065 | е U+0435 |
| o | o U+006F | о U+043E |
| p | p U+0070 | р U+0440 |
| s | s U+0073 | ѕ U+0455 |
| x | x U+0078 | х U+0445 |
| y | y U+0079 | у U+0443 |
Each pair of synonyms represents a single bit: one word = 0, the other = 1. By writing a sentence and choosing specific words from the codebook, you can spell out a binary message. This is lower capacity but fascinating — the secret is in the word choice itself.
Codebook:
| Bit 0 | Bit 1 | Bit 0 | Bit 1 | |
|---|---|---|---|---|
| big | large | begin | start | |
| fast | quick | end | finish | |
| happy | glad | small | tiny | |
| sad | unhappy | smart | clever | |
| hard | difficult | easy | simple | |
| nice | pleasant | pretty | beautiful | |
| cold | freezing | hot | boiling | |
| old | ancient | new | fresh | |
| loud | noisy | quiet | silent | |
| weird | strange | sure | certain | |
| woods | forest | road | path | |
| house | home | rock | stone | |
| creek | stream | ship | vessel |