Blank Is Not the Same as Empty
Every character on this page is a genuine Unicode character that happens to draw nothing. That distinction is the whole point. An empty field contains no characters at all, which is why a form can reject it; a field containing one of these contains a character, passes the check, and still appears blank. The character is really there — it counts toward the length limit, it can be selected, and it travels with the text when copied.
Six Different Kinds, Not Seventeen Versions of One
Zero-width formatting codes. The zero-width space, zero-width non-joiner, zero-width joiner, and word joiner take up no horizontal room whatsoever. Unicode classifies them as format characters, which is the category platforms are most likely to strip deliberately.
Spaces with defined widths. Six of the seventeen are real spaces, and their widths are specified rather than arbitrary: the thin space is roughly a fifth of an em, the en space half an em, the em space a full em, and the figure space matches the width of a digit so columns of numbers line up. The ideographic space fills a full CJK cell, which makes it the one that matches fullwidth text. These are visible whitespace, not zero-width — they leave a gap you can measure.
Bidirectional marks. The left-to-right mark and right-to-left mark do not add space at all — they tell the text renderer which direction the characters around them should flow, which matters when a name mixes Latin letters with Arabic or Hebrew script and the two directions collide at the boundary.
Variation selectors. Text-presentation selector (VS15) and emoji-presentation selector (VS16) do not draw anything either. Placed after certain symbols, they request the plain black-and-white text glyph or the colour emoji artwork for that same character — the mechanism behind why ☺ and ☺️ can look different despite starting from the same code point.
The Hangul filler. Unicode classifies this one as a letter. That single fact is why it succeeds where the others fail: a field demanding that a name contain at least one letter is satisfied by it, even though it displays as nothing.
The Braille blank. An empty Braille cell — a Braille pattern with no dots raised. It is classified as a symbol and occupies a normal character width, so it behaves more like a wide space than a zero-width code.
The Zero-Width Joiner Is Not Inert
Three of the zero-width characters do nothing on their own. The fourth has a job, and it can surprise you.
The zero-width joiner is the character Unicode uses to weld emoji together. A family emoji is not one character — it is several people joined by this character into a single image, and the same mechanism builds many profession and couple emoji. Paste it between two emoji and they may fuse into a third thing entirely, or produce a sequence your device cannot draw.
For plain blank space, the zero-width space or the word joiner are the safer picks. Keep the joiner away from emoji unless combining them is what you want.
The Non-Breaking Space Has an Everyday Use
This one is not a workaround at all. A non-breaking space looks exactly like an ordinary space but forbids a line break at that position, so 10 km, a person's initials, or a number and its unit stay on the same line instead of being split across two.
It is standard typographic practice, used in books and newspapers long before it reached usernames, and it is the most broadly useful character on this page for anyone writing rather than styling.
When One Does Not Work
Rejection is common and it usually follows a pattern. Many platforms strip format-category characters specifically to prevent blank display names, and most trim whitespace from the start and end of a field before saving — which removes a space-class character used at either edge while leaving one in the middle intact.
So the productive approach is to switch category rather than to try every character in the same one. If a zero-width code was stripped, try the Hangul filler, which is a letter. If a leading space vanished, put it between two visible characters instead. If a field rejects everything, it is validating strictly and no invisible character will get through.
Behaviour also changes between updates. A character that worked on a platform last year may not work today, which is why the only reliable test is pasting it into the field you actually intend to use and confirming it saves. Making an invisible name in Free Fire walks through that test on the platform people ask about most.
Using These Responsibly
The legitimate uses are about layout: spacing a name apart, keeping a unit attached to its number, indenting a line in a bio, or putting a blank display name on a service that permits one. All of these shape how your own text appears, and none of them affects anyone else.
Using invisible characters to get around a platform's rules is a different thing, and we are not going to pretend otherwise. Splitting a word to slip past a moderation filter, disguising a link, evading a ban, or making content harder for a platform to check breaches the terms of service of essentially every major service, and platforms detect these characters far more reliably than people assume. The likely outcome is losing the account.
Two smaller points of courtesy. Screen readers may announce these characters or pause on them, so a name padded with dozens of them can be unpleasant for someone using one. And a blank display name makes you harder for friends to find or mention — worth weighing before choosing one.
Combining Them With Other Tools
The most practical pairing is with wide text: that tool widens letters but leaves ordinary spaces narrow, and swapping those spaces for the ideographic space here is what makes the spacing match the letters.
For a name that mixes blank space with visible decoration, the symbols library and the nickname generator are the natural next stops, with every text tool on the site gathered in one place. The generator above handles building a longer run of one blank character; the text repeater is the one to reach for when what you are repeating is ordinary visible text.
Full Reference: Every Character on This Page, and a Few More
The seventeen characters above are the ones worth actually using. The table below adds a handful more that are genuinely invisible or zero-width but serve narrower, more technical purposes — useful to recognise if you encounter one, less useful to reach for on purpose. Every code point and name here is taken directly from the Unicode Character Database, not estimated or copied from another list.
| Character | Code point | Name | Type |
|---|---|---|---|
| U+0009 | Tab | Control | |
| U+000A | Line Feed | Control | |
| U+000C | Form Feed | Control | |
| U+00A0 | No-Break Space | Space | |
| | U+00AD | Soft Hyphen | Format |
| U+1680 | Ogham Space Mark | Space | |
| | U+180E | Mongolian Vowel Separator | Format |
| U+2000 | En Quad | Space | |
| U+2001 | Em Quad | Space | |
| U+2002 | En Space | Space | |
| U+2003 | Em Space | Space | |
| U+2004 | Three-Per-Em Space | Space | |
| U+2005 | Four-Per-Em Space | Space | |
| U+2006 | Six-Per-Em Space | Space | |
| U+2007 | Figure Space | Space | |
| U+2008 | Punctuation Space | Space | |
| U+2009 | Thin Space | Space | |
| U+200A | Hair Space | Space | |
| | U+200B | Zero Width Space | Format |
| | U+200C | Zero Width Non-Joiner | Format |
| | U+200D | Zero Width Joiner | Format |
| | U+200E | Left-to-Right Mark | Format |
| | U+200F | Right-to-Left Mark | Format |
| | U+202A | Left-to-Right Embedding | Format |
| | U+202B | Right-to-Left Embedding | Format |
| | U+202C | Pop Directional Formatting | Format |
| | U+202D | Left-to-Right Override | Format |
| | U+202E | Right-to-Left Override | Format |
| U+202F | Narrow No-Break Space | Space | |
| U+205F | Medium Mathematical Space | Space | |
| | U+2060 | Word Joiner | Format |
| | U+2066 | Left-to-Right Isolate | Format |
| | U+2067 | Right-to-Left Isolate | Format |
| | U+2068 | First Strong Isolate | Format |
| | U+2069 | Pop Directional Isolate | Format |
| ⠀ | U+2800 | Braille Pattern Blank | Symbol |
| U+3000 | Ideographic Space | Space | |
| ㅤ | U+3164 | Hangul Filler | Letter |
| | U+FEFF | Zero Width No-Break Space | Format |
| ︎ | U+FE0E | Variation Selector-15 (text) | Format |
| ️ | U+FE0F | Variation Selector-16 (emoji) | Format |
A few of these are worth a specific note. Tab and Line Feed are control characters most people never type directly — they arrive from a keyboard or a pasted document rather than from a character picker, and both usually get stripped or converted by any field that does not expect multi-line input. The bidirectional isolates and embeddings (U+2066 through U+202E) exist to control how mixed left-to-right and right-to-left text lays out; on their own, without surrounding text in the other direction, they draw nothing and do nothing visible. The Mongolian Vowel Separator and Ogham Space Mark are script-specific spacing characters — genuinely invisible or minimally visible outside their own script, but not characters most readers will ever need.