Small Utility Lab

CHARACTER COUNTS, LOCALLY

Count characters with Unicode details.

Count grapheme clusters, Unicode code points, and UTF-16 code units, with separate totals for text with and without whitespace.

Up to 100,000 UTF-16 code units. Input stays in this browser.

Each row shows inclusive / whitespace-excluded counts.

Counts will appear here.

What each count means

Grapheme clusters approximate user-perceived characters: a base letter with a combining accent can be one cluster, and a joined emoji sequence can also be one. Unicode code points count those underlying Unicode values. JavaScript string length counts UTF-16 code units, so a supplementary character such as 😀 uses two code units. These measures answer different questions and can differ for the same text.

The inclusive column counts spaces, tabs, line breaks, and other whitespace. The second number excludes whitespace matched by JavaScript's Unicode-aware \s expression. For the sample “Café 👩‍💻” followed by a line break, grapheme counts include the accent as part of “é” and the joined emoji as one cluster. Grapheme results use Intl.Segmenter; browsers without it receive an explicit support message. Page content updated November 3, 2026.

Good to know

Why can a visible character count as multiple code points?

Some displayed characters use a base code point plus combining marks; emoji sequences can also join several code points into one grapheme cluster.

Why is JavaScript string length larger for some emoji?

JavaScript string length measures UTF-16 code units. A character outside the Basic Multilingual Plane uses a surrogate pair, which is two code units.

Does the excluded count omit newlines?

Yes. The excluded totals omit spaces, tabs, line breaks, and other whitespace matched by JavaScript's Unicode-aware whitespace expression.

Is my text sent anywhere?

No. Counting runs in this browser tab and the page does not upload or save your text.

Is it free?

Yes, during beta. Optional usage-credit plans are coming soon. Payments are not available and no credits are required.

Sources

The count labels follow JavaScript string-length behavior and the grapheme segmentation API. Source pages checked November 3, 2026.

How it works

1. Paste or type text. 2. Review grapheme, code point, and UTF-16 counts, including and excluding whitespace. 3. Text stays in this browser tab.

Good to know

What is a grapheme cluster?

A grapheme cluster is a user-perceived text character, which can contain multiple Unicode code points such as a letter and combining accent.

Why are the counts different?

JavaScript string length counts UTF-16 code units; code points combine surrogate pairs, while grapheme clusters can combine multiple code points into one displayed character.

What does excluding whitespace mean?

The whitespace-excluded totals omit spaces, tabs, line breaks, and other whitespace code points. The inclusive totals keep them.

Is my text uploaded?

No. Counting happens in this browser tab. The page does not upload or save the text.

Is it free?

Yes, during beta. Optional usage-credit plans are coming soon. Payments are not available and no credits are required.