How our tools work

Last updated

We want you to trust the numbers our tools give you, so this page explains exactly how they are calculated. Every tool runs in your browser using the methods below.

Words, characters and sentences

We use the browser's built-in Intl.Segmenter, which implements the Unicode text segmentation standard (UAX #29).

  • Characters are counted as grapheme clusters: what a reader sees as one character. An emoji with a skin tone, a flag or an accented letter counts as one.
  • Words are word-like segments. Punctuation is ignored, contractions count once, numbers count as words, and most hyphenated compounds are split at the hyphen. Languages without spaces are segmented by dictionary.
  • Sentences use Unicode sentence boundaries. Abbreviations such as "Mr." can occasionally be counted as a sentence end.
  • Paragraphs are blocks of text separated by at least one blank line.

Reading and speaking time

Reading time is words ÷ 200 words per minute and speaking time is words ÷ 130 words per minute. The Word Counter rounds both up to whole minutes; the Reading Time Calculator shows minutes and seconds and lets you change both speeds.

Readability

Flesch Reading Ease = 206.835 − 1.015 × (words ÷ sentences) − 84.6 × (syllables ÷ words), clamped to 0–100. Flesch-Kincaid Grade = 0.39 × (words ÷ sentences) + 11.8 × (syllables ÷ words) − 15.59. Syllables are estimated by counting vowel groups and ignoring a silent final "e", which is accurate for most English words but not all.

SEO titles and descriptions

Search engines truncate titles and descriptions by display width. We measure your text with the browser's canvas text measurement in Arial at 20px for titles and 14px for descriptions, and compare it with typical desktop limits of about 580px and 920px. Google changes its layout from time to time, so leave a small margin.

X (Twitter) character count

We follow the weighting in X's open-source counting rules: most Latin-script characters count as 1, characters from other ranges such as Chinese, Japanese and Korean count as 2, every emoji counts as 2 and every link counts as 23.

Passive voice

A sentence is flagged when a form of "be" or "get" is followed, optionally after up to two adverbs, by a past participle (a regular "-ed" verb or one of about 150 irregular participles). Common adjectives such as "tired" are excluded. This catches most passive constructions but is not perfect, so highlights are suggestions.

Hashes and encoding

Hashes use the Web Crypto API (SHA family) and a widely used MD5 implementation, applied to the UTF-8 bytes of your text. Base64 and URL encoding convert text to UTF-8 first, which matches what servers and programming languages expect.

Found a mistake?

If you believe a tool gives a wrong result, please tell us with an example. We test and fix reported issues and update this page when methods change.