This page finds U+200C ZERO WIDTH NON-JOINER. The sample hides two in an innocent-looking word — a classic text-watermarking trick. Everything runs in your browser — nothing is uploaded.
The opposite of the zero-width joiner: it prevents neighbouring characters from connecting. In Persian it's an everyday, essential character (the "half-space", نیمفاصله) typed with its own key. Outside such scripts it's invisible and almost always unintentional.
Persian, Kurdish and some Indic text (legitimately); keyboard layouts where it sits next to common keys; and deliberately — ZWNJ is a favourite for fingerprinting or watermarking text because it survives copy-paste and is undetectable by eye.
The same things every zero-width character breaks: string equality, deduplication, search, database keys, and code — interpreters reject it with "invalid character" errors pointing at a clean-looking line. Two visually identical usernames can differ only by a ZWNJ.
VS Code: regex-search \u200c. Command line: grep -rP '\x{200C}' . — or paste text above; each ZWNJ is flagged. Same caveat as the joiner: if the text is Persian or another connecting script, those ZWNJs belong there.
Guides for the common cleanup jobs — what the source puts into your text, exactly what it breaks, and the tool preloaded with a demonstration:
AI-generated text · Text copied from Word / Google Docs · Text copied from a PDF · Pasted code that won’t run · CSV & spreadsheet data · Invisible watermarks · Many files at once (batch)
Dedicated pages for the usual suspects — what each one is, where it sneaks in from, the exact errors it causes, and how to find it in your editor:
Zero-width space (U+200B) · Non-breaking space (U+00A0) · Byte order mark (BOM) (U+FEFF) · Soft hyphen (U+00AD) · Smart quotes · Em dash (U+2014) · Narrow no-break space (U+202F) · Ideographic space (U+3000) · Zero-width joiner (U+200D) · Zero-width non-joiner (U+200C) · Word joiner (U+2060) · Right-to-left override (U+202E) · Left-to-right mark (U+200E) · Line separator (U+2028) · Variation selector-16 (U+FE0F) · Object replacement character (U+FFFC) · Hangul filler (U+3164) · Braille pattern blank (U+2800) · Ligatures · Minus sign (U+2212)
Страницы на русском — те же инструменты с переведёнными правилами и примерами под задачу:
Невидимые символы в тексте · Убрать невидимые символы · Почистить текст нейросети · Неразрывные пробелы в числах · Текст из Word · Код не запускается