Take an emoji apart
Paste an emoji and see what it is really made of — every code point, byte and escape, named.
Unicode inspector
| Char | Code point | Decimal | UTF-8 | UTF-16 | Name |
|---|
Why one emoji is often several characters
👩🏽🚀 looks like a single thing and is 4 code points: a woman, a skin-tone modifier, an invisible joiner, and a rocket. Your keyboard shows 1 glyph; a database column, a length check and a substring all see the parts. That gap is behind most of the ways emoji go wrong in software.
- Zero-width joiner (U+200D). The invisible character that fuses neighbours into one picture. Cut a string between them and you get 2 unrelated emoji.
- Variation selector-16 (U+FE0F). Says "draw the one before me in color". Drop it and ❤️ can render as a black-and-white glyph instead.
- Skin-tone modifiers (U+1F3FB to U+1F3FF). Invisible on their own, and a different string from the base emoji even though it looks close.
- Surrogate pairs. Most emoji sit above U+FFFF, so in JavaScript, Java and C# each one costs 2 units of
.length. That is why a 20-character limit can reject 10 emoji.
Nothing you paste leaves the page
The names come from Unicode's own published data, and the work happens on your own device. Your text is never sent anywhere, which matters more here than on most tools: people paste real, broken strings into a thing like this to find out what went wrong. Privacy covers the rest of the site on the same terms.
The same emoji, counted
Emojery is what happens when an emoji stops being decoration and becomes an answer: the whole palette next to the Like button on the pages you already read, with a public count behind every pick.