The Complete List of Invisible Unicode Characters

Every character that renders as nothing — zero-width characters, format controls, invisible operators and exotic spaces — with code points, origins and the bugs each one causes. Test any text with the detector.

Zero-width characters

The classic troublemakers: characters with no width at all, invisible in every font.

Code pointNameLegitimate useHow it causes trouble
U+200BZero-width spaceInvisible line-break opportunityThe #1 text watermark; breaks string comparison, search, parsing
U+200CZero-width non-joinerPrevents ligatures; required in PersianUsed in steganography; invisible in usernames
U+200DZero-width joinerBuilds emoji sequences (👨‍👩‍👧)Hidden payload carrier between ordinary letters
U+2060Word joinerNo-break glue without widthSame invisibility, rarely legitimate in web text
U+FEFFZero-width no-break space (BOM)Byte-order mark at file startSneaks into copied text; breaks JSON/CSV parsers
U+180EMongolian vowel separatorMongolian scriptZero-width in most renderers

Format & directional controls

Code pointNameNotes
U+00ADSoft hyphenInvisible until a line breaks there; survives copy-paste from PDFs
U+200E / U+200FLeft-to-right / right-to-left markBidi control; rides along when copying from mixed-direction text
U+202A–U+202EDirectional embeddings & overridesU+202E ("RLO") is infamous for filename spoofing attacks
U+2066–U+2069Directional isolatesModern bidi controls, equally invisible
U+061CArabic letter markBidi control for Arabic-script digits
U+034FCombining grapheme joinerInvisible combining mark, a favorite for evading text filters
U+2061–U+2064Invisible math operatorsFunction application, invisible times/separator/plus
U+FFF9–U+FFFBInterlinear annotation charactersRuby-text markup, invisible elsewhere

Invisible "letters" and fillers

Code pointNameNotes
U+115F / U+1160Hangul choseong / jungseong fillerRender as blank; used to make "empty" usernames
U+3164Hangul fillerThe famous "ㅤ" blank character in gamer tags
U+FFA0Halfwidth Hangul fillerSame trick, halfwidth form
U+17B4 / U+17B5Khmer inherent vowelsDeprecated, invisible

Variation selectors and tags — the watermark blocks

These two ranges deserve special attention because they can encode arbitrary hidden data:

RangeNameWhy it matters
U+FE00–U+FE0FVariation selectors 1–16VS15/16 legitimately switch emoji presentation (❤︎ vs ❤️); the rest are invisible modifiers that can tag text
U+E0100–U+E01EFVariation selectors supplement240 more invisible modifiers — enough to encode a byte per character
U+E0000–U+E007FUnicode tag charactersA full invisible copy of ASCII. Entire sentences can hide inside a single visible emoji — used in prompt-injection demos and AI text watermarking experiments

Spaces that aren't the space you think

Not strictly invisible — they occupy width — but indistinguishable from a normal space by eye:

Code pointNameNotes
U+00A0No-break spaceEverywhere in HTML ( ) and word processors
U+202FNarrow no-break spaceRepeatedly observed in ChatGPT output; a strong AI tell
U+2000–U+200AEn quad … hair spaceEleven typographic spaces of varying widths
U+205FMedium mathematical spaceMath typesetting
U+1680Ogham space markRenders as a line in Ogham font contexts
U+3000Ideographic spaceFull-width CJK space
U+2028 / U+2029Line / paragraph separatorBreak JavaScript string literals and JSON in old parsers

How to find them in your text

You can't see them, but software can. Paste any text into our free invisible character detector — it checks all 400+ code points above, lists what it finds by name and count, and can remove everything in one click while preserving emoji and legitimate script joiners. Everything runs locally in your browser.