UTF-8 Byte Counter
Type or paste text below. See its real UTF-8 byte length alongside character and visual (grapheme) count — the gap that silently breaks database columns and API limits whenever emoji, CJK, or accented text is involved. Nothing you type leaves this page.
Text
0
UTF-16 code units (.length)
0
Grapheme clusters (visual)
Byte-limit presets
MySQL utf8mb4 index (767 B) 0 / 767
MySQL utf8mb4 InnoDB index (3072 B) 0 / 3072
DynamoDB item (400 KB) 0 / 400000
Custom:
—
Char Code point UTF-8 bytes
Most "character counter" tools report .length in JavaScript, which counts UTF-16 code
units — not the same as byte size. A column or field limit is almost always byte-based (UTF-8), so
emoji and CJK characters (3–4 bytes each) can silently blow past a limit that looked fine on screen.
Note X/Twitter's "280 characters" is neither a byte count nor a raw code-point count — it uses a
weighted code-point scheme (most Latin characters count as 1, most CJK/wide characters count as 2)
that this tool does not attempt to replicate.
Grapheme (visual) count uses Intl.Segmenter where supported, falling back to a
code-point count in older browsers.