How to use Character Counter
- Paste Unicode text or open a local .txt or .md document.
- Compare grapheme, code-point, code-unit, category, and UTF-8 byte totals.
- Use the metric that matches the limit imposed by your editor, database, or protocol.
Supported behavior
Character Counter separates several meanings of “character” that ordinary counters often combine. Grapheme clusters approximate what a reader sees, Unicode code points identify encoded symbols, and UTF-16 code units reflect JavaScript string storage. The page also reports characters with and without whitespace, letters, numbers, whitespace, punctuation, an emoji approximation, and UTF-8 bytes. This distinction matters for emoji, flags, skin-tone sequences, and letters built from a base character plus combining marks: each may look like one symbol while occupying multiple code points or code units. Browser-supported Intl.Segmenter supplies grapheme boundaries, while Unicode property classes identify categories without assuming ASCII. Malformed surrogate input is handled without crashing. Everything you paste or open from a .txt or .md file stays in the current browser session and is not sent for counting. Use the byte figure for UTF-8 transport limits and the grapheme figure for reader-visible length, while recognizing that emoji classification is necessarily approximate.
- Emoji count is an approximation because the Unicode emoji repertoire and presentation rules evolve.
- Grapheme segmentation follows the capabilities and Unicode version of the current browser.
Examples
é 😀
Result: 3 graphemes; 4 code points; 5 UTF-16 units; 8 UTF-8 bytes
Room 42!
Result: 8 graphemes; 4 letters; 2 numbers; 1 whitespace; 1 punctuation
Common use cases
- Validate interface labels against visible-character limits.
- Explain why an emoji exceeds a UTF-16 database field allowance.
- Measure UTF-8 payload size for multilingual text.
Frequently asked questions
Why does 😀 use two UTF-16 units?
Its code point lies outside the basic multilingual plane, so UTF-16 represents it as a surrogate pair.
Does a combining accent count separately?
It counts as another code point, but a segmenter normally groups it with its base letter as one grapheme.
Are spaces included in every total?
The page shows both inclusive and whitespace-excluding totals, plus a separate whitespace count.
Which count should a social post limit use?
Use the platform’s documented unit; some enforce code points or custom weighted rules rather than graphemes.

