Word Counter

Max 256 KB · Stats update automatically as you type

Words
0
Characters
0
Characters (no spaces)
0
Sentences
0
Paragraphs
0
Reading time
0 min

A word counter answers a handful of concrete questions about a piece of text at once: how many words is it, how many characters (with and without spaces), how many sentences and paragraphs, and roughly how long it takes to read. All of it updates live as you type or paste — there’s no separate “Count” step.

The word count comes from a simple rule: split the text on whitespace and count the non-empty pieces. A hyphenated word like well-known has no space in the middle, so it counts as one word, the way someone counting by hand would treat it; a number like 2026 counts as one word the same way. This whitespace-based approach is the same one nearly every simple word counter uses, and it’s accurate for the common case — English or other space-separated prose. Its one known limitation: languages written without spaces between words (Chinese, Japanese, Thai) don’t split the same way, so a run of such characters counts as a single word rather than one per logical word.

Character counts come in two forms — with spaces and without (whitespace stripped first) — since different limits care about different things: a meta-description limit usually counts every character, while an “actual content” figure is more useful without the padding of spaces.

Sentence counting looks for runs of ., !, or ? and treats each run as one sentence boundary, so an ellipsis (...) or a stacked ?! each count as one, not three. This is a punctuation heuristic, not real language understanding, and it has one specific, known failure mode: abbreviations. A period inside e.g., Mr., or a decimal number like 3.14 reads as a sentence ending and inflates the count. Fixing this fully needs an abbreviation dictionary or a real sentence-boundary model — out of scope for a tool that runs entirely on plain client-side string operations — so treat the sentence count as a close estimate, not an exact figure for text full of abbreviations.

Paragraphs are counted as blocks separated by one or more blank lines; a single line break within a block doesn’t start a new one. Reading time is the word count divided by 200 words per minute (a commonly cited average for adult silent reading), rounded up to the next whole minute.

Everything runs entirely in your browser — no text is ever sent anywhere.

Examples

Frequently asked questions

How exactly is the word count calculated?
The text is split on runs of whitespace (spaces, tabs, line breaks), and each non-empty piece is counted as one word. A hyphenated compound like well-known has no whitespace inside it, so it counts as one word — the way most people would count it by hand — and a number like 2026 counts as one word too. This is a plain whitespace split, not full language-aware word segmentation, so it undercounts for scripts written without spaces between words (Chinese, Japanese, Thai) — a whole run of such characters counts as a single word rather than one per logical word.
How is the reading time estimated?
Word count divided by 200 words per minute, rounded up to the next whole minute. 200 wpm is the commonly cited default for adult silent reading of prose — published estimates for this vary roughly 180-250 wpm depending on the text and reader, so treat the result as a reasonable estimate for pacing a talk or checking how long a draft takes to read, not an exact figure.
Why might the sentence count be wrong for my text?
Sentences are counted by looking for runs of ., !, or ? — a repeated run like ... or ?! collapses into one boundary, not three. This has no notion of abbreviations, though: a period inside e.g., Mr., or a decimal number like 3.14 reads as a sentence end and over-counts. Getting this exactly right needs a dictionary of abbreviations or a real language model, which is out of scope for a lightweight, entirely-client-side tool — this is a documented, accepted limitation of the punctuation-based approach, not a bug.
What counts as a paragraph?
A block of text separated from the next by one or more blank lines. A single line break inside a block — text wrapped onto the next line without a blank line between — is treated as a soft break within the same paragraph, not a new one. Pasting from a word processor or a Markdown file, where paragraphs are usually blank-line-separated, gives an accurate count with this rule.
Is my text sent to a server?
No. Every count runs locally in your browser with plain JavaScript string operations on the text already in the textarea — nothing is uploaded, logged, or stored anywhere.