๐Ÿ› ๏ธ Technical & Developer

What Are ZWJ Sequences? How Emoji Combine

The Invisible Character Behind Complex EmojiEmoji
A Japanese word (็ตตๆ–‡ๅญ—) meaning 'picture character' โ€” small graphical symbols used in digital communication to express ideas, emotions, and objects.

Have you ever wondered how ๐Ÿ‘ฉโ€๐Ÿ’ป (woman technologist) is a single emoji, yet it's made of three parts? The answer is the Zero Width JoinerZero Width Joiner (ZWJ)
An invisible Unicode character (U+200D) used to join multiple emoji into a single composite emoji, such as combining people and objects into profession emoji.
(ZWJ) โ€” an invisible UnicodeUnicode
Universal character encoding standard that assigns a unique number to every character across all writing systems and symbol sets, including emoji.
character (U+200D) that glues emoji together.

A ZWJ sequence works like this:

๐Ÿ‘ฉ (U+1F469) + ZWJ (U+200D) + ๐Ÿ’ป (U+1F4BB) = ๐Ÿ‘ฉโ€๐Ÿ’ป

The "zero width" means the character takes up no visual space โ€” you can't see it, but the rendering engine knows to combine the surrounding emoji into one glyph.

How ZWJ Sequences Are Built

ZWJ sequences follow a simple pattern: base emoji + ZWJ + modifier emoji, repeatable. The family emoji demonstrates this with multiple joins:

๐Ÿ‘จ + ZWJ + ๐Ÿ‘ฉ + ZWJ + ๐Ÿ‘ง + ZWJ + ๐Ÿ‘ฆ = ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ

That's 7 code points (4 emoji + 3 ZWJ characters) rendered as a single family glyph.

Common ZWJ Categories

Category Example Sequence
Professions ๐Ÿ‘ฉโ€๐Ÿš€ person + ZWJ + rocket
Families ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง man + ZWJ + woman + ZWJ + girl
Couples ๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ woman + ZWJ + heart + ZWJ + man
Activities ๐Ÿƒโ€โ™€๏ธ runner + ZWJ + female sign
Hair styles ๐Ÿ‘ฉโ€๐Ÿฆฐ woman + ZWJ + red hair

The Graceful Fallback

What happens when a platform doesn't support a particular ZWJ sequence? The emoji simply appear side by side. If your device doesn't recognize ๐Ÿ‘ฉโ€๐Ÿ’ป, it shows ๐Ÿ‘ฉ๐Ÿ’ป โ€” two separate emoji. This is by design. It means new ZWJ sequences can be proposed without breaking older devices.

Why ZWJ Instead of New Code Points?

Assigning a unique code pointCode Point
A unique numerical value assigned to each character in the Unicode standard, written in the format U+XXXX (e.g., U+1F600 for ๐Ÿ˜€).
to every possible combination of people, professions, skin tones, and genders would require millions of entries. ZWJ sequences are compositional โ€” they build complex emoji from existing simple ones. This is more efficient and allows platforms to add new combinations without waiting for Unicode approval of new code points.

Counting Characters with ZWJ

ZWJ sequences are a common source of bugs in software. JavaScript's .length property counts UTF-16UTF-16
A variable-width Unicode encoding that uses 2 or 4 bytes per character, used internally by JavaScript, Java, and Windows.
code units, not visual characters:

'๐Ÿ‘ฉโ€๐Ÿ’ป'.length  // Returns 5, not 1!
// 0xD83D 0xDC69 (๐Ÿ‘ฉ) + 0x200D (ZWJ) + 0xD83D 0xDCBB (๐Ÿ’ป)

To correctly count grapheme clusters, use Intl.Segmenter:

[...new Intl.Segmenter().segment('๐Ÿ‘ฉโ€๐Ÿ’ป')].length  // Returns 1

Try It Yourself

Use our Sequence Analyzer to paste any emoji and see its complete code point breakdown โ€” ZWJ characters, variation selectors, and all.

Related Tools

๐Ÿ” Sequence Analyzer Sequence Analyzer
Decode ZWJ sequences, skin tone modifiers, keycap sequences, and flag pairs into individual components.

Glossary Terms

Code Point Code Point
A unique numerical value assigned to each character in the Unicode standard, written in the format U+XXXX (e.g., U+1F600 for ๐Ÿ˜€).
Emoji Emoji
A Japanese word (็ตตๆ–‡ๅญ—) meaning 'picture character' โ€” small graphical symbols used in digital communication to express ideas, emotions, and objects.
UTF-16 UTF-16
A variable-width Unicode encoding that uses 2 or 4 bytes per character, used internally by JavaScript, Java, and Windows.
Unicode Unicode
Universal character encoding standard that assigns a unique number to every character across all writing systems and symbol sets, including emoji.
Zero Width Joiner (ZWJ) Zero Width Joiner (ZWJ)
An invisible Unicode character (U+200D) used to join multiple emoji into a single composite emoji, such as combining people and objects into profession emoji.

Related Stories