
Prevents ligature/joining. Required in Arabic, Persian and Indic scripts.
joinercontext-dependentTwo invisible characters that control whether the glyphs around them join: one forces a connection, the other prevents one. They are zero-width, and they carry meaning.
From emoji, where a sequence of separate pictures is bound into a single one, and from Arabic, Persian, Urdu and the Indic scripts, where joining behaviour is part of spelling.
In Persian, Urdu, Arabic and the Indic scripts this character is spelling. It separates letters that would otherwise join, and removing it produces a misspelled word rather than a cleaner one.
TraceFree PRO detects the surrounding script and holds back. That check is not a courtesy; it is the reason the program can default to removing invisible characters at all.
| Preset | Action |
|---|---|
conservative | asked about |
default | removed |
report-only | asked about |
strict | removed |
Context guards can only ever make a cleanup gentler, never sharper. A rule saying “always remove” does not override them.
In TraceFree PRO, turn on the clipboard watcher and copy the text. On the command line:
tracefree clean --backup document.txt
pbpaste | tracefree clean | pbcopyReport without changing anything — exit code 1 on findings, so it works in CI:
tracefree check -r ./docsThis page never prints the character itself, only ways of writing it. A page about invisible characters that contained invisible characters would be unreviewable — and that is the problem the program exists to solve.
| Notation | Value |
|---|---|
| Unicode | U+200C |
| Rust | \u{200C} |
| JavaScript, Python | \u200C |
| HTML | ‌ ‌ |
| Regex (PCRE, Rust) | \x{200C} |
Paste anything into the browser demo and see what is in it. Same engine as the app, running entirely on your device — nothing is uploaded.

