Skip to content
Ghostchars

Hidden character index

Every codepoint with a page of its own: what it is for, where it comes from, when it is doing a real job, and whether the default pass removes it.

49 characters documented

Grouped by the category the engine reports. Within a category, the option that removes a character is the same for every row.

Zero-width and invisible

Governed by Default pass (always on)

CodepointNameDefault pass
U+200BZERO WIDTH SPACEA space with no width. It takes up a position in the string, marks a place where a line may break, and draws nothing at all.Yes
U+2060WORD JOINERThe opposite of a zero width space: an invisible character that forbids a line break at its position, without adding any width.Yes
U+00ADSOFT HYPHENA conditional hyphen. It is invisible until the line breaks at that exact spot, at which point a hyphen appears.Yes
U+FEFFZERO WIDTH NO-BREAK SPACEThe byte order mark, U+FEFF, which editors and error messages usually spell ufeff. At the very start of a file it announces the encoding; anywhere else it is an invisible, non-breaking nothing that Unicode has deprecated for that use since 3.2.Yes
U+2061FUNCTION APPLICATIONAn invisible mathematical operator meaning "apply this function to this argument": the silent operator between f and (x).Yes
U+2062INVISIBLE TIMESThe invisible multiplication sign: the operator that is meant when you write "2x" and mean "2 times x".Yes
U+2063INVISIBLE SEPARATORThe invisible comma, U+2063 INVISIBLE SEPARATOR: the separator between the indices in a subscript like a⁣i⁣j.Yes
U+2064INVISIBLE PLUSThe invisible addition sign used between the parts of a mixed fraction: the "and" in "one and a half".Yes
U+034FCOMBINING GRAPHEME JOINERA zero-width combining mark that exists to change how two characters sort and collate, not how they look. It never renders.Yes
U+180EMONGOLIAN VOWEL SEPARATORA Mongolian orthographic control that was reclassified in Unicode 6.3: it used to be a space, and is now a zero-width format character.Yes
U+2800BRAILLE PATTERN BLANKThe braille cell with no dots raised. It is a printing character with a real advance width, but nothing is drawn.Yes
U+3164HANGUL FILLERA Hangul compatibility character with no shape, used historically to fill an empty slot in a Korean syllable block.Yes
U+FDD0-U+FDEFNONCHARACTERSCodepoints Unicode has permanently reserved to never be characters: U+FDD0-U+FDEF plus the last two codepoints of every plane (U+FFFE, U+FFFF, U+1FFFE, and so on).Yes

Bidirectional overrides

Governed by Default pass (always on)

CodepointNameDefault pass
U+202ERIGHT-TO-LEFT OVERRIDEAn invisible control that forces every following character to be laid out right to left, regardless of what script it belongs to.Yes
U+202DLEFT-TO-RIGHT OVERRIDEThe mirror of U+202E: it forces everything after it to be laid out left to right, overriding the natural direction of Hebrew or Arabic.Yes
U+202ALEFT-TO-RIGHT EMBEDDINGOpens a left-to-right run inside surrounding text, until a matching POP DIRECTIONAL FORMATTING closes it.Yes
U+202BRIGHT-TO-LEFT EMBEDDINGOpens a right-to-left run inside surrounding text, until a matching POP DIRECTIONAL FORMATTING closes it.Yes
U+202CPOP DIRECTIONAL FORMATTINGCloses the most recent embedding or override. On its own it does nothing; paired, it ends a directional run.Yes

Bidirectional marks

Governed by Bidi marks --bidi

CodepointNameDefault pass
U+200ELEFT-TO-RIGHT MARKAn invisible, zero-width character with strong left-to-right direction. It resolves ambiguity in mixed text without reordering anything itself.When free-floating
U+200FRIGHT-TO-LEFT MARKThe mirror of U+200E: an invisible character with strong right-to-left direction, used to resolve ambiguity in mixed-direction text.When free-floating
U+061CARABIC LETTER MARKAn invisible mark with the direction of an Arabic letter, added in Unicode 6.3 for cases where a right-to-left mark is not quite strong enough.When free-floating
U+2066-U+2069BIDIRECTIONAL ISOLATESFour invisible controls (LRI, RLI, FSI and PDI) that wrap a span of text so its direction cannot leak into the text around it. They are the modern replacement for the embedding and override controls.When free-floating

Joiners, selectors and fillers

Governed by Aggressive -a

