WordLab

Private word counter & text-analysis lab

How WordLab works

A plain-English explanation of every number on the dashboard — including where the soft spots are.

Good tools show their working. This page describes exactly how each statistic is computed, so you can judge for yourself when to trust a number and when to treat it as an estimate.

Counting words

A "word" sounds obvious until you try to define one for a computer. Is state-of-the-art one word or four? Is don't one word or two? Is a stray number a word? Every counter answers these questions slightly differently, which is why Microsoft Word, Google Docs, and online tools rarely agree to the digit on long documents.

WordLab's headline word count splits your text on whitespace — the same convention most word processors use, so our totals track closely with what a teacher or editor using those tools will see. For the deeper word analysis (frequency, unique words, average length) we use a stricter tokenizer that recognises letters and digits in any alphabet, keeps internal apostrophes and hyphens (don't and well-known each count once), and drops bare punctuation. Differences of a fraction of a percent between tools are normal and not a bug — in ours or theirs.

One honest limitation: languages written without spaces, such as Chinese and Japanese, cannot be word-counted by whitespace at all. For those, rely on our character count instead — that is the standard billing and length unit for CJK text anyway.

Counting characters

We report three related numbers. Characters is the raw length of your text as stored by the browser. Characters without spaces removes every whitespace character — the count many translation and typesetting jobs are billed on. Unicode code points counts what a human would call "one symbol": an emoji like 🚀 is one code point but occupies two units of raw length, which is why the two totals can differ. If you're checking a form's character limit, the raw count is usually the one the form enforces.

Counting sentences

Sentences are detected by splitting at full stops, question marks, and exclamation marks — with two guards that naive counters skip. First, common abbreviations (Dr., Mr., etc., e.g., U.S.) are recognised so "Dr. Smith arrived." counts as one sentence, not two. Second, decimal numbers like 3.14 are protected so the dot inside a number never ends a sentence. No detector is perfect — unusual abbreviations or ellipses can still fool it — but these two guards remove the vast majority of miscounts in ordinary prose.

Paragraphs and lines

Paragraphs are blocks of text separated by at least one blank line, which matches how paragraphs are typed in plain text and Markdown. Lines simply counts every line break plus one — useful for code, poetry, subtitles, and CSV data, where the visual line matters more than the grammatical paragraph.

Reading time and speaking time

Research on silent reading puts typical adult speeds between roughly 180 and 260 words per minute for non-technical material; WordLab uses 220 wpm as a middle estimate. Speaking pace for presentations is much slower — around 130 wpm — which is what we use for speaking time. Treat both as planning figures: dense technical text reads slower, familiar material faster, and experienced presenters deliberately vary their pace.

Page count

Pages depend entirely on font, size, spacing, and margins, so any page count is a convention rather than a measurement. We use 300 words per page, the common rule of thumb for double-spaced 12-point manuscript pages. A single-spaced page holds roughly twice that.

The six readability formulas

Readability formulas estimate how demanding a text is by combining two ingredients: how long your sentences are, and how long or complex your words are. Each formula weighs those ingredients differently:

Why the scores disagree with each other — and with other websites: four of the six formulas need a syllable count, and English spelling does not map cleanly to syllables, so software can only estimate (see below). Different tools use different estimators and different sentence splitters, so grade levels commonly vary by one or two grades between sites. The useful signal is the trend: if your edits move every score in the same direction, your text really did get easier or harder.

How we estimate syllables

WordLab counts syllables by scanning each word for groups of vowels, then applying corrections for common English patterns such as silent final e (make is one syllable, not two). This heuristic is right for the large majority of everyday words and wrong for a predictable minority (chaos, poem, queue). Across a full paragraph the errors largely average out, which is why readability scores are trustworthy in aggregate but shouldn't be quoted to decimal places.

Keyword density and stop words

The frequency table counts how often each word appears and expresses it as a percentage of all words. By default we filter out stop words — extremely common function words like the, and, of, to — because they dominate every English text and tell you nothing about your topic. Toggle the filter off to see the raw table. The phrases table finds repeated two- and three-word sequences, which is often more revealing than single words: a repeated phrase is usually either your topic or a verbal tic.

For SEO writers: keyword density was once a ranking trick; today search engines penalise obvious stuffing. Use the table diagnostically — to confirm your topic words are present and no filler word is accidentally dominating — rather than chasing a target percentage.

Lexical diversity and vocabulary

Lexical diversity is unique words divided by total words. Higher values mean more varied vocabulary; lower values mean repetition. Compare like with like: short texts always score higher than long ones, because every text runs out of new words eventually.

LLM token estimate

AI language models such as GPT and Claude bill and limit by tokens — subword chunks averaging about four characters of English. Exact tokenisation differs per model, so WordLab shows an estimate based on character and word counts. It's typically within about 10–15% for English prose; code and non-English text can deviate more. Use it for budgeting, not billing.

Passive-voice detection

We flag sentences matching the classic passive pattern — a form of to be followed by a past participle ("the report was written"). This is a heuristic: it catches most passives and occasionally flags an innocent construction. Passive voice is also not an error — it's the right choice when the actor is unknown or unimportant. Treat the list as sentences worth a second look, not a to-fix list.

Language detection

WordLab makes a lightweight guess at the text's language: non-Latin scripts (Chinese, Arabic, Cyrillic, and others) are recognised by their character ranges, and Latin-script languages are distinguished by their most common function words. It's a convenience label, not a certified identification — very short or mixed-language texts can be misidentified.

Social media limits

The social tab compares your character count against each platform's published caption or post limit. Two caveats worth knowing: some platforms count links as a fixed length regardless of the URL (X/Twitter reserves 23 characters per link), and a few count certain non-Latin characters as two. When you're within a few characters of a limit, verify in the platform's own composer before posting.

Text utilities

The Utilities tab operates directly on your editor text: case conversion (upper, lower, title, sentence), whitespace cleanup, removing blank or duplicate lines, sorting or shuffling lines, reversing text, and URL/Base64 encoding and decoding. Every transformation is applied locally and every one of them can be undone with Ctrl/Cmd+Z.

Files, export, and what touches the network

You can import .txt, .md, .html, .rtf, .csv, .docx and .pdf files by upload or drag-and-drop, and export your text or a statistics report as TXT, Markdown, CSV, or JSON. Text formats are read entirely by your browser. For .docx and .pdf, the browser first downloads an open-source parsing library from a public CDN — the library travels to you; your file still never leaves your device. The only feature that ever transmits your text is the clearly-marked, off-by-default AI tab, which sends text to a provider you configure with your own API key.