Text tool

Word Counter

Compare rich text statistics, estimate pages at 250 or 500 words per page, and track progress in words, pages or characters. Text stays in this page without upload or persistent storage.

In-browser processingNo account requiredPrivacy details ↗

Maximum 100,000 UTF-16 code units. Words are whitespace-separated tokens, not Chinese/Japanese/Korean semantic segmentation. UTF-16 code units differ from Unicode code points; displayed graphemes fall back to code points when segmentation is unavailable. Reading uses 200 tokens/min, rounded up to 0.5 min; empty text is 0 min. These are planning assumptions, not measured reading speeds.

Counting stays in this page without upload or persistent storage.

Choose words, pages, or characters for progress. Blank targets are optional; progress is capped at 100%.

A QUICK WALKTHROUGH

How to use this tool

  1. Enter up to 100,000 UTF-16 code units; empty input is allowed.
  2. Choose words, pages or characters for optional progress targets, with 250 or 500 words per page.
  3. Compare code points with UTF-16 units, review text structure and time assumptions, then copy the summary.

Whitespace tokens, not linguistic words

Each non-empty run separated by JavaScript Unicode whitespace is one word/token. Punctuation stays attached. This is not semantic segmentation for Chinese, Japanese or Korean, or dictionary-based tokenization.

Distinct character and structure counts

UTF-16 totals use source.length; non-whitespace totals use the length after removing JavaScript whitespace. Unicode code points are counted separately. Displayed graphemes use Intl.Segmenter with a code-point fallback, and UTF-8 size uses TextEncoder. LF, CRLF and CR separate lines; an empty line has length zero, while a paragraph is a non-empty block separated by blank lines. Sentence estimates split on ., !, ?, and ….

Stated time and privacy limits

Reading minutes = ceil(tokens / 100) / 2: 200 tokens/min rounded up to 0.5 min, with empty text at 0. Speaking retains a rough 130 tokens/min estimate: under 1 min for 1–129 tokens, otherwise whole minutes rounded up. These are planning assumptions, not scientific measurements. Input is limited to 100,000 UTF-16 units, processed only in this page and never uploaded or persistently stored.

GOOD TO KNOW

Common questions

Why do UTF-16 and code-point counts differ?

A supplementary character such as 😀 uses two UTF-16 units but one Unicode code point. Joined emoji and combining marks can also make displayed graphemes differ from code points.

Is this a Chinese, Japanese or Korean word count?

It counts whitespace-separated tokens. Unspaced text remains one token; it does not detect semantic words in those languages.

How are reading minutes rounded?

At the assumed 200 tokens/min rate, minutes round upward to the next 0.5 minute. Empty or whitespace-only text gives 0 minutes. This is a formula, not measured reading speed.

What happens on invalid input?

Old output is cleared. Text over 100,000 UTF-16 units, invalid token goals, or a minimum greater than the maximum produce a local error. Failed copying selects the summary for manual copying.