← Unicode reference

Zero-Width Joiner — U+200D

The invisible glue of modern text: the character that welds separate emoji into families and tells connected scripts to keep holding hands.

Verified properties

Official Unicode nameZERO WIDTH JOINER
CodepointU+200D (decimal 8205)
General categoryFormat (Cf)
White_Space propertyNo
Default ignorableYes
Counts as alphabeticNo
Survives whitespace trimmingYes
Size in UTF-83 bytes
Group on this siteTruly invisible

All properties above come straight from the Unicode database at build time. The joiner's default-ignorable status — the reason validators strip it — is verified on every publish.

Two jobs, one invisible character

The Zero-Width Joiner started in connected scripts like Arabic and Devanagari, where letters change shape depending on their neighbours. Placed between two characters, it requests the joined form even where joining would not normally happen. Then emoji gave it a second, far more famous career: sequences. The family emoji is not one codepoint — it is person, ZWJ, person, ZWJ, child. The rainbow flag is flag, ZWJ, rainbow. When a platform supports the sequence, you see one fused glyph; when it does not, the seams show and the parts display separately.

What that means in practice

Because the ZWJ hides inside so many emoji, it is one of the most common invisible characters you will ever copy without knowing it. A caption counted «too long» with visibly few characters often owes the difference to ZWJ sequences — every joiner is a real character costing 3 bytes. Paste any emoji-rich text into the test area below and the joiners appear as tags; that alone explains many mysterious length limits.

As a blank character, use with care

The table shows why the ZWJ is a poor choice for blank names: it is default-ignorable, not alphabetic, and validators strip it freely. Its power is contextual — between the right neighbours it changes rendering; alone it is simply ignored. For a name that reads as empty, use the Hangul Filler; for hiding a break-point inside text, the Zero-Width Space. Keep the ZWJ for what only it can do — and for understanding why your emoji sometimes fall apart in transit. In code, the escape is "\u200D"; in HTML, ‍.

Try it

Paste a family emoji or any emoji sequence below and count the U+200D tags that appear between its parts — the invisible welds, made visible.

0 characters