Text stats: words, reading time, and limits
Published: 2026-09-05
How word, character, line, and paragraph counts work; why reading-time estimates depend on words-per-minute; and when platform limits make those numbers matter.
Drafts, bios, SEO snippets, and support macros all live under limits—characters for a tweet or meta description, words for a brief, lines for a paste into a ticket. A text statistics pass answers “how long is this?” without opening a full word processor. Online counters often upload the paste; for unpublished copy, prefer a local tool. LocalTools’ Text statistics counts in the browser and never sends the text to a server.
What each count means
| Metric | Typical definition (this site) | Watch out for |
|---|---|---|
| Characters | Length of the string as the browser sees it (String.length, UTF-16 code units) |
Emoji and some symbols are more than one code unit; “grapheme” length can differ |
| Characters (no spaces) | Same string with all whitespace removed | Tabs and newlines count as spaces here |
| Words | Tokens after trim, split on whitespace | Hyphenated compounds and CJK text do not always match “dictionary words” |
| Lines | Segments split on \n / \r\n |
Trailing newline still adds a line; empty input is zero |
| Paragraphs | Non-empty blocks separated by a blank line | Soft wraps in a UI are not paragraph breaks |
| Sentences (estimate) | Split after . ! ? … plus following space |
Abbreviations (Dr., U.S.) and lists without terminal punctuation skew the count |
These heuristics are English-oriented and good enough for drafts and limits. They are not a linguistic analysis of every script.
Words vs characters vs “platform limits”
Different products enforce different units:
- Characters — X/Twitter-style posts, SMS segments (with encoding caveats), many form fields, Open Graph / Twitter Card descriptions, and HTML
metadescription length guidelines. - Words — editorial briefs (“800-word post”), reading-level estimates, and some LMS or exam instructions.
- Lines — commit messages (
gitsubject + body), code review comments, and “keep it under N lines” paste quotas. - Bytes — rare in UI copy tools, but APIs and URL length caps care about encoding; character ≠ byte for non-ASCII.
When a limit is stated in characters, trust the character (and “no spaces”) rows—not the word count. When an editor asks for word count, ignore character-based SEO folklore until you convert intentionally.
Reading time is an estimate, not a clock
Reading time is usually:
minutes ≈ word count ÷ words per minute (WPM)
Silent adult reading of general English prose is often cited around 200–250 WPM. Technical docs, dense legal text, and non-native readers are slower; skimming headlines is faster. The Text statistics tool defaults to 200 WPM and lets you change the rate so the estimate matches your audience—not a universal truth.
Treat the result as an informal “about N minutes” label for blogs and docs. It does not model images, code blocks, or re-reads. Sentence count is likewise a rough heuristic for structure, not a grade-level score.
Practical workflow
- Paste the draft (or a section under a hard limit).
- Check the unit your platform uses: characters vs words vs lines.
- Adjust reading speed if you are labeling an article for readers.
- Copy summary into a ticket or brief when you need a plain-text report.
- If whitespace is noisy (mixed CRLF, trailing spaces), normalize first with Whitespace normalizer, then re-count.
- For filler mockups while you design layout, generate placeholder prose with Lorem ipsum and measure that instead of real copy.
For URL-safe titles and filenames after you settle length, see Slugify and text case styles.
Why count locally
Paste boxes that “analyze reading level” or “optimize SEO” on a remote server see your full draft—including unreleased product names and customer quotes. Local counting keeps that text in the tab. LocalTools computes statistics string by string in your browser; nothing is uploaded for analysis.
Try it locally
Open Text statistics:
- Paste or type in Your text—counts update as you edit.
- Set Reading speed (words per minute) to match silent reading, technical docs, or a slower audience.
- Use Copy summary for a plain-text report of characters, words, lines, paragraphs, sentences, and estimated reading time.
Related reading
- Text statistics — local word/character counts and WPM-based reading time
- Why “local only” matters for developer tools
- Text case styles: camelCase, snake_case, kebab-case
- Whitespace normalizer — clean CRLF/tabs before counting
- Slugify — turn titles into URL-safe slugs after length is settled