Four ways to count the same text
Computers store text as numbers, and there is more than one sensible way to count those numbers. Apps and games pick one — usually without telling you — so the same name can fit in one place and be “too long” in another.

| Measure | What it counts |
|---|---|
| Graphemes (characters you see) | What a reader perceives as one character, even when it is built from several pieces. |
| Code points | Each Unicode character separately, including invisible joiners and combining marks. |
| UTF-16 units | The storage unit used inside JavaScript, Java, Windows and many apps. Characters above U+FFFF take two. |
| UTF-8 bytes | The size when stored or sent as UTF-8, the web’s usual encoding: 1 to 4 bytes per code point. |
Tested examples
Every number below was produced by code, not typed by hand: graphemes with Intl.Segmenter in Node.js 22.22.2 (ICU 78.2, Unicode 17.0), the other counts from the encoded text, cross-checked in Python. Different software versions can occasionally disagree on grapheme boundaries for complex scripts.
| Text | What it is | Graphemes | Code points | UTF-16 | UTF-8 bytes |
|---|---|---|---|---|---|
| Luna | Plain Latin letters | 4 | 4 | 4 | 4 |
| Zoë | ë as one character (U+00EB) | 3 | 3 | 3 | 4 |
| Zoë | e + combining diaeresis (U+0308) | 3 | 4 | 4 | 5 |
| 𝓛𝓾𝓷𝓪 | Bold cursive letters (Mathematical Alphanumeric Symbols) | 4 | 4 | 8 | 16 |
| ꧁Luna꧂ | Name in a Javanese-punctuation frame | 6 | 6 | 6 | 10 |
| Luna🔥 | Name + one emoji | 5 | 5 | 6 | 8 |
| 👍🏽 | Emoji + skin-tone modifier | 1 | 2 | 4 | 8 |
| 🇯🇵 | Flag (two regional indicator letters) | 1 | 2 | 4 | 8 |
| 👨👩👧 | Family emoji (three emoji joined by zero-width joiners) | 1 | 5 | 8 | 18 |
| ليلى | Arabic letters | 4 | 4 | 4 | 8 |
Graphemes: what you actually see
Unicode Standard Annex #29 defines extended grapheme clusters — the user-perceived characters. A letter with a combining accent, an emoji with a skin tone, a flag made of two regional-indicator letters and a family emoji joined with zero-width joiners are each one grapheme.
Inside the family emoji
| Code point | Name | UTF-16 | Bytes |
|---|---|---|---|
| U+1F468 | Man | 2 | 4 |
| U+200D | Zero Width Joiner | 1 | 3 |
| U+1F469 | Woman | 2 | 4 |
| U+200D | Zero Width Joiner | 1 | 3 |
| U+1F467 | Girl | 2 | 4 |
Code points: the Unicode numbers
A code point is a character’s number in Unicode, written U+ followed by hexadecimal digits. “ë” can be written as one code point (U+00EB) or as “e” plus U+0308 COMBINING DIAERESIS. Both look identical — which is why two names that look the same can count differently, and why some apps normalize text first.
UTF-16: why styled letters count double
UTF-16 stores code points up to U+FFFF in one 16-bit unit and everything above in two (a surrogate pair). The bold, cursive and gothic letters on NameFonts mostly come from the Mathematical Alphanumeric Symbols block (U+1D400–U+1D7FF), and most emoji are also above U+FFFF — so each takes two units. The nine new emoji in Unicode 18.0 are no exception. In JavaScript, "𝓛".length is 2.
UTF-8: bytes on disk and on the wire
UTF-8 uses 1 byte for ASCII letters, 2 bytes for most Latin accents, Greek, Cyrillic, Arabic and Hebrew, 3 bytes for most other characters up to U+FFFF (including CJK and many symbols) and 4 bytes above that. Databases and network limits are often expressed in bytes.
Which one does my app use?
We do not list limits for specific apps or games: they are rarely documented and they change. You can find out which unit an app counts with a quick test:
- Type a plain name up to the limit and note the number.
- Replace one letter with a styled letter (for example from the cursive generator).
- If the name now counts one more, the app counts UTF-16 units; if the count stays the same, it counts graphemes or code points.
- Try “Zoë” written both ways (from the table above) to tell graphemes from code points.
Frequently Asked Questions
Why does my name count as more characters than I can see?
Some visible characters are made of several code points, and characters above U+FFFF use two UTF-16 units. Apps that count code points or UTF-16 units report a bigger number than what you see.
Is a grapheme the same as a letter?
Not always. A grapheme is what a reader sees as one character. For Latin text it is usually one letter, but an emoji sequence or a letter with combining marks is also one grapheme.
Sources
- Unicode Standard Annex #29: Unicode Text Segmentation — extended grapheme clusters
- The Unicode Standard, Chapter 3 (Conformance): encoding forms — UTF-8, UTF-16 and code points
- MDN: Intl.Segmenter — the API used for the grapheme counts
Paste your own name to see all four counts, character by character.


