| Zero-width space | U+200B | Invisible word break, the classic fingerprinting carrier | Removed |
| Zero-width non-joiner and joiner | U+200C, U+200D | Needed inside emoji sequences and some scripts, otherwise invisible padding | Removed when free-floating, kept as glue |
| Word joiner | U+2060 | Invisible, prevents a line break | Removed |
| Byte order mark | U+FEFF | Leaks from files into pasted text | Removed |
| Soft hyphen | U+00AD | Invisible unless a line breaks there | Removed |
| Directional marks and overrides | U+200E, U+200F, U+202A to U+202E, U+2066 to U+2069 | Can reorder or hide text; used in filename spoofing | Removed |
| Variation selectors | U+FE00 to U+FE0F, U+E0100 to U+E01EF | Glyph selectors, meaningful after emoji and CJK, otherwise invisible | Kept after a base, removed alone |
| Unicode tag characters | U+E0000 to U+E007F | Invisible ASCII look-alikes used to smuggle text past human readers | Removed except inside flag sequences |
| Hangul and Khmer fillers, Mongolian selectors | U+115F, U+1160, U+3164, U+17B4, U+180B to U+180F | Invisible unless next to their own script | Kept in context, removed alone |
| Non-breaking and typographic spaces | U+00A0, U+2000 to U+200A, U+202F, U+205F, U+3000 | Look like spaces, break search and matching | Replaced with a normal space |
| Look-alike letters | Cyrillic а е о р с у х, Greek ο α, full-width A to z | Words that look right but do not match | Replaced with the Latin letter (option) |