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.

The family emoji measured four ways: 1 character you see, 5 code points, 8 UTF-16 units and 18 UTF-8 bytes.
The same text, four different lengths.
The four measurements
MeasureWhat it counts
Graphemes (characters you see)What a reader perceives as one character, even when it is built from several pieces.
Code pointsEach Unicode character separately, including invisible joiners and combining marks.
UTF-16 unitsThe storage unit used inside JavaScript, Java, Windows and many apps. Characters above U+FFFF take two.
UTF-8 bytesThe 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.

Ten texts, four lengths each
TextWhat it isGraphemesCode pointsUTF-16UTF-8 bytes
LunaPlain Latin letters4444
Zoëë as one character (U+00EB)3334
Zoëe + combining diaeresis (U+0308)3445
𝓛𝓾𝓷𝓪Bold cursive letters (Mathematical Alphanumeric Symbols)44816
꧁Luna꧂Name in a Javanese-punctuation frame66610
Luna🔥Name + one emoji5568
👍🏽Emoji + skin-tone modifier1248
🇯🇵Flag (two regional indicator letters)1248
👨‍👩‍👧Family emoji (three emoji joined by zero-width joiners)15818
ليلىArabic letters4448

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

One visible character, five code points
Code pointNameUTF-16Bytes
U+1F468Man24
U+200DZero Width Joiner13
U+1F469Woman24
U+200DZero Width Joiner13
U+1F467Girl24

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:

  1. Type a plain name up to the limit and note the number.
  2. Replace one letter with a styled letter (for example from the cursive generator).
  3. 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.
  4. 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

Next Step

Paste your own name to see all four counts, character by character.