Text Tools
Character Counter
Compare grapheme clusters, code points, UTF-16 units, words, and lines.

Enter the values and review the result.
Three ways to measure text length
A grapheme cluster approximates one visible character. A Unicode code point identifies an encoded character value, while a JavaScript string stores UTF-16 code units. A family emoji can therefore be one grapheme cluster, seven code points, and eleven UTF-16 code units.
These labels make the measurement explicit so you can compare the result with the policy used by a form, platform, database, or programming interface.
Whitespace and line rules
The no-whitespace metric removes Unicode White_Space characters before grapheme counting. Line counting normalizes Windows CRLF and standalone CR endings to LF; a final line separator creates a final empty line.
Quick answers
What this calculator answers
- Characters: Counts Unicode grapheme clusters, not UTF-16 units.
- Technical units: Reports Unicode code points and UTF-16 code units separately.
- Whitespace: Excludes the complete Unicode White_Space property in the no-whitespace metric.
- Lines: Normalizes CRLF and CR while preserving a trailing empty line.
Transparency note
Accuracy and limitations
Calzivo tools are built for practical estimates, conversions, and checks. Some tools use standard formulas or simplified assumptions, and results can be affected by input accuracy, rounding, units, local rules, or changing official requirements.
Results depend on the values you enter and any simplified assumptions used by the tool. Verify important results before making decisions or submitting official information.
Reference check
Sources and references
These references provide background context for the topic. They do not replace official advice or documents for personal decisions.
- Unicode Text Segmentation (UAX #29)
Unicode Consortium
- Intl.Segmenter specification
Ecma International
- ECMAScript string and code-point processing
Ecma International
How to Use This Tool
Use these steps to enter the right inputs and interpret the result correctly.
Type or paste multiline text into the editor.
Compare visible grapheme clusters with code points and UTF-16 code units.
Review word and normalized line counts or copy the labeled metrics.
Related Tools
Character Counter compares text-length units; Word Counter focuses on document structure, segmentation, and reading-time estimates.
Word Counter
Analyze Unicode words, sentences, paragraphs, lines, characters, and rough reading time.
Case Converter
Apply four Unicode-aware case modes while preserving whitespace.
Slug Generator
Create NFC-normalized Unicode slugs without transliteration or ranking claims.
Meta Tag Generator
Escape user text into a basic HTML, Open Graph, and Twitter/X metadata block for review.
Keyword Density and Frequency Analyzer
Analyze pasted text for total words, selected-term frequency, matched-word coverage, and repeated terms.
Related Guides
Background reading and explanations related to Character Counter.
Frequently Asked Questions
Common questions about Character Counter and how to read the result.
What does Characters mean?
Characters is the Unicode extended grapheme-cluster count: a practical approximation of user-perceived characters. Code points and UTF-16 code units are shown separately.
How are emoji counted?
With Intl.Segmenter, a supported emoji sequence such as a family joined with zero-width joiners is normally one grapheme cluster even though it contains multiple code points and UTF-16 units.
What does excluding whitespace remove?
It removes characters in the Unicode White_Space property, including ordinary spaces, tabs, line breaks, and non-breaking spaces, before counting grapheme clusters.
How are lines counted?
CRLF and standalone CR are normalized to LF. Empty text has zero lines; nonempty text has one line plus each LF separator, including a trailing newline.
Why can another platform show a different count?
Platforms may count UTF-16 units, code points, bytes, links, or platform-specific text elements instead of Unicode grapheme clusters.
What is the input limit?
The browser-safety limit is 200,000 UTF-16 code units. Text above the limit is retained in the editor but no partial metrics are shown.
