🔧 Interactive Tools

Emoji Sequence Analyzer: Decode ZWJ, Skin Tones, and Keycaps

What Is an Emoji Sequence?

Many emojis are not single characters — they are sequences of multiple Unicode code points that combine to form one visible glyph. When you paste 👩‍💻 into a text editor, what looks like one emoji is actually three separate code points joined together. Understanding this structure is essential for developers, designers, and anyone curious about how emoji actually work.

The EmojiFYI Sequence Analyzer takes any emoji or emoji sequence and breaks it apart, showing you each component code point, its name, and the type of sequence being used.

Types of Emoji Sequences

ZWJ零宽连接符(ZWJ) (ZWJ)
一个不可见的Unicode字符(U+200D),用于将多个表情符号合并为单一复合表情符号,例如将人物与物体组合成职业表情符号。
Sequences

ZWJ stands for Zero Width Joiner (U+200D). It is an invisible character that tells rendering engines to combine the emojis on either side of it into a single glyph.

Example: 👩‍💻 Woman Technologist is composed of: 1. 👩 Woman (U+1F469) 2. U+200D (Zero Width Joiner) 3. 💻 Laptop (U+1F4BB)

The ZWJ signals that these should be fused into a single image. On platforms that support it, you see 👩‍💻. On platforms that do not, you see the three components side by side: 👩💻.

More complex ZWJ sequences chain multiple emojis together:

👨‍👩‍👧‍👦 Family: Man, Woman, Girl, Boy is built from: - 👨 Man + ZWJ + 👩 Woman + ZWJ + 👧 Girl + ZWJ + 👦 Boy

That is seven code points producing one emoji.

Skin Tone Modifier Sequences

The Unicode Standard defines five skin tone modifiers (based on the Fitzpatrick scale):

Modifier Code Point Sample
Light U+1F3FB 👍🏻
Medium-Light U+1F3FC 👍🏼
Medium U+1F3FD 👍🏽
Medium-Dark U+1F3FE 👍🏾
Dark U+1F3FF 👍🏿

When you pick a skin tone for 👍 Thumbs Up, the result is a two-code-point sequence: the base emoji followed immediately by a modifier. The Sequence Analyzer shows both components with their code points.

Some ZWJ sequences combine skin tones on multiple people. 👫🏽 Couple holding hands with medium skin tone uses skin tone modifiers on both figures inside the ZWJ chain.

Keycap Sequences