CodepointNameDefault pass
U+200DZERO WIDTH JOINERAn invisible character that asks two neighbours to be drawn as one. It is what turns three separate people into a family emoji and what joins Arabic and Indic letters that would otherwise stand apart.When free-floating
U+200CZERO WIDTH NON-JOINERThe opposite of the joiner: an invisible character that forbids two neighbours from being drawn as one connected form.When free-floating
U+FE00-U+FE0FVARIATION SELECTORSSixteen invisible modifiers that pick which of several forms the preceding character should take. VS15 (U+FE0E) asks for the black-and-white text form; VS16 (U+FE0F) asks for the colour emoji form.When free-floating
U+E0000-U+E007FTAG CHARACTERSA shadow copy of ASCII. U+E0020-U+E007E mirror the printable ASCII characters, one for one, and render as nothing. U+E007F CANCEL TAG ends a sequence.When free-floating
U+180B-U+180DMONGOLIAN FREE VARIATION SELECTORSThree invisible selectors (FVS1 to FVS3) that pick which positional form a Mongolian letter takes when the default shaping is not the one the word needs.When free-floating
U+17B4-U+17B5KHMER INHERENT VOWELSTwo invisible Khmer vowel signs, AQ and AA, which spell out a vowel that is normally implied rather than written.When free-floating
U+115F-U+1160HANGUL JAMO FILLERSTwo zero-width fillers, U+115F HANGUL CHOSEONG FILLER and U+1160 HANGUL JUNGSEONG FILLER, that stand in for a missing initial consonant or medial vowel when a Korean syllable block is written out in jamo. In everyday terms they are the choseong filler and the jungseong filler.When free-floating

Private-use characters

Governed by Private-use characters --pua

CodepointNameDefault pass
U+E000-U+F8FFPRIVATE USE AREACodepoints Unicode will never assign a meaning to, reserved for private agreements between a font and the software that uses it. U+E000-U+F8FF plus two large supplementary planes.No

Exotic spaces

Governed by Spaces -s

CodepointNameDefault pass
U+00A0NO-BREAK SPACEA space that forbids a line break. It looks exactly like a normal space and is a completely different codepoint.No
U+202FNARROW NO-BREAK SPACEA thinner no-break space, about half the width of a normal one, used where a full space would look too wide.No
U+205FMEDIUM MATHEMATICAL SPACEA space four eighteenths of an em wide, defined for mathematical typesetting: the gap around a binary operator.No
U+3000IDEOGRAPHIC SPACEA full-width space, exactly as wide as a CJK character. It is the space key on a Japanese, Chinese or Korean input method in full-width mode.No
U+1680OGHAM SPACE MARKThe word separator of the Ogham script. Unusually for a space, it is drawn as a short line in most Ogham fonts, and as blank in everything else.No
U+2000-U+200AGENERAL PUNCTUATION SPACESEleven typographic spaces of fixed width: en quad, em quad, en space, em space, three-per-em, four-per-em, six-per-em, figure space, punctuation space, thin space and hair space.No

Line separators

Governed by Line endings -n

CodepointNameDefault pass
U+2028LINE SEPARATORUnicode's own "new line here" character, distinct from the ASCII line feed. It ends a line without ending a paragraph.No
U+2029PARAGRAPH SEPARATORUnicode's paragraph break: the counterpart of U+2028, one level up.No
U+0085NEXT LINENEL, a C1 control that means "start a new line". It comes from EBCDIC, where it was the newline character.No

Control characters

Governed by Control characters --controls

CodepointNameDefault pass
U+0000-U+001FC0 CONTROL CHARACTERSThe 32 ASCII control codes: NUL, BEL, ESC, the file and record separators, and the rest. They are commands to a teletype, not text.No
U+0080-U+009FC1 CONTROL CHARACTERSA second block of 32 control codes inherited from ISO 8859. In Unicode they are controls; in Windows-1252 the same byte values are curly quotes, the em dash and the euro sign.No

Typographic punctuation

Governed by Punctuation --punct

CodepointNameDefault pass
U+2013EN DASHThe medium-length dash used for ranges and some relationships in edited typography.No
U+2014EM DASHThe long dash, one em wide. It sets off a parenthetical clause, or marks an interruption where a comma would be too quiet.No
U+2019RIGHT SINGLE QUOTATION MARKThe curly closing single quote, and in English the correct apostrophe: don’t, it’s, ’90s.No
U+2026HORIZONTAL ELLIPSISThree dots in a single character, with tighter spacing than three periods and no chance of a line break inside it.No

Lookalike letters

Governed by Lookalike letters --confusables

CodepointNameDefault pass
U+0430CYRILLIC SMALL LETTER AThe Cyrillic letter a. In almost every font it is drawn identically to the Latin letter a, and it is a completely different codepoint.No
U+043ECYRILLIC SMALL LETTER OThe Cyrillic letter o, drawn identically to Latin o in every font in common use.No
U+0435CYRILLIC SMALL LETTER IEThe Cyrillic letter ie, drawn exactly like a Latin e.No
U+0441CYRILLIC SMALL LETTER ESThe Cyrillic letter es, drawn exactly like a Latin c.No

See the full reference, with the options that govern each category

Anonymous usage stats?

Ghostchars processes your text in the browser and never uploads it. We would like to count page views with a self-hosted, cookie-light analytics endpoint. No content, ever.