DataHub Tools Word Counter

Word Counter and Character Counter

Local-first

Count words, characters, lines, sentences, and estimated reading time locally.

How this tool actually works

Where supported, the counter uses Intl.Segmenter for locale-aware word and grapheme segmentation. It reports CJK characters separately and estimates reading time from word-like segments at 220 per minute; empty input reports zero minutes.

  • Count locale-aware word segments
  • Report CJK characters and grapheme clusters
  • Estimate reading time

How to use it

  1. Paste the exact text you want to inspect.
  2. Choose the metric that matches your language and publishing rule.
  3. Compare contractions, CJK text, combining marks, and emoji with a language-aware counter when precision matters.
  4. Treat reading time as a rough estimate rather than a measured duration.

Quick example

Example input

Don't stop. 你好世界 👨‍👩‍👧‍👦

Expected result

Don't remains one word-like segment, Chinese uses locale-aware boundaries, and the family emoji is one grapheme cluster in supported browsers.

Segmentation depends on browser Intl.Segmenter data and locale heuristics; publisher, legal, billing, and linguistic definitions may differ.

Best use cases

  • Estimate English-style word runs.
  • Check CJK character volume separately.
  • Get a rough line and reading-time summary.

References and scope

Unicode UAX #29 defines text boundaries, and Intl.Segmenter exposes locale-aware segmentation; neither replaces a publisher's contractual counting rule.

Sources checked July 24, 2026. Specifications and platform behavior can change; verify the sources before formal use.

Known limitations

  • Browsers without Intl.Segmenter fall back to simpler letter and number runs.
  • Mixed-language reading time remains a rough estimate.
  • Characters are grapheme clusters when Intl.Segmenter is available.

FAQ

Does Words represent Chinese words?

It uses locale-aware word-like segmentation where Intl.Segmenter is available, but it is not a specialist Chinese tokenizer.

How is don't counted?

In supported browsers it is normally one word-like segment.

Are emoji counted as one character?

A joined visible emoji is normally one grapheme cluster when Intl.Segmenter is available.

Is reading time exact?

No. It is a rough estimate based on a fixed rate.