What this counter measures
Word count and character count are the two figures most people come for, so they sit at the top: total words, characters with spaces, and characters without spaces, alongside sentence, paragraph, and line counts for anyone working against a structural limit rather than a length one.
Below that are the numbers that take a bit more computation but matter just as much in practice. Reading time is estimated at roughly 200 words per minute, the commonly cited average for adult silent reading; speaking time uses about 130 words per minute, closer to a typical spoken delivery pace — useful for sizing a presentation script or a video voiceover against a target runtime.
Keyword density and your most-used words
The tool scans your text for words that repeat, strips out common connective words ("the", "and", "with", and similar) so the list isn't dominated by function words, and ranks what's left by frequency. That surfaces the terms your writing actually leans on — useful for checking that a blog post covers its target keyword without repeating it into the ground, or for noticing a word you've unconsciously overused across a long piece.
The longest-words panel is a smaller, more playful cousin of the same idea: it pulls out the longest distinct words in your text, which is a quick way to spot jargon-heavy passages or just satisfy curiosity about your own vocabulary.
Counting tokens for AI prompts
If you write prompts for GPT, Claude, or another LLM, "how many words" is the wrong question — the model bills and limits you by tokens, and a token is not a word. Open the token panel and this counts your text exactly the way OpenAI's own tokenizer would, using the same encodings their API uses: o200k_base (GPT-4o, GPT-4.1, the o1/o3/o4 family, and other current models) and cl100k_base (GPT-4 and GPT-3.5). These aren't estimates — the library that powers this panel is a verified re-implementation of OpenAI's tokenizer, so the count matches what you'd get from their own API.
Claude and Llama are shown too, but labeled honestly: Anthropic and Meta don't publish a JavaScript tokenizer, so there's no way to compute an exact count for those models in a browser. What's shown for them is a clearly marked approximation derived from the GPT count, not a claim of precision. If you need an exact Claude or Llama count, the model provider's own API or SDK is the only fully reliable source.
The optional cost estimator works the same honest way: type in your own current price per million tokens (we don't hardcode one, because provider pricing changes often and a stale number would just be wrong) and it multiplies that against the exact token count. Check your provider's pricing page for the number to type in.
A full readability suite, not just one score
Flesch Reading Ease is the best-known readability formula — 206.835 minus 1.015 times average sentence length in words, minus 84.6 times average syllables per word — mapped onto bands from "very easy" (roughly a comic book) to "very difficult" (dense academic or legal writing). But it's one formula among several, and they don't always agree, so the readability panel runs five more alongside it: Flesch-Kincaid Grade Level and the Automated Readability Index both translate the same underlying signals into a U.S. school-grade estimate; Gunning Fog and SMOG weight polysyllabic ("complex") words more heavily, on the theory that long words cost a reader more than long sentences; and Coleman-Liau works off letters-per-word rather than syllables, which sidesteps syllable-counting error entirely at the cost of its own assumptions. A consensus grade level — the average of the five grade-based formulas — gives you one number when you don't want to weigh six.
Every one of these is an estimate, not a verdict, and we say so next to each score. Syllable counting for arbitrary English text has no perfect algorithmic rule, only patterns that work most of the time, and none of these formulas can tell a confusing short sentence from a clear one — they measure sentence and word length, not whether the writing actually makes sense. Use them to catch runaway sentence length or unnecessarily long words, not as a grade on the writing itself.
Case conversion and cleanup, without leaving the counter
The case-conversion panel is a full case converter in its own right — UPPERCASE, lowercase, Title Case, Sentence case, camelCase, snake_case, and kebab-case — applied to the text above in place, with one-click Undo if you want the original back. It's the same job as a standalone "case converter" tool, just without a separate page to visit.
The cleanup panel handles the small annoyances that come with pasted text: collapsing extra whitespace and blank lines, removing line breaks entirely to flatten a block into one paragraph (useful when a PDF or email client has hard-wrapped every line and you want to remove those line breaks before counting or publishing), stripping HTML tags left over from a copy-paste, stripping Markdown syntax down to plain text, and normalizing curly "smart quotes" and em-dashes to plain ASCII for systems that choke on them.
Character limits for social posts and SEO fields
Four presets track the limits that actually bite in practice: an X/Twitter post (280 characters), a LinkedIn post (3,000 characters), an SEO meta description (155 characters, the rough point where Google starts truncating), and an SEO title tag (60 characters, the rough safe width before it clips in search results). Each bar fills as you type and flips to show how far over you've gone the moment you cross the line, so you can trim before you paste the text somewhere that will cut it off for you.
These four aren't arbitrary — they're the limits that come up constantly for anyone writing marketing copy, social posts, or on-page SEO fields, and checking them one at a time in four different places is exactly the kind of small friction this page exists to remove.
Built to stay fast on long text
A counter that lags is worse than useless — it interrupts the exact thing it's supposed to support. This one is built so the text box always responds instantly, even while pasting in tens of thousands of words: the core counts run a fraction of a second behind your typing rather than on every keystroke, so the box never stutters even on very large documents.
The deeper panels — token counts, letter composition, the readability suite, phrase frequency, sentence-length distribution, and the writing-quality checks — go a step further and stay collapsed until you actually open them. A visitor who only wants the word count never pays the cost of computing the other eleven panels; opening one computes just that one, and only recomputes it as you keep typing.
What to do with the draft once you're done
This tool is deliberately scoped to counting and analysis — it doesn't try to be a full writing environment. If you're drafting something longer and want a clean, distraction-free place to write it, the [online notepad](/tools/online-notepad) is the plain-text counterpart; if you're writing something that needs headings, lists, or links, the [markdown editor](/tools/markdown-editor) adds structure with a live preview. Both autosave the same way this page does, and both can hand your draft to an OmniCanvas note when you want to keep it somewhere permanent.
You can also save straight from here: "Keep this draft" below saves the text itself as a note in your OmniCanvas account. It's an honest use of the save button — you're keeping something you wrote, not unlocking a stats dump behind a signup wall. Downloading or copying your text works with no account at all.