How WordCount counts
The exact rules behind every number on this site: words, characters, sentences, syllables, readability, reading time and pages, with examples produced by the real counting engine, plus what the AI tools do with your text.
How words are counted
Every counter on WordCount runs in your browser, in one shared script (counter.js). A word is a run of letters, digits and combining marks (Unicode categories L, N and M). Pieces joined by an apostrophe (' or ’) or a hyphen stay one word, so don't, well-known and state-of-the-art each count once. Punctuation, symbols and emoji are not words.
Chinese, Japanese, Thai, Lao, Khmer and Burmese are written without spaces between words. When a text contains any of those scripts, it is counted with the browser's built-in word segmenter (Intl.Segmenter with word granularity, in the page's language), and each segment the browser marks as word-like counts as one word. The segmenter uses the browser's own dictionary data, so a Chinese or Thai count can differ by a word or two between browsers. Korean is written with spaces and uses the regular rule.
Two limits we have not fixed: a decimal point or thousands separator splits a number (3.50 and 1,000 each count as two words), and a dotted abbreviation such as Dr. ends a sentence. The examples below come from the real counting engine, not from a description of it:
| Text | Words | Characters | No spaces | Why |
|---|---|---|---|---|
Don't count well-known e-mail twice. | 5 | 36 | 32 | apostrophes and hyphens join a word |
state-of-the-art rock'n'roll | 2 | 28 | 27 | a hyphenated or apostrophe chain is one word |
It costs 3.50 dollars, 1,000 times. | 8 | 35 | 30 | 3.50 and 1,000 each count as two (a known limit) |
Dr. Smith arrived. He left! | 5 | 27 | 23 | the abbreviation ends a sentence (a known limit) |
Wait… what?! Yes. | 3 | 17 | 15 | an ellipsis ends a sentence |
我爱北京天安门 | 4 | 7 | 7 | Chinese, no spaces: dictionary segmentation |
私は東京に住んでいます | 8 | 11 | 11 | Japanese: particles are separate words |
ฉันรักภาษาไทย | 4 | 13 | 13 | Thai, no spaces: dictionary segmentation |
Hello 世界 3.50 | 3 | 13 | 11 | mixed text goes through the segmenter as a whole |
안녕하세요 세계 | 2 | 8 | 7 | Korean uses spaces, so the regular rule applies |
नमस्ते दुनिया | 2 | 13 | 12 | vowel signs (combining marks) stay inside the word |
café | 1 | 5 | 5 | e + combining accent: 5 code points |
café | 1 | 4 | 4 | precomposed é: 4 code points |
👍🏽 ok | 1 | 5 | 4 | emoji are characters, not words; skin tone adds one |
How characters are counted
Characters are Unicode code points: every letter, digit, space, line break, punctuation mark and symbol counts as one. That is why café typed with a precomposed é is 4 characters, but the same word typed as e plus a combining accent is 5, and a thumbs-up with a skin-tone modifier is 2.
Characters without spaces is the same count after removing every whitespace character: spaces, tabs and line breaks.
Some platforms count differently, and their pages say so. The X (Twitter) counter applies X's weighting, where every link costs 23 characters. The Instagram counter counts the way Instagram does.
Sentences and paragraphs
A sentence ends at . ! ? …, the CJK full stops 。!?, the Arabic question mark ؟ or the Devanagari danda । ॥. A piece only counts if it contains a letter or digit, so Wait… what?! Yes. is 3 sentences. Abbreviations are not recognised: Dr. Smith arrived. He left! counts 3.
A paragraph is a block separated by a blank line. The paragraph counter also has an every-line mode for text pasted from a CMS with single line breaks.
Syllables and readability
Syllables are estimated from spelling, with one model per script family, chosen by the page language:
- English (the default Latin model): groups of vowels (a, e, i, o, u, y), minus a silent final -e or -es; words of three letters or fewer count as one.
- Spanish: on the Spanish syllable counter, a full syllabifier that follows the RAE rules (diphthongs, hiatus, accents).
- Other Latin-script languages: accents are folded to plain vowels, and the silent-e rule is skipped for words that had an accent. Turkish, Swedish, Hungarian, Indonesian, Portuguese, Polish and Lithuanian have their own vowel and diphthong rules. Czech, Slovak, Croatian, Slovene and Serbian also count a syllabic r/l (vlna = 2).
- Cyrillic: one syllable per vowel letter. Greek: vowel groups. Devanagari: one per akshara (grapheme cluster).
- Arabic, Persian, Hebrew, Chinese, Japanese, Korean and Thai: no syllable model. The engine returns 0 rather than guess.
These are spelling rules, not a pronunciation dictionary, so expect some misses. The German page, for example, discloses that beobachten comes out as 3, not 4. Engine output:
| Word | Page language | Syllables |
|---|---|---|
| table | en | 2 |
| syllable | en | 3 |
| beautiful | en | 4 |
| readability | en | 5 |
| beobachten | de | 3 |
| vlna | cs | 2 |
| молоко | ru | 3 |
| नमस्ते | hi | 3 |
| merhaba | tr | 3 |
| 北京 | zh | 0 |
The readability checker uses Flesch Reading Ease = 206.835 − 1.015 × (words ÷ sentences) − 84.6 × (syllables ÷ words), shown within −40 to 121, and Flesch–Kincaid grade = 0.39 × (words ÷ sentences) + 11.8 × (syllables ÷ words) − 15.59, never below 0. Both formulas were calibrated on English. Swedish, Danish and Norwegian pages add LIX (words per sentence + 100 × the share of words longer than six letters). Worked example: The cat sat on the mat. It was a sunny day, and the children played outside until dinner. has 18 words, 2 sentences and 24 syllables, which gives a Flesch score of 84.9 and a grade of 3.7. See also what is a good readability score.
Reading and speaking time
Reading time is words ÷ 238 words per minute: the average silent reading speed for adult non-fiction in Brysbaert's 2019 meta-analysis of 190 studies with 18,573 participants (Journal of Memory and Language). Speaking time defaults to 130 words per minute, a prepared speech with pauses. The words-to-minutes calculator also offers 110 (slow), 160 (fast) and 238 (silent reading). The sources and ranges (fiction 260, reading aloud 183) are in the average reading speed guide. These are averages: children, second-language readers and dense technical text are slower.
Words per page
The words-per-page calculator uses one formula: pages = words ÷ (words per single-spaced page ÷ line spacing). It assumes 1-inch margins on Letter or A4 paper and these single-spaced figures: Times New Roman 12 pt 500, Arial 12 pt 460, Verdana 12 pt 430, Calibri 11 pt 560. Line spacing is 1, 1.5 or 2. Results under 10 pages show one decimal, and larger ones are rounded. For example, 1,000 words in Times New Roman, double-spaced, is 1,000 ÷ (500 ÷ 2) = 4.0 pages, and 2,250 words at 1.5 spacing is 6.8 pages. Real documents vary with headings, paragraph breaks and dialogue, so treat this as an estimate. Every number in the how-many-pages guides is checked against this formula by an automated audit.
How the AI tools work
Runs only in your browser, with nothing sent to us: all counters, the calculators, the case converters, word frequency, readability, compare text, the text-styling generators and the other text utilities, plus word counts for .docx, .odt, .rtf, .txt and .md files. Read-aloud uses your device's voices. Dictation uses your browser's speech service.
Sent to an AI model: the grammar checker, punctuation checker, paraphrasing tool, sentence rewriter, humanizer, summarizer, keyword extractor, paragraph generator and translator. Your text goes over an encrypted connection to our server, which passes it to a language model and returns the result. As of this update, most tools use openai/gpt-5.6-luna, the keyword extractor uses openai/gpt-5.4-nano, and short translations (up to 200 characters) use google/gemma-4-31b-it for speed. If a provider refuses a request, it is retried once on the other provider (google/gemini-3.5-flash-lite or openai/gpt-5.4-nano). On the paraphraser, rewriter, humanizer and translator, a second model call compares the original and the result (up to 4,000 characters of each) to produce the confidence band: High confidence at 90 or above, Review changes from 70 to 89, and Meaning may have changed below 70. It is an estimate, not a guarantee.
Limits: up to 5,000 characters per request. Each network address gets 200 AI requests a day (400 when signed in), and no more than 12 a minute. In browsers without built-in speech features, optional server fallbacks are clearly labelled: text to speech up to 600 characters, and dictation clips up to about 60 seconds.
Not stored: the result is held in memory only until your browser collects it, then deleted. Results that are never collected expire after 10 minutes. We keep metadata only: which tool ran, the page language and mode, the model, a character count, token counts, timing, status and estimated cost. We never keep your text, and we don't use it for training. Full detail is on the privacy page.
Corrections
If a count looks wrong, compare it with the rules above. If the rules say something different from what the counter did, that is a bug. This page is updated in the same change as the code it describes.
Last updated: