Skip to site navigation
Text

Invisible text

Blank text that pastes as real characters — for an empty message, a gap in a bio, or indentation that does not collapse.

Hangul FillerU+3164

The brackets are drawn by this page. Only what sits between them is copied.

Every character that renders as invisible text

The column that decides whether a blank username works is Trimmed, not width. Anything counted as whitespace is stripped from the ends of a field before the site checks whether you left it empty. The two at the top are not whitespace, which is why they survive. One catch worth knowing: U+FEFF is zero width but browsers still trim it, because JavaScript counts it as whitespace even though Unicode does not.

CharacterCodeWidthTrimmed
[]Lo
U+3164wideno
The default choice for a blank username. Unicode files it as a letter, not a space, so trimming and empty-field checks both let it through, and it renders as blank space in essentially every font that ships on phones. It is a full-width character, so one of these is about as wide as two Latin letters. Fields with a tight character limit fill up faster than the blank space suggests.
[]So
U+2800narrowno
The narrower alternative when U+3164 is too wide. Also not a space by Unicode's reckoning, so it survives trimming the same way. Font coverage is good but not universal. On a device with no braille-capable font it can come out as a hollow box.
[]Cf
U+200Bzerono
Takes up no width at all. Its real use is inserting a break opportunity inside a long word, or separating two characters that would otherwise combine. The most widely known invisible character and therefore the most widely filtered. Discord and Instagram both strip it from names in many places, which is usually why a tutorial that says to use this one no longer works.
[]Cf
U+200Czerono
Stops two adjacent characters from forming a ligature or joined form. Genuinely load-bearing in Persian and Hindi text, which is part of why platforms are slower to filter it out.
[]Cf
U+200Dzerono
The opposite of the non-joiner, and the glue inside multi-part emoji. A family emoji is several people joined by these. Because emoji depend on it, pasting one next to an emoji can change which emoji you get rather than adding blank space.
[]Cf
U+2060zerono
Zero width, and specifically forbids a line break at that point. The modern replacement for using U+FEFF as a no-break marker.
[]Cf
U+2063zerono
Intended for mathematical notation, as an invisible comma between indices. Rarely filtered precisely because almost nobody uses it.
[]Cf
U+FEFFzeroyes
The byte order mark. Zero width, and historically used the way U+2060 is used now. Riskiest one here, and the one exception to the rule that zero-width characters survive trimming: JavaScript counts it as whitespace even though Unicode does not, so browser-side validation strips it from the ends of a field. On top of that, many tools read it as an encoding marker rather than text. Use U+2060 instead unless you specifically want a BOM.
[ ]Zs
U+00A0narrowyes
A normal-looking space that will not break across lines. Good for keeping a number next to its unit; not useful for a blank name. Unicode counts it as whitespace, so trimming removes it from the ends of a field.
[]Zs
U+2003wideyes
A fixed-width space as wide as the font size. Useful for indentation that survives a copy and paste. Whitespace, so it is trimmed from the ends of a field.
[ ]Zs
U+3000wideyes
The full-width space used in Chinese, Japanese and Korean typesetting. The widest single blank here. Whitespace, so it is trimmed from the ends of a field.

Check what your invisible text is really made of

Paste back into this box and it will name every invisible character it finds. Nothing typed here leaves your device.


Mechanism

What invisible text is actually made of

There is no such thing as text with no characters in it; what people mean by invisible text is a run of characters that have nothing to draw. Pick one and repeat it, and you get a string with a real length that renders as empty space. Which one you repeat decides what it can do. The zero-width ones add length without adding width, so they are what you want for slipping past a minimum-length check or breaking up a word. The blank-but-not-whitespace ones — U+3164 and U+2800 — take up visible room and survive trimming, so they are what you want for a gap that actually shows or a field that must not read as empty. The fixed-width spaces give you predictable indentation but vanish from the ends of a field.

Limits

What it cannot do

  • This is not hidden text. Anyone can select the region, and pasting it into a plain editor reveals the characters — it hides from a casual reader, not from inspection.
  • Character limits count every one of these. A bio that looks half empty can be completely full.
  • Platforms that collapse consecutive whitespace will fold repeated space characters into one. The non-whitespace characters are not collapsed, which is usually the reason to prefer them.
Questions

Questions people actually ask

Is invisible text the same as hidden text?
No, and the difference matters. These characters are genuinely present in the string — select the area and you will highlight them, and pasting into any plain text editor shows exactly what is there. It is invisible to someone reading the page, not to anyone who looks.
Why did my invisible text collapse into one space?
You used one of the space characters, and the platform collapsed the run the way HTML collapses consecutive spaces. U+3164 and U+2800 are not whitespace, so nothing collapses them, and a row of ten stays ten characters wide.