Grapheme clusters
The main total uses Intl.Segmenter with grapheme granularity. A base letter plus a combining accent, a flag, or a joined family emoji can contain several code points while appearing as one character.
Unicode text analysis
Count user-perceived characters as you type, then compare words, lines, code points, UTF-16 units, and UTF-8 bytes.
01 / Input
Line breaks and whitespace count as characters. The main total uses extended grapheme clusters when the browser supports them.
Compares the target with the main character total.
Ready. Enter text to see live totals.
02 / Counts
03 / Method
The main total uses Intl.Segmenter with grapheme granularity. A base letter plus a combining accent, a flag, or a joined family emoji can contain several code points while appearing as one character.
Code points count Unicode values. UTF-16 units report JavaScript string length, so many emoji occupy two units. Neither measure always matches what a reader sees.
Word totals use the browser's Unicode word segmenter when available. Line totals treat CRLF as one break and include empty or trailing lines once text is present.
Intl.Segmenter is unavailable, character totals fall back to Unicode code points and the status identifies that mode. Complex emoji and combining sequences can then count higher than expected.TextEncoder. An unavailable encoder is reported instead of silently substituting another unit.