TextCraftHub logo

Character Counter

Count Unicode characters, user-perceived characters, words, emoji, sentences, paragraphs, lines, spaces, and time estimates instantly. Your text stays in your browser.

Your text stays in this browser. Press Escape, then Tab, to move focus out of the editor.

0 / 100,000 characters

Text metrics

Characters
0
User-Perceived Characters
0

Counts characters as users usually perceive them, including combined letters and emoji sequences.

Characters Without Whitespace
0
Words
0
Sentences
0
Paragraphs
0
Lines
0
Spaces
0
Consecutive Space Groups
0
Emoji Count
0
Reading Time
0 min
Speaking Time
0 min

What Character Counter Measures

Character Counter analyzes the text exactly as it appears in the editor. It reports code points, user-perceived grapheme clusters, words, sentences, paragraphs, lines, whitespace, emoji, and practical time estimates without rewriting your content.

The metrics intentionally describe different layers of text. A JavaScript string is stored as UTF-16 code units, a Unicode character metric can count code points, and a visible combined letter or emoji may be one extended grapheme cluster made from several code points.

Characters, User-Perceived Characters, and Emoji

Characters

Counts Unicode code points, including whitespace and line endings. Supplementary characters are not double-counted as UTF-16 surrogate pairs.

User-Perceived Characters

Counts extended grapheme clusters, including whitespace clusters. This is the closest programmable approximation to characters as users typically perceive them.

Emoji Count

Counts qualifying emoji by grapheme cluster so supported flags, skin tones, hearts, keycaps, and joined family sequences count as one each.

Whitespace and Spacing Metrics

Characters Without Whitespace

Excludes ordinary spaces, tabs, line breaks, non-breaking spaces, and other whitespace recognized by ECMAScript.

Spaces

Counts only ordinary U+0020 spaces, keeping the value distinct from tabs, line endings, and other whitespace.

Consecutive Space Groups

Counts runs of two or more ordinary spaces, which can help locate accidental gaps without changing the text.

Words, Sentences, Paragraphs, and Lines

Word and sentence boundaries use the browser's locale-aware segmentation when available. They are useful estimates, not a promise of identical linguistic analysis across every runtime or language.

Words

Counts segments the runtime identifies as word-like. Contractions, hyphenated terms, decimals, and mixed-language text can vary by locale and ICU data.

Sentences

Counts sentence segments containing a letter or number. Abbreviations and language-specific punctuation can affect boundaries.

Paragraphs

Counts nonempty blocks separated by one or more blank or whitespace-only lines.

Lines

Normalizes common line-ending formats for counting. A trailing line break adds an empty final line.

Reading and Speaking Time

Reading Time uses 200 words per minute, while Speaking Time uses 130 words per minute. Empty text displays 0 min, a nonempty estimate under one minute displays < 1 min, and longer estimates are rounded to the nearest whole minute.

These are planning estimates. Technical vocabulary, pauses, presentation style, audience, and language can make real reading or speaking time shorter or longer.

Why Platform Character Limits May Differ

A social platform may measure code points, user-perceived characters, UTF-8 bytes, or a proprietary weighted value. Different fields within the same platform can also use different limits.

TextCraftHub does not present these metrics as a guarantee that a destination app will accept the text. Check important bios, captions, posts, and messages in the current publishing interface before submitting them.

Common Counting Mistakes

Treating UTF-16 units as characters

JavaScript string length can report two units for a supplementary character. This tool uses Unicode code points for Characters instead.

Assuming every emoji is one code point

Flags, skin tones, hearts, and family emoji can combine multiple code points into one user-perceived sequence.

Calling every whitespace character a space

Tabs, line breaks, and non-breaking spaces are whitespace, but the Spaces metric deliberately counts only U+0020.

Character Counter content review

Last reviewed: July 2026

Technical review: Lalit Giani

Character and emoji definitions follow current Unicode and ECMAScript standards. Word and sentence boundaries remain locale- and runtime-sensitive, while the 100,000-code-point ceiling is a TextCraftHub operational limit rather than a platform standard.

Verified facts

  • Characters: The Characters metric counts Unicode code points instead of JavaScript UTF-16 code units. [4] [6]
  • User-perceived characters: Extended grapheme clusters provide the standards-based approximation used for combined letters and multi-code-point visual characters. [1] [3]
  • Language segmentation: Intl.Segmenter supplies locale-aware grapheme, word, and sentence segmentation when the browser supports it, but language-specific boundaries can still vary. [3] [5]
  • Emoji sequences: Flags, modifiers, variation selectors, keycaps, and zero-width-joiner sequences can combine multiple code points into one emoji grapheme. [2]
  • Local processing: Text entered into this utility is processed in the browser and is not stored or transmitted by the tool. [7]

Sources

  1. 1. Unicode Standard Annex #29: Unicode Text Segmentation - Unicode ConsortiumReferenced July 2026
  2. 2. Unicode Technical Standard #51: Unicode Emoji - Unicode ConsortiumReferenced July 2026
  3. 3. ECMA-402 Intl.Segmenter specification - Ecma InternationalReferenced July 2026
  4. 4. ECMAScript String type specification - Ecma InternationalReferenced July 2026
  5. 5. MDN Web Docs: Intl.Segmenter - MozillaReferenced July 2026
  6. 6. The Unicode Standard - Unicode ConsortiumReferenced July 2026
  7. 7. TextCraftHub Privacy Policy - TextCraftHubVerified July 2026

Editorial Policy · Sources and References

Character Counter FAQ

What does the Characters metric count?

Characters counts Unicode code points, including spaces and line endings. This avoids counting a supplementary Unicode character as two UTF-16 code units, but a combined emoji can still contain several code points.

What are User-Perceived Characters?

This metric counts extended grapheme clusters: the closest programmable approximation to characters as people usually perceive them. A letter plus a combining mark, a flag, or a family emoji can count as one user-perceived character even when it contains several code points. Whitespace grapheme clusters are included.

What does Characters Without Whitespace remove?

It excludes ECMAScript whitespace such as ordinary spaces, tabs, line breaks, non-breaking spaces, and other supported Unicode whitespace characters. It does not change the text in the editor.

Why can word and sentence counts differ between devices?

The counter uses the browser's locale-aware text segmenter when available. ICU data, locale conventions, abbreviations, contractions, hyphens, decimals, and mixed-language text can produce reasonable differences between runtimes.

How are paragraphs and lines counted?

A paragraph is a nonempty block separated by at least one blank or whitespace-only line. Lines normalize Windows, classic Mac, and Unix line endings for counting; a trailing line break creates an empty final line.

How is Emoji Count calculated?

Emoji are counted by grapheme cluster, so supported flag pairs, skin-tone sequences, heart sequences, keycaps, and family emoji joined with zero-width joiners count as one each.

Does Character Counter enforce social platform limits?

No. Platforms can use code points, visible clusters, UTF-8 bytes, weighted rules, or field-specific limits. Treat these metrics as preparation guidance and verify important text in the destination app.

What happens at 100,000 characters?

The limit uses Unicode code points. Text already accepted is preserved, and only the excess part of a new insertion is rejected. The counter avoids cutting a combining sequence or emoji grapheme in half and shows a notice when text is rejected.

Is my text uploaded or stored?

No. Counting and editing happen in your browser, and this tool does not send the entered text to a TextCraftHub server. Clearing or leaving the page removes the current editor state because this version does not add persistence.

TextCraftHub uses cookies and similar technologies for analytics and advertising, including Google AdSense, according to your choices. You can accept all, reject all, or manage your preferences. Privacy Policy