Text steganography on iPhone means hiding a short UTF-8 message inside ordinary-looking cover text using invisible zero-width Unicode characters, then revealing it later in the same Safari tab — without installing an app, creating an account, or sending your cover or secret to any server. The convention used by Text Steganography writes each byte of your hidden message as eight invisible code points (zero-width space for binary 0, zero-width non-joiner for binary 1), frames the sequence with an invisible start and end marker, and inserts the whole framed block right after the first visible character of the cover. The rendered sentence looks identical to the original on the iPhone display, even though its underlying Unicode sequence is now dozens or hundreds of code points longer. Because every step happens locally in the browser, the cover, the hidden message, and the generated string never leave the device. The catch is iOS itself: Mail, Messages, Notes, WhatsApp, social apps, and clipboard managers routinely normalize or strip default-ignorable characters, so the right way to use this on an iPhone is to test the delivery channel end to end before trusting it with anything that matters.

What Text Steganography Does on iPhone
Text Steganography is a single-page tool that runs entirely inside Safari. You give it two inputs — a visible cover sentence and a hidden UTF-8 message — and it returns a single string that looks like the cover to a casual reader but carries the hidden message in its invisible code points. The encoding follows a documented Lizely convention rather than a vague "steganography" claim:
- U+200B (zero-width space) represents one binary zero.
- U+200C (zero-width non-joiner) represents one binary one.
- U+2063 (invisible separator) marks the start of the payload.
- U+2064 (invisible plus) marks the end of the payload.
- Each hidden UTF-8 byte is written as exactly eight invisible bits, most significant bit first.
- The framed sequence is inserted after the first visible code point of the cover.
On an iPhone the rendered text looks unchanged because every one of those code points has zero width in typical fonts. The Unicode Consortium's Unicode Security Considerations report treats exactly this class of characters as "default-ignorable," which is precisely why most readers see nothing extra — and why many software pipelines quietly remove them.
Why the Browser Path Beats a Native App on iOS
Doing text steganography on an iPhone in Safari has several practical advantages over installing a dedicated steganography app. There is no App Store review to wait through, no permission prompts for the camera or microphone, no telemetry SDK shipping your cover and secret to a developer, and no background service running. You open the URL in a tab, paste your cover and your hidden text, copy the result, and close the tab — nothing is left installed. For people who only need this occasionally, the browser path is faster than finding, vetting, and granting permissions to a third-party app. It also means you can use the same tool on iPhone, iPad, Mac, and Windows without worrying about whether your phone's installed app is up to date. The trade-off is that you have no app icon, no Share Extension, and no widget — you trade convenience for portability and a smaller privacy footprint.
How to Hide a Message in Text on iPhone
- Open Safari on the iPhone and navigate to the Text Steganography page.
- Switch the tool to Hide mode if it is not already there.
- Type an ordinary cover sentence into the cover field — for example, "Coffee at 3 on Tuesday, usual spot."
- Type the short hidden UTF-8 message into the hidden field. Keep it well under the 10,000 UTF-8 byte limit; emoji and non-Latin text each take several bytes, so a "character" budget can be tighter than it looks.
- Tap Generate. The page returns a single steganographic string in the output box.
- Tap and hold the output, then choose Copy. Do not retype it; the iOS on-screen keyboard cannot show or preserve zero-width characters, and manual retyping will silently destroy the payload.
- Paste the copied result into the destination you intend to send it through, exactly as it was copied — no cleanup, no "smart" formatting, no autocorrect.
For a stronger guarantee that your cover and secret stay private from any remote service, this whole workflow runs locally; the browser-only path for text steganography confirms that nothing is uploaded at any point.
How to Reveal a Hidden Message on iPhone
- Open the same Text Steganography page in Safari.
- Switch the tool to Reveal mode.
- Open the message you received, select the entire steganographic string, and Copy it. Use Select All rather than dragging the selection bar, because the invisible code points can confuse iOS's selection logic.
- Paste the exact string into Reveal mode. Do not paste it into Notes first to "clean it up," and do not let autocorrect run on it.
- Tap Reveal. The tool finds the start and end markers, checks that every payload character is one of the two bit symbols, requires a multiple of eight bits, and rejects anything that is not valid UTF-8.
- Read the recovered hidden message and the recovered visible cover. Both are returned, and both should match what was originally entered.
If Reveal returns an error rather than a hidden message, the payload was corrupted in transit — not lost inside the tool. Skip ahead to the troubleshooting section below before assuming anything is wrong with your input.
iPhone Channels and How They Treat Zero-Width Characters
iOS apps do not all treat default-ignorable code points the same way, and Apple does not publish a public matrix. The table below compares typical behavior seen when a hidden text steganography string is pasted through common iPhone destinations. Treat each row as a starting point and test end to end with your own device, iOS version, and recipient setup before relying on it for anything you cannot afford to lose.
| Channel on iPhone | Typical handling of zero-width code points | Safe without a fresh end-to-end test |
|---|---|---|
| Apple Notes (paste as plain text) | Tends to preserve raw Unicode exactly | Usually yes |
| Mail draft (iCloud account) | Often preserves; some gateways re-encode | Test first |
| Messages (iMessage to iMessage) | Generally preserves invisible code points | Test first |
| Messages (SMS / RCS) | Carrier-side processing often strips default-ignorable | No |
| Known to remove default-ignorable characters | No | |
| Social networks (X, Instagram, Facebook, TikTok) | Usually sanitize pasted text | No |
| Third-party clipboard managers | Often strip on write to clipboard | No |
| Screenshots, AirPrint, camera captures | Cannot carry invisible code points at all | Never |
Size Math for an iPhone Session
Every hidden UTF-8 byte you add inserts eight invisible code points into the cover, plus the two framing markers. Here is the arithmetic for a typical short secret — the kind you might actually paste into a chat from an iPhone.
Suppose the hidden message is "open 1234", nine ASCII characters.
- UTF-8 size of "open 1234": 9 ASCII bytes × 1 byte per character = 9 bytes.
- Invisible bits inserted: 9 bytes × 8 bits per byte = 72 bits.
- Invisible code points for the payload: 72 bits × 1 code point per bit = 72 code points.
- Framing markers: 2 invisible code points (start + end).
- Total invisible code points inserted: 72 + 2 = 74.
The whole 74-character invisible block is appended right after the first visible character of your cover. So if your cover is the 35-character sentence "Coffee at 3 on Tuesday, usual spot.", the rendered string still reads as that sentence, but its underlying Unicode sequence becomes 35 + 74 = 109 code points. The tool will reject the message if the cover is already longer than 100,000 code points, or if the hidden payload would push the hidden message over 10,000 UTF-8 bytes. Emoji-heavy secrets reach the byte limit faster than the visible character count suggests, because a single emoji can be four UTF-8 bytes. For a precise ceiling on a specific message, run the values through the live tool rather than estimating by hand.
Common Failure Modes on iOS and How to Catch Them
Most "it didn't work" reports on iPhone fall into a small set of predictable patterns. Working through them in order usually finds the cause within a minute.
- Reveal returns an empty hidden message. The start or end marker was stripped by the destination app. Confirm by pasting the received text into Reveal mode and watching for the validation error — the tool refuses to guess when framing is malformed.
- Reveal returns garbled bytes or replacement characters. Some bits survived and some did not, so the payload is no longer a multiple of eight bits. The tool's strict UTF-8 check rejects it rather than silently substituting.
- First letter of the cover is missing. The convention inserts the framed block after the first visible code point, so if the first letter appears gone, the destination truncated from the front. Try a channel that preserves raw Unicode.
- Reveal picks up a different message than expected. The cover originally contained one of the documented marker code points outside the framed region. The convention refuses ambiguous payloads rather than guessing.
- Pasted text "looks fine" but Reveal says nothing is there. iOS autocorrect or Smart Punctuation rewrote the string on paste. Long-press the pasted result and choose "Replace" with the original, or paste again from the source.
- Screenshots taken for the record show no payload at all. Screenshots are pixels — invisible code points cannot survive being rasterized. Keep the original string in Notes if you need a recoverable copy.
For quick reference on every marker, limit, and step, the Text Steganography cheat sheet lists the same conventions in a compact form.
Honest Limits of This Approach on iPhone
Text steganography on an iPhone is concealment for demonstrations, puzzles, and sanitization testing — not a confidential channel. The mapping is documented, so anyone who finds or guesses the convention can decode the message, and anyone who finds it can alter it. Apple does not guarantee that any specific app will preserve default-ignorable characters, and the iOS clipboard can apply transformations you did not ask for. For anything sensitive, encrypt the hidden message with a reviewed system before steganography, and treat the steganographic string as a public envelope rather than a secret one. Used with those expectations, the tool is a clean, inspectable way to learn how Unicode can carry non-rendering data and to verify which of your favorite iPhone apps silently rewrite the strings you paste.