TextWash

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.

Input

X-ray hover a highlight for details

Cleaned output copied ✓

Cleaning rules

What is U+200C (zero-width non-joiner)?

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.

Where it comes from

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.

What it breaks

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.

How to find it in your editor

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.