Toolvore

Word Frequency Counter

See which words appear most often in your text.

This tool runs entirely in your browser. Your data is never uploaded, never stored, and never leaves your device.

Counts how often each word occurs in a passage — frequency analysis over your own text — and ranks the top thirty in a table with counts, share of the total and a proportional bar.

How to use it

  1. 1Paste the text; the totals line and the table appear as you type.
  2. 2Tick Ignore common English stop words to drop the, of, and and the rest of a seventy-word list.
  3. 3Raise Minimum word length to push short tokens out of the ranking.

Example

Input
the cat sat on the mat
Output
6 total words, 5 unique — the ×2 at 33.3%, then cat, mat, on and sat at ×1

A token has to start with a letter, so a bare 2026 is not counted at all, while apostrophes and hyphens are kept inside a word — don't and covid-19 each count as one. Words tying on count are listed alphabetically, and the percentages are of the words that survived your filters, not of the raw text.

What happens to your data

The tally is a Map rebuilt in memory on each keystroke and never written anywhere; there is no output field and no upload step, only a table drawn from the text in the page. The stop-word list is a plain array bundled into the page, so ticking that box fetches no dictionary from anywhere.

Last updated August 2026

An editor says the piece leans on one word too hard and will not say which one. A client wants to know whether a page mentions its subject or only circles it for six paragraphs. A researcher has forty interview transcripts and needs a first look at what people kept saying. One mechanism sits under all three: count the words, rank them, read the top.

Decide before you paste which of two questions you are asking, because a single passage answers them differently. A raw count tells you what the text is made of, and for English prose that is always the same handful of function words at the top. A count with those filtered out tells you what the text is about — which is what people usually mean by word frequency.

What counting cannot do is decide that two spellings of an idea are one idea. There is no stemming, so run, runs and running are three rows and a plural is separate from its singular; a word whose sense is spread over several forms can be common in truth and never appear high in the list. Case goes the other way, since everything is lowered first, so a proper noun merges with the ordinary word spelled the same way.

The common mistake is reading the top row as a verdict. Frequency measures repetition, not importance, and the most repeated word in a document is often the one doing the least work.

How it works

Toolvore lowercases the whole passage and pulls tokens out of it with one Unicode-aware pattern: a token must begin with a letter, after which letters, digits, straight apostrophes and hyphens continue it. That single rule decides most of the edge cases — covid-19 and don't hold together as one word, accented and non-Latin letters match rather than splitting the word around them, and a bare year like 2026 is never counted at all. Surviving tokens go into a map of counts, filtered by the minimum length you set and, when the box is ticked, against a fixed list of seventy English stop words you cannot edit or add to. Entries are sorted by count, ties broken alphabetically, then cut at thirty, so the totals line covers the whole text while the table shows only the head of it. The bar beside each row is scaled against the most frequent word rather than the passage, which makes the top row full width every time. All of it is recomputed from nothing on every keystroke.

Common use cases

  • Checking which word a draft leans on before it goes to an editor
  • A first pass over interview transcripts to see what people kept saying
  • Finding filler words in a speech script before rehearsing it
  • Checking whether a page names its subject or only circles it
  • Comparing two drafts of ad copy for the terms they repeat
  • Checking a long translation for a term that should have stayed consistent

Frequently asked questions

Why do the, of and and sit at the top of every English text?

Because English builds its sentences from a small, closed set of function words — articles, prepositions, pronouns, auxiliaries — and reuses them relentlessly, while the words carrying the subject come from a far larger pool and each turns up rarely. Zipf's law describes the shape: rank words by frequency and the counts fall away steeply, so a few dominate and a long tail appears once each. A raw ranking of any English passage therefore resembles a raw ranking of any other. That is what the stop-word tick is for — leave those words in only when the function words are themselves what you are studying.

What is a good keyword density for SEO?

There is no figure to aim at. Repetition stopped working as a ranking signal long ago, and the current failure is the opposite of the old one: a page that hits a phrase mechanically reads badly to people and to systems that judge relevance by meaning rather than by tally. What a frequency table is honestly good for is the sanity check — turn stop words off, look at the top rows, and see whether the subject is visible or whether the page has spent six paragraphs saying it with pronouns. If a term looks strange when you read the paragraph aloud, that is your signal.

Why are run, runs and running counted separately?

Because nothing reduces a word to its root. Each surface form is its own row, so run, runs, running and ran are four entries and child and children are two. Stemming trims suffixes mechanically and can leave a stem that is not a word; lemmatisation uses a dictionary and a part-of-speech guess to reach the headword. Both need language-specific data a plain counter does not carry. The practical effect is that one idea gets split across several rows and can sit below a word that only ever takes a single form, so if a theme matters, add its variants together yourself.

Why is the total different from the word count in Word or Google Docs?

Three reasons, and they stack. A token must begin with a letter, so a bare figure — a year, a price, a page number — is not counted here while a word processor counts it. The minimum length box drops anything shorter than the number in it, the stop-word tick drops seventy more, and the totals line reports what survived both rather than the raw text. Word processors disagree with each other anyway over hyphenated compounds and numbers with units. Read the figure as the base the percentages are calculated against, not as an authoritative count for a submission with a limit.

Is my text sent anywhere?

It stays in the tab. There is no upload, no request behind the table and nothing written to storage — the passage exists only as state in the box you typed it into, and the tally is discarded and rebuilt whenever that changes, so closing the tab is the whole of the cleanup. Ticking the stop-word box fetches nothing either; that list ships inside the code the page has already downloaded. It matters here more than on many text tools, because what people run through a frequency counter is usually unpublished: a manuscript, a client's copy, transcripts with real names in them.

How do you count words in Chinese, Japanese or Thai?

Not with this, and it is worth knowing before you paste. The pattern matches runs of letters, which is fine for anything written with spaces between words — French, Polish, Turkish, Greek and Cyrillic all come through with their letters intact. Chinese, Japanese and Thai put no spaces between words, so a whole clause matches as a single token and the table becomes a list of clauses. Splitting those scripts properly needs a segmenter with a dictionary behind it, which is separate software. The stop-word list is English only as well, so that box does nothing useful in any other language.

How do I count phrases rather than single words?

That is n-gram counting, which tallies adjacent pairs and triples, and this table counts single words only — a phrase is split across as many rows as it has words. You can often infer a two-word phrase: if both halves sit near the top with similar counts, they are probably occurring together, and reading a few instances in the source settles it. The case where single words genuinely fail is a phrase built from common words, which vanishes the moment you filter stop words. For real phrase work, a concordance that shows every occurrence in its surrounding sentence is the right instrument.

Why has the same word turned up twice in the list?

Usually punctuation being treated as part of the word. Only the straight apostrophe is allowed inside a token, so a document that has been through a word processor and picked up curly ones gives you don and t as two rows instead of one entry for don't. A possessive does something related, leaving a name and that name with an s attached as separate entries. Hyphens are kept, which is right for covid-19 and wrong for a word broken across a line, where the trailing hyphen stays stuck to the first half. Case never causes this, since everything is lowered before counting.