Keycap emojis like 1️⃣ 2️⃣ #️⃣ *️⃣ are three-code-point sequences:

  1. The base character (a digit, #, or *)
  2. U+FE0F (Variation Selector-16, which signals emoji presentation)
  3. U+20E3 (Combining Enclosing Keycap)

For example, 1️⃣ is: - U+0031 (Digit One: 1) - U+FE0F (Variation Selector-16) - U+20E3 (Combining Enclosing Keycap)

This is why keycap emojis sometimes appear as plain text digits in environments that do not support full emoji rendering — the base character is just the number.

Flag Sequences

Country flag emojis (🇺🇸, 🇯🇵, 🇰🇷) use Regional Indicator Symbols. Each flag is two code points: one for each letter of the ISO 3166-1 alpha-2 country code.

🇺🇸 (United States) is: - 🇺 Regional Indicator U (U+1F1FA) - 🇸 Regional Indicator S (U+1F1F8)

The Sequence Analyzer identifies the country code and tells you which country the flag represents.

Subdivision flags (🏴󠁧󠁢󠁥󠁮󠁧󠁿 England) use tag sequences — a different, more complex mechanism involving invisible tag characters (U+E0000 range).

How to Use the Sequence Analyzer

Step 1: Open the Tool

Navigate to /tools/sequence-analyzer/.

Step 2: Paste or Type an Emoji

Click the input field and paste an emoji. You can paste a single emoji, a ZWJ sequence, or even a string containing multiple emojis — the analyzer processes each one.

Good sources for complex emoji sequences to analyze: - Copy a family emoji (👨‍👩‍👦) from any messaging app - Copy a profession emoji (🧑‍🚀 Astronaut, 👩‍🎤 Woman Singer) - Copy a couple emoji (💑, 👫) - Type a keycap: 0️⃣ 1️⃣ #️⃣

Step 3: Read the Breakdown

The analyzer displays a table showing:

  • Position — the order of each code point in the sequence
  • Code Point — the hexadecimal Unicode value (e.g., U+1F469)
  • Character — the rendered glyph or description for invisible characters
  • Name — the official Unicode name
  • Type — whether it is a base emoji, ZWJ, modifier, variation selector, or other component

For ZWJ sequences, the tool also names the full sequence (e.g., "Woman Technologist") and links to the emoji detail page.

Step 4: Explore Component Emojis

Clicking any component in the breakdown opens its own emoji detail page. This is useful for understanding which base emojis combine to form a ZWJ sequence, and whether those bases are available as standalone emojis on all platforms.

Practical Uses

For Developers

  • Verify that a string contains exactly the code points you expect before storing it in a database
  • Debug rendering issues where an emoji displays as multiple separate characters
  • Understand why emoji.length in JavaScript returns unexpected values for ZWJ sequences (each code point counts separately in UTF-16UTF-16
    每字符使用2或4个字节的可变长度Unicode编码方式,被JavaScript、Java和Windows内部使用。
    )

For Content Creators

  • Confirm that a complex family emoji is a recognized Unicode sequence rather than a platform-specific hack
  • Check which component emojis make up a sequence before using it in a context where rendering support may be limited

For the Curious

  • Discover that 🏳️‍🌈 Rainbow Flag is built from 🏳️ White Flag + ZWJ + 🌈 Rainbow
  • See that 🧑‍🤝‍🧑 People Holding Hands chains together three emojis
  • Understand why 🇨🇳 and 🇹🇼 are just pairs of invisible regional indicator letters

Combining the Analyzer with Other Tools

The Sequence Analyzer works well alongside the Compare tool. After breaking down a ZWJ sequence into its parts, you can check each component in the Compare tool to see how platforms render the base emojis — giving insight into why the combined sequence might look different on Samsung versus Apple.

For a deeper look at ZWJ sequences in general, see the EmojiFYI glossary article on ZWJ Sequences.

相关工具

🔀 平台比较 平台比较
比较表情符号在 Apple、Google、Samsung、Microsoft 等平台上的渲染效果,并排查看视觉差异。
🔍 序列分析器 序列分析器
将 ZWJ 序列、肤色修饰符、键帽序列和旗帜对解析为独立组成部分。

术语表词条

Unicode标准 Unicode标准
由Unicode联盟维护的完整字符编码体系,定义字符、属性、算法和编码形式。
UTF-16 UTF-16
每字符使用2或4个字节的可变长度Unicode编码方式,被JavaScript、Java和Windows内部使用。
变体选择符 (VS) 变体选择符 (VS)
用于控制字符以文本形式(单色)还是表情符号形式(彩色)显示的Unicode字符。VS-15(U+FE0E)指定文本样式,VS-16(U+FE0F)指定表情符号样式。
地区标志符号 (RI) 地区标志符号 (RI)
成对使用时可组合成国旗表情符号的Unicode字符(U+1F1E6至U+1F1FF),依据ISO 3166-1 alpha-2代码对应各国国旗。
码位 码位
Unicode标准中分配给每个字符的唯一数值,以U+XXXX格式表示(例如😀对应U+1F600)。
统一码 统一码
为所有书写系统和符号集(包括表情符号)中的每个字符分配唯一编号的通用字符编码标准。
肤色修饰符 肤色修饰符
基于菲茨帕特里克色度分级的五个Unicode修饰字符(U+1F3FB至U+1F3FF),用于改变人物表情符号的肤色。
表情符号(Emoji) 表情符号(Emoji)
来自日语「絵文字」(えもじ),意为「图画文字」,是用于数字通信中表达想法、情感和事物的小型图形符号。
表情符号呈现 表情符号呈现
将字符渲染为彩色表情符号字形的默认显示方式,可通过字符本身属性或变体选择符-16触发。
表情符号序列 表情符号序列
由一个或多个Unicode码位按顺序组合,共同表示单个表情符号的字符集合。
零宽连接符(ZWJ) (ZWJ) 零宽连接符(ZWJ) (ZWJ)
一个不可见的Unicode字符(U+200D),用于将多个表情符号合并为单一复合表情符号,例如将人物与物体组合成职业表情符号。

相关故事