Joins characters. Required inside emoji sequences and several 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.
Inside an emoji sequence, always. A family emoji is several separate people bound together by this character; take it out and the single picture becomes three. The same holds for professions, flags and skin-tone combinations.
It is equally required in several scripts, where it forces a ligature that spelling demands. TraceFree recognises both cases and does not touch the character in either.
| 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, turn on the clipboard watcher and copy the text — the finding appears with a before-and-after comparison of the affected lines. For files, a watched folder does the same, keeping a backup copy alongside.
This 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+200D |
| Rust | \u{200D} |
| JavaScript, Python | \u200D |
| HTML | ‍ ‍ |
| Regex (PCRE, Rust) | \x{200D} |