Tool guide
How to use the Character Counter
A single character count can be misleading because software systems measure text in different ways. This counter treats grapheme clusters as visible or user-perceived characters when Intl.Segmenter is available, while also reporting Unicode code points, JavaScript UTF-16 code units, and UTF-8 encoded bytes. Those totals are often identical for basic English text but can diverge for emoji, combining accents, flags, skin-tone modifiers, family sequences, historic scripts, and many characters outside the Basic Multilingual Plane.
People also use this tool for
People also use this character counter to check social media captions, biographies, usernames, page titles, meta descriptions, SMS drafts, product descriptions, advertisements, application answers, accessibility text, database fields, API payloads, form responses, and any writing governed by a visible-character, code-point, UTF-16, or byte limit.
What this tool is useful for
- Check captions, biographies, usernames, advertisements, forms, application answers, product descriptions, titles, metadata, database fields, API payloads, and other constrained text.
- Compare visible characters with Unicode code points, UTF-16 code units, and UTF-8 bytes when emoji or multilingual writing causes systems to disagree.
- Set any custom limit up to 10,000,000, choose its measurement method, include or exclude line breaks, and see the exact remaining or excess amount.
Practical example
The emoji 😀 usually appears as one visible character and one Unicode code point, but JavaScript string length reports two UTF-16 code units and UTF-8 encoding uses four bytes. A family emoji joined with zero-width joiners can appear as one grapheme cluster while containing several code points, many UTF-16 units, and still more UTF-8 bytes. The correct limit metric therefore depends on how the destination platform validates text.
Helpful tips
- Ask the receiving platform what it counts. Some limits use user-perceived characters, while others use code points, UTF-16 units, encoded bytes, or product-specific weighting.
- Spaces, tabs, nonbreaking spaces, and line breaks are all whitespace, but a platform may treat them differently. This tool reports regular spaces and total whitespace separately.
- Google search snippets are not governed by a universal character cutoff; layout width, query, device, and rewriting can affect display, so use counts as editing guidance rather than a ranking guarantee.
- SMS capacity depends on encoding and segmentation rules, not only the displayed character total. A message containing Unicode outside a supported GSM character set may use a different per-segment capacity.
- The fallback used when Intl.Segmenter is unavailable counts Unicode code points, which is better than raw UTF-16 length but may split a multi-code-point visible grapheme.
Related tools and next steps
Word Counter, Sentence Counter, Meta Description Length Checker, Reading Time Calculator, Text Tools
Common questions this tool can help answer
Common character count questions this tool can help answer
- How many visible characters are in this text?
- Do spaces and line breaks count?
- How many characters remain before my limit?
- Why can an emoji count differently in another system?
- What is the difference between code points and UTF-16 units?
- How many UTF-8 bytes does my text use?
- Will my title, caption, biography, or form answer fit?
Sources and methodology
The formulas, standards, and reference information on this page are checked against the authoritative sources below. External references open the original source.
- Unicode Standard Annex #29: Text segmentation
- WHATWG Encoding Standard: UTF-8
- MDN: Intl.Segmenter
- MDN: TextEncoder and UTF-8 bytes
Frequently asked questions
What does visible character mean?
The visible-character total counts grapheme clusters, which approximate user-perceived characters. One cluster may contain a base letter plus combining marks or several emoji code points joined into one displayed symbol.
What is a Unicode code point?
A code point is a numbered value in the Unicode codespace. JavaScript Array.from iterates strings by code point, but one user-perceived character can still contain several code points.
Why is JavaScript string length different?
JavaScript string length counts UTF-16 code units. Characters outside the Basic Multilingual Plane are represented by surrogate pairs and therefore use two UTF-16 units, while joined or combining sequences can use even more.
What are UTF-8 bytes?
UTF-8 is a variable-length encoding for Unicode. Basic ASCII characters use one byte, while other code points use multiple bytes. The tool uses TextEncoder when available to measure the encoded byte length.
How are emoji counted?
The visible total uses grapheme segmentation when the browser supports Intl.Segmenter. A single displayed emoji may consist of one code point, a surrogate pair, a base emoji plus a skin-tone modifier, two regional indicators, or a longer zero-width-joiner sequence.
Does the counter include spaces?
The main visible-character count includes spaces and other whitespace. A separate total removes all whitespace, and the structure section reports ordinary spaces and all whitespace characters independently.
Do line breaks count toward the custom limit?
They do by default. You can turn off Include line breaks in the custom limit when the destination ignores them. The general line and character statistics still describe the original text.
How does the custom limit work?
Enter a positive whole-number target, choose visible characters, characters without whitespace, Unicode code points, UTF-16 units, or UTF-8 bytes, and review the current count, remaining or excess amount, percentage used, and line-break setting.
Why can another website show a different count?
The website may use another Unicode version, segmentation library, normalization step, line-ending convention, encoding, special weighting rule, or limit metric. Its production validator controls whether the text is accepted.
Does this normalize accented characters?
No. The counter measures the entered string. A precomposed character such as é and a visually similar e followed by a combining accent can have the same grapheme count but different code-point, UTF-16, and byte totals.
Can I use this for SMS length?
It can show characters and bytes, but SMS segmentation depends on GSM character tables, extension characters, Unicode encoding, headers, and carrier behavior. Do not assume that a visible count of 160 always equals one SMS segment.
Can I use 60 characters for every page title or 160 for every meta description?
Those are common editorial guides, not universal Google display limits. Search results are influenced by rendered width, device, query, content, and Google's choice to rewrite a title or description.
Is pasted text uploaded?
The counter runs as a client-side component and calculates in the browser. It does not require an account or send the text to a counting backend, although your device, browser, extensions, clipboard, and network environment remain part of your privacy boundary.
https://wowwebtools.com/text-tools/character-counter
