EmoArt
Post
Glossary

ZWJ (Zero Width Joiner) - what it is and how it works

Last updated: 2026-05-26·~4 min

This article takes about 4 minutes to read.

ZWJ is the invisible glue that turns separate emoji into compound characters like family groups and profession symbols.The Zero Width Joiner (U+200D) is a Unicode control character with no visible width. When placed between emoji, it tells the rendering engine to display them as a single combined glyph - if one exists.

Definition

Zero Width Joiner (ZWJ) is a non-printing character at Unicode codepoint U+200D. Originally designed for complex scripts like Arabic and Indic languages (where letter forms change based on adjacency), it was repurposed for emoji composition starting with Unicode 6.0.

In emoji context, ZWJ acts as a combinator: Emoji A + ZWJ + Emoji B = Combined Emoji (if supported). If the platform doesn't have a combined glyph, it gracefully degrades to showing A and B separately.

How ZWJ sequences work

A ZWJ sequence is a chain of emoji connected by ZWJ characters. The rendering engine processes the sequence left to right:

  1. Read the first emoji codepoint
  2. Encounter ZWJ (U+200D)
  3. Read the next emoji codepoint
  4. Check if a combined glyph exists for this pair
  5. If yes, render the combined glyph. If no, render both emoji separately
  6. Repeat for any additional ZWJ + emoji in the sequence

Common ZWJ sequence categories

Professions

Person + ZWJ + object = profession emoji:

  • 👩 + ZWJ + 💻 = 👩‍💻 (woman technologist)
  • 👨 + ZWJ + 🍳 = 👨‍🍳 (man cook)
  • 🧑 + ZWJ + 🚀 = 🧑‍🚀 (astronaut)

Families

Multiple person emoji joined by ZWJ:

  • 👨 + ZWJ + 👩 + ZWJ + 👧 = 👨‍👩‍👧 (family)
  • 👩 + ZWJ + 👩 + ZWJ + 👦 + ZWJ + 👦 = 👩‍👩‍👦‍👦 (family with two mothers and two sons)

Gender variations

Base emoji + ZWJ + gender sign:

  • 🧑‍🦰 = 🧑 + ZWJ + 🦰 (person with red hair)
  • 🏃‍♀️ = 🏃 + ZWJ + ♀️ (woman running)

Flags (subdivision)

Subdivision flags like 🏴󠁧󠁢󠁥󠁮󠁧󠁿 (England) use tag sequences rather than ZWJ, but the principle is similar - multiple invisible characters combine into one glyph.

Why ZWJ sequences break

CauseResultFix
Old OS / fontComponents shown separatelyUpdate the device
Text editor strips ZWJSequence breaks apartUse a Unicode-aware editor
Platform doesn't support the comboFallback to individual emojiUse well-established sequences
Character limit counts codepointsSequence uses more "characters" than expectedCount grapheme clusters instead

Character counting implications

A family emoji like 👨‍👩‍👧‍👦 is 7 codepoints (4 emoji + 3 ZWJ characters). Platforms that count codepoints (like Twitter's legacy counter) may charge you 7 characters for what looks like 1. Modern platforms count "grapheme clusters" instead, treating the whole sequence as 1 unit.

Practical tips for emoji art

  • Stick to widely-supported ZWJ sequences (professions, basic families)
  • Test on multiple platforms before using in bios or important posts
  • For maximum compatibility, prefer single-codepoint emoji over ZWJ sequences
  • When copy-pasting ZWJ sequences, use the emoji picker rather than text selection to avoid breaking the sequence

Related terms

  • Codepoint - the unique number assigned to each Unicode character

Was this article helpful?