Text you cannot see that is still there
Not everything in a piece of text can be seen. A zero width space or a blank-looking filler can sit inside a word or a username and show nothing, which is why people use them for spacing tricks and blank names, and why they cause surprises such as two usernames that look identical or a stray character that breaks a search.
"Invisible character" is an everyday name, not an official Unicode category. Some of these characters control how text breaks or joins, some are spaces of a certain width, and some are blank-looking symbols. A string that looks empty can still contain data.
The TextToolbox Invisible Character Generator offers eleven of them: six format controls, four kinds of space and the Braille Pattern Blank. Other blank-looking characters, such as Hangul Filler (U+3164), are not in that list.
Breaking, joining and blank symbols
Zero Width Space (U+200B) marks a place where a line may break. Word Joiner (U+2060) does the opposite and stops a break on either side of it. The app decides where the line actually wraps.
Zero Width Joiner and Zero Width Non-Joiner change whether neighbouring letters join in some scripts and emoji sequences. Braille Pattern Blank (U+2800) has no raised dots, but it is a symbol, not a space.
U+FEFF is best known as a byte order mark at the start of a file. For no-break text, use Word Joiner instead. U+2063 Invisible Separator is a mathematical control with a different job.
A code-point view shows these characters, while a plain preview can hide the difference between two strings that look the same. Keep your original text, because deleting by code point cannot tell a character you inserted from an identical one that was already there.
Code points instead of blanks
- The comparison table uses visible labels with code points, because the real characters would look blank.
- Source AB with a Zero Width Space between the letters becomes U+0041 U+200B U+0042. Source "A B" with a zero width space after the space becomes U+0041 U+0020 U+200B U+0042.
| Character | Visible label | Role and limitation |
|---|---|---|
| Zero Width Space | | Potential line-break opportunity without a normal space. |
| Word Joiner | | Inhibits line breaks around it; not an ordinary space. |
| Non-Breaking Space | | Width-bearing space with no-break behavior. |
| Zero Width Joiner | | Participates in shaping and some emoji sequences. |
| Braille Pattern Blank | | No raised dots; a Braille symbol, not whitespace. |
Testing, detecting and the limits
- Testing where a line can break and where it cannot.
- Checking how joining characters change the shape of a word in a given font.
- Finding hidden characters when copied text behaves strangely in search, comparison or a text field.
- Spacing experiments in a draft. The generator inserts characters, but it cannot promise that a blank name or message will be accepted.