Paste any text to reveal hidden Unicode: zero-width spaces, soft hyphens, directional marks, no-break spaces and other characters you can't see but computers can. Remove them all in one click.
🔒 Your text never leaves your device — all analysis happens in your browser.
| Code point(s) | Name | Severity | Why it appears |
|---|---|---|---|
| U+200B | Zero Width Space | suspicious | Invisible word-break hint; abused for tracking and steganography. |
| U+200C | Zero Width Non-Joiner | contextual | Legitimate in Persian and Indic scripts; suspicious in Latin prose. |
| U+200D | Zero Width Joiner | contextual | Required inside emoji sequences (👨👩👧) and Indic scripts. |
| U+2060 | Word Joiner | suspicious | Invisible no-break glue; rare in normal prose. |
| U+FEFF | Zero Width No-Break Space (BOM) | suspicious | Only legitimate as a byte-order mark at file start; mid-text is a red flag. |
| U+2061–U+2064 | Invisible Math Operator | suspicious | Function application / invisible times / separator / plus — math notation only. |
| U+180E | Mongolian Vowel Separator | suspicious | Reclassified as a format character; renders invisibly. |
| U+034F | Combining Grapheme Joiner | suspicious | Rare collation edge cases only. |
| U+00A0 | No-Break Space | contextual | Very common (HTML , typography); also a mild LLM tell. |
| U+202F | Narrow No-Break Space | contextual | The headline ChatGPT artifact; also legitimate French typography. |
| U+2000–U+2002 | En Quad / Em Quad / En Space | contextual | Typographic spacing. |
| U+2003 | Em Space | contextual | Typographic spacing; statistically associated with LLM output. |
| U+2004–U+200A | Typographic Space (Three-Per-Em … Hair Space) | contextual | Fine typographic spacing widths. |
| U+205F | Medium Mathematical Space | suspicious | Math layout only. |
| U+3000 | Ideographic Space | contextual | Standard full-width space in CJK text; suspect in Latin text. |
| U+1680 | Ogham Space Mark | contextual | Ogham script only. |
| U+200E–U+200F | Left-to-Right / Right-to-Left Mark | contextual | Legitimate bidirectional text layout. |
| U+061C | Arabic Letter Mark | contextual | Arabic text layout. |
| U+202A–U+202C | Directional Embedding / Pop | contextual | Legacy bidirectional embedding controls. |
| U+202D–U+202E | Directional Override (LRO/RLO) | suspicious | Trojan Source attack vector (CVE-2021-42574) — almost always malicious in code. |
| U+2066–U+2069 | Directional Isolate | contextual | Modern bidirectional isolation controls. |
| U+00AD | Soft Hyphen | suspicious | Invisible unless the line wraps at it. |
| U+2028 | Line Separator | suspicious | Breaks JavaScript string literals; invisible in most editors. |
| U+2029 | Paragraph Separator | suspicious | Same risks as Line Separator. |
| U+FE00–U+FE0F | Variation Selector | contextual | VS15/VS16 pick text vs emoji presentation; also a known steganography vector. |
| U+E0100–U+E01EF | Variation Selector Supplement | contextual | CJK ideographic variation; steganography vector. |
| U+E0000–U+E007F | Unicode Tag Character | suspicious | Legitimate only in emoji subdivision flags (🏴); arbitrary tags hide invisible ASCII payloads used in prompt-injection attacks. |
| U+115F–U+1160 | Hangul Choseong/Jungseong Filler | suspicious | Korean jamo composition; abused for blank text. |
| U+3164 | Hangul Filler | suspicious | Commonly abused for invisible usernames. |
| U+FFA0 | Halfwidth Hangul Filler | suspicious | Same abuse pattern as Hangul Filler. |
| U+2800 | Braille Pattern Blank | contextual | Legitimate Braille; abused as invisible text elsewhere. |
| U+FFFC | Object Replacement Character | suspicious | Placeholder for embedded objects; abused for blank nicknames. |
| U+FFF9–U+FFFB | Interlinear Annotation Control | suspicious | Ruby-text plumbing; should not appear in plain text. |
| U+206A–U+206F | Deprecated Format Control | suspicious | Deprecated shaping/digit-shape controls. |
| U+0000 | Null | suspicious | Should never appear in text. |
| U+000B–U+000C | Vertical Tab / Form Feed | suspicious | Legacy control characters. |
Checking whether text came from an AI tool? Try the AI watermark checker, or identify any visible symbol with the symbol analyzer.