Zero-width non-joiner, U+200C

The opposite of the joiner: an invisible character that asks two neighbours not to be rendered as one, breaking a ligature or a connection that would otherwise form.

How it works

The non-joiner, e2 80 8c, is the mirror image: it tells the shaping engine not to form a ligature or connection it otherwise would. In Persian and Arabic, letters connect by default according to their position in a word, and the non-joiner forces the isolated or final form instead. That is not decoration. It distinguishes words, marks compound boundaries, and in Persian is part of standard orthography for plurals and verb prefixes. Devanagari and other Indic scripts use it to prevent a conjunct consonant from forming. In Latin text, by contrast, there is no default ligature to suppress in ordinary rendering, so the character does nothing visible and behaves exactly like a zero-width space: it breaks equality, search and indexing while showing nothing. The rule is therefore the same as for the joiner, and the same neighbour inspection decides it.

What it is legitimately for

Essential in Persian, Arabic and several Indic scripts, where it separates letters that would otherwise join and changes what the word says. In German typesetting it can prevent an unwanted ligature.

What it breaks

  • Removed from Persian text, words join that should not, and the meaning changes for a reader.
  • Left in Latin text, it is invisible ballast that breaks string comparison and search.

How to find it yourself

Look for e2 80 8c in a hex dump, and check the neighbours before deciding it is noise.

What Clipboard Sanitizer does

Removed only where it carries no meaning, using the same neighbour check as the joiner.

Questions

Why treat it differently from a zero-width space?

Because it does something. A zero-width space between two Latin letters is always noise; a non-joiner between two Persian letters is part of the word.