Simple Invisible Character
Reference

Invisible Unicode characters: code points, names and where they work

Not all blank characters are the same. Some are spaces, some have no width at all, and a few are letters that just happen to look empty, and that decides where each one works.

Updated 9 October 2026 · 5 min read

Short answer: "invisible characters" are a handful of Unicode code points that take up no visible ink. They fall into three groups: spaces (like U+00A0 and U+2003) that have width but are often trimmed, zero-width format characters (like U+200B) that have no width at all, and blank letters and symbols (U+3164 Hangul Filler and U+2800 Braille blank) that look empty but are not treated as whitespace. The last group is what works for blank names and messages.

The three kinds of blank character

1. Space characters

Unicode has more than a dozen space characters in the "space separator" category (Zs): the normal space U+0020, the no-break space U+00A0, a range of typographic spaces from U+2000 to U+200A, the narrow no-break space U+202F and the full-width ideographic space U+3000. They have the White_Space property, so most programming languages remove them when they trim text. In JavaScript, for example, trim() removes every Zs character and U+FEFF. That is why they rarely work for blank usernames, even though they look blank.

2. Zero-width format characters

Characters such as the zero-width space U+200B, the zero-width non-joiner U+200C, the zero-width joiner U+200D and the word joiner U+2060 are in the "format" category (Cf). They are not whitespace, so trim() keeps them, but Unicode marks them as default ignorable: software is allowed to draw them as nothing. They have real jobs. U+200B marks a place where a long word may break, U+200C and U+200D control how letters join in scripts such as Arabic, Persian and Hindi, and U+200D glues emoji into combinations such as family or profession emoji.

Because they are invisible and have zero width, they are popular for spoofing names, so many sites strip or block them.

3. Blank letters and symbols

The Hangul fillers (U+3164, U+115F, U+1160 and the half-width U+FFA0) are letters (category Lo) used internally in Korean text processing. The Braille pattern blank U+2800 is a symbol (So), the Braille cell with no dots raised. Neither group is whitespace, and both are allowed by filters that accept "letters" or "symbols", yet most fonts draw them as an empty gap. The Hangul fillers are also default ignorable, so some systems draw them with zero width or, if the font lacks them, as a box.

Reference table

"Trimmed" means removed by a typical whitespace trim, such as JavaScript's trim(). "Usernames" is the usual result across games and apps; individual apps differ. You can copy every character in this table except U+FFA0 from the invisible character tool.

Code pointNameCategoryWidthTrimmed?HTMLUsernames
U+3164Hangul FillerLetter (Lo)Blank gapNoㅤBest chance
U+115FHangul Choseong FillerLetter (Lo)Varies by fontNoᅟOften
U+1160Hangul Jungseong FillerLetter (Lo)Varies by fontNoᅠOften
U+FFA0Halfwidth Hangul FillerLetter (Lo)Varies by fontNoᅠSometimes
U+2800Braille Pattern BlankSymbol (So)Blank gapNo⠀Usually
U+200BZero Width SpaceFormat (Cf)ZeroNo​Rarely
U+200CZero Width Non-JoinerFormat (Cf)ZeroNo‌Rarely
U+200DZero Width JoinerFormat (Cf)ZeroNo‍Rarely
U+2060Word JoinerFormat (Cf)ZeroNo⁠Rarely
U+FEFFZero Width No-Break Space (BOM)Format (Cf)ZeroYes, in JavaScriptRarely
U+180EMongolian Vowel SeparatorFormat (Cf)VariesNo (in current engines)᠎Rarely
U+00A0No-Break SpaceSpace (Zs)Like a spaceYes Sometimes, mid-name
U+2002En SpaceSpace (Zs)Half an emYes Sometimes, mid-name
U+2003Em SpaceSpace (Zs)One emYes Sometimes, mid-name
U+2009Thin SpaceSpace (Zs)NarrowYes Sometimes, mid-name
U+200AHair SpaceSpace (Zs)Very narrowYes Sometimes, mid-name
U+3000Ideographic SpaceSpace (Zs)Full widthYes Sometimes, mid-name

"Mid-name" means the character usually survives between visible characters, where trimming does not reach, but is removed when it is at the start or end, or on its own.

Which one to use for what

GoalUseWhy
Blank username or display nameU+3164, then U+2800Not whitespace, accepted as a letter or symbol. See the invisible name guide.
Empty chat messageU+3164 or U+2800Survives the trim that blocks empty messages. See sending a blank message.
Blank line in a bio or captionU+2800 on its own lineKeeps the line from collapsing, and renders as blank almost everywhere.
Keep two words on the same lineU+00A0That is exactly what the no-break space is for, in Word, HTML and most editors.
Allow a break inside a long URL or wordU+200BGives the browser a break opportunity without showing a hyphen.
Wider gap in a layoutU+2003 or U+3000Fixed, predictable width that is not collapsed in HTML.

Typing them without copying

Finding hidden characters in text

Invisible characters also turn up by accident: copied from a web page, a PDF or a chat, they can make a password "wrong", break a spreadsheet formula or stop two identical-looking words from matching. To find them, paste the text into the clipboard tester, which counts invisible characters and lists their code points. In code editors such as VS Code, unusual invisible characters are usually highlighted. Removing them is a find-and-replace on the code point.

Do not use invisible characters in passwords, email addresses or file names. They are hard to retype, may be stripped by one system and kept by another, and can lock you out.

Copy any of these charactersOne-click copy, a width demo for each, a generator for long strings and a clipboard tester.
Open the invisible character tool

Frequently asked questions

Is U+200B a whitespace character?

No. It was moved out of the space separator category in Unicode 4.0.1 and is now a format character. It does not have the White_Space property, which is why trim() functions keep it.

Why is the Hangul Filler a letter if it is blank?

It was included for compatibility with older Korean character sets, where it fills an empty position in a syllable. Unicode classes it as a letter (Lo) and as default ignorable.

What is the difference between U+3164 and U+FFA0?

U+FFA0 is the half-width form of the same filler. It behaves similarly, but fonts support it less consistently, so U+3164 is the usual choice.

Can invisible characters be detected by apps?

Yes. Any app can check code points, so a blank that works today can be blocked tomorrow. You can check your own text with the clipboard tester.