Grapheme Cluster Counter

The only truly accurate real-character counter for modern Unicode text

0

Grapheme Clusters
What you actually see

0

Code Points

0

UTF-16 Units
(JS string.length)

0

UTF-8 Bytes

About This Tool

The **Grapheme Cluster Counter** is the most accurate online tool for counting real, human-visible characters in Unicode text — including emojis, flags, skin tones, combining marks, and complex ZWJ sequences.

Most websites and programming languages use `string.length`, which counts UTF-16 code units — a method that has been broken for modern text since 2010. A single flag emoji returns 4, a family emoji returns 11–20, and an accented é returns 2. This tool fixes that.

We use the official **Unicode Standard Annex #29** via the browser’s built-in `Intl.Segmenter` API — the same engine used by Chrome, Firefox, Safari, and Edge for cursor movement, selection, and deletion. That means our count is identical to what your operating system and apps consider “one character”.

Unlike other counters, we show you *four* measurements side-by-side so you understand exactly what’s happening under the hood:

  • **Grapheme clusters** → What humans see (correct for UI, validation, limits)
  • **Code points** → Unicode’s atomic units
  • **UTF-16 units** → What JavaScript, Java, C#, and .NET see
  • **UTF-8 bytes** → What databases and network protocols see

This tool is 100% client-side. Your text never leaves your browser. No cookies, no analytics, no tracking — ever.

Built with love by AxelBase in 2025 for developers, writers, product managers, and anyone who has ever been confused by why `"".length === 20`.

How to Use

Using the Grapheme Cluster Counter is simple and instant:

  1. **Paste or type** any text into the box above — supports emojis, flags, skin tones, accents, Devanagari, Arabic, CJK, everything.
  2. Watch all four counters update **in real time** as you type.
  3. The **blue number** (grapheme clusters) is the correct “real character” count you should use for usernames, tweet limits, form validation, etc.
  4. Click **Copy Full Result** to get a formatted line with all four metrics.
  5. Share your exact text via the auto-generated link — it pre-fills the box for anyone you send it to.
Common Use Cases
  • Checking real character limits on platforms that use grapheme clusters (Twitter/X, Mastodon, Discord)
  • Validating username/display name length in apps
  • Debugging why a string is longer than expected in JavaScript/Python/Java/etc.
  • Teaching Unicode concepts to students and teammates
  • Settling arguments about how many characters are in

**Pro tip:** Bookmark a shared link with your test case — it works forever and stays private.

No installation. No account. No data collection. Just accurate counting.

Frequently Asked Questions

The default family emoji (without skin tones) is built from 7 code points: man + ZWJ + woman + ZWJ + girl + ZWJ + boy. Each person emoji uses 2 UTF-16 units, each ZWJ uses 1 → 4×2 + 3×1 = 11 units. This is correct per Unicode 15.1.

Yes, 100%. Everything happens in your browser. Nothing is sent anywhere. No cookies, no analytics, no server logs.

Most online counters still use `string.length` or outdated libraries. They are simply wrong for modern text. This tool uses the official Unicode standard via `Intl.Segmenter` — the same as modern browsers.

Use **grapheme clusters**. Twitter/X, Discord, Mastodon, and most modern platforms already do. It’s the only count that matches user expectation.

Yes! The tool is open-source (MIT license). Embed it, fork it, use it in products — completely free.