How many characters is an emoji?
Paste an emoji and compare. 👍 is 1 visible character, 1 code point, 2 UTF-16 units and 4 UTF-8 bytes. 👨👩👧 joins three people with zero-width joiners: 1 visible, 5 code points, 8 UTF-16 units, 18 bytes. Flags 🇰🇷 are two regional-indicator code points.
This page counts
0
0Characters
0No spaces
0Words
0Lines
0Paragraphs
0UTF-8 bytes
Technical details — what was counted
| Graphemes — visible characters | 0 |
| Unicode code points — Python len() | 0 |
| UTF-16 code units — JavaScript .length | 0 |
| UTF-8 bytes — web, DB, payloads | 0 |
| Korean SMS (EUC-KR-style) bytes, approx. | 0 |
| Whitespace (spaces, line breaks, tabs) | 0 |
| Hangul syllables | 0 |
| Reading time (230 wpm) | 0 |
| Reading time, Korean (500 syllables/min) | 0 |
Who counts what
| System | 👍 counts as |
|---|---|
| This tool ‘characters’ | 1 |
| X (Twitter) | 2 (weighted) |
| JavaScript .length / many web forms | 2 |
| Python len() | 1 |
| UTF-8 storage | 4 bytes |
| SMS | forces UCS-2 (70-char messages) |
FAQ
Why does my form say my emoji is 2 characters?
The form likely uses JavaScript .length (UTF-16 units).
Why do skin tones add length?
A skin tone is a separate modifier code point attached to the base emoji.
Do emoji work in SMS?
They force UCS-2 encoding, cutting messages to 70 characters; Korean SMS may not support them.
More counters
Character counterCharacter limits by platformTwitter (X) character counterInstagram caption character counterYouTube title character counterLinkedIn post character counterSMS character & segment counterMeta description length checkerTitle tag length checkerUTF-8 byte counterWord counterLine counterReading time calculator