Skip to main content
Best Emojis

โฃ Invisible Characters, Copy & Paste

Invisible characters are genuine Unicode code points that draw nothing, or only blank space, when a font renders them. People reach for them to make a Discord nickname look empty, send a WhatsApp message that appears blank, or pad a Free Fire or PUBG name past a filter that rejects ordinary spaces. The set below holds 26 of them in four groups: Hangul fillers, which Unicode classes as letters (Lo); the Braille blank, a symbol (So); zero-width format controls (Cf); and the space separators (Zs), from the hair space up to the full-width ideographic space. Each tile shows the code point and official name, and the shaded strip inside it shows how wide the character really is in your font. Which apps accept which character changes often, so treat this as a list of things to try rather than a guarantee.

Invisible Characters to Copy

Each tile shades the character so you can see its width. A tile with no shading holds a zero-width character, which is still copied.

Code point reference

CharacterCode pointUnicode nameCategoryWhat it is
ใ…คU+3164HANGUL FILLERLoHangul compatibility filler. It is a letter, so trim() keeps it. Usually drawn full width.
๏พ U+FFA0HALFWIDTH HANGUL FILLERLoHalfwidth form of the Hangul filler. NFKC turns it into U+1160.
แ…ŸU+115FHANGUL CHOSEONG FILLERLoFills the empty initial-consonant slot of a Hangul syllable block.
แ… U+1160HANGUL JUNGSEONG FILLERLoFills the empty vowel slot of a Hangul syllable block.
โ €U+2800BRAILLE PATTERN BLANKSoBraille cell with no raised dots. A symbol, not whitespace.
โ€‹U+200BZERO WIDTH SPACECfNo width. Marks a point where a line may break.
โ€ŒU+200CZERO WIDTH NON-JOINERCfNo width. Stops two letters from joining in Arabic-script languages such as Persian.
โ€U+200DZERO WIDTH JOINERCfNo width. Joins emoji into combined sequences.
โ U+2060WORD JOINERCfNo width. Prevents a line break between its neighbors.
๏ปฟU+FEFFZERO WIDTH NO-BREAK SPACECfByte order mark. trim() removes it, unlike U+200B.
แ ŽU+180EMONGOLIAN VOWEL SEPARATORCfWas a space until Unicode 6.3 reclassified it as a format control.
โขU+2062INVISIBLE TIMESCfMath control meaning multiplication, as in xy. Renders as nothing.
โฃU+2063INVISIBLE SEPARATORCfMath control for an unseen comma, as in subscripts like a_ij.
ย U+00A0NO-BREAK SPACEZsSame width as a normal space but blocks line breaks. NFKC makes it U+0020.
โ€‚U+2002EN SPACEZsHalf an em wide.
โ€ƒU+2003EM SPACEZsOne em wide, roughly the width of the letter M.
โ€„U+2004THREE-PER-EM SPACEZsOne third of an em.
โ€…U+2005FOUR-PER-EM SPACEZsOne quarter of an em.
โ€†U+2006SIX-PER-EM SPACEZsOne sixth of an em.
โ€‡U+2007FIGURE SPACEZsThe width of one digit, used to align numbers in tables.
โ€ˆU+2008PUNCTUATION SPACEZsThe width of a period or comma in the current font.
โ€‰U+2009THIN SPACEZsNarrow typesetting space, often a fifth of an em.
โ€ŠU+200AHAIR SPACEZsThe narrowest space, thinner than a thin space.
โ€ฏU+202FNARROW NO-BREAK SPACEZsNarrow and non-breaking. French typography puts it before ! and ?.
โŸU+205FMEDIUM MATHEMATICAL SPACEZsFour eighteenths of an em, for spacing math formulas.
ใ€€U+3000IDEOGRAPHIC SPACEZsFull-width space as wide as one Chinese or Japanese character.

Why a letter can pass where a space fails

Most name fields reject a blank entry by trimming whitespace and checking what remains. In JavaScript, String.prototype.trim() removes all thirteen Zs characters on this page plus U+FEFF, which we confirmed in Node.js, so a name built only from em spaces or no-break spaces collapses to nothing. U+3164 HANGUL FILLER survives that check because Unicode classifies it as a letter, category Lo, not as whitespace. The same holds for the Braille blank U+2800, a symbol with an empty dot pattern. That is the most likely reason these two are the ones widely reported to work in game and social profiles that refuse plain spaces.

Normalization can turn a fancy space back into a plain one

Many services normalize usernames to the NFKC form before saving them, mainly to stop look-alike spoofing. Running Python's unicodedata module over this set shows what that does: every Zs character here, from U+00A0 to U+3000, becomes an ordinary U+0020 space, and both U+3164 and the halfwidth U+FFA0 become U+1160 HANGUL JUNGSEONG FILLER. The format controls and the Braille blank pass through unchanged. So if a blank name saves but later shows up trimmed or merged, normalization is a likely cause. Try a different group from the table, test it in a private message or a throwaway profile first, and keep the original name somewhere you can paste it back from.

Frequently Asked Questions

Which invisible character works for a Free Fire or Discord name?

No single character is accepted by every app, and we have not tested each app ourselves. U+3164 HANGUL FILLER is the one most widely reported to work in game nicknames, with U+2800 as the usual fallback. Copy one, paste it into the name field, and save to see whether the app keeps it.

What is the difference between a zero-width space and a Hangul filler?

U+200B ZERO WIDTH SPACE is a format control (Cf) that takes no width and marks a spot where a line may break. U+3164 is a letter (Lo) that most fonts draw as an empty, full-width cell. The first hides between words; the second takes up room like any other character.

Can invisible characters cause problems?

Yes. Pasted into code, a URL or a password, a zero-width character makes two strings that look identical compare as different, a common source of bugs that are hard to track down. Search tools and screen readers may also skip them or announce them oddly. Use them in display names and messages, not in logins.

Related Symbols

Further reading