A word frequency counter that shows the phrases too
This word frequency counter takes any text and returns a ranked table: each term, how many times it occurs, and what share of the document it accounts for. Switch the window from single words to two- or three-word phrases, drop the functional words, set a floor so that one-off terms stop crowding the list, and export the result as CSV.
It exists because reading your own draft does not reveal repetition. Your eye supplies variety that is not on the page. A frequency table has no such loyalty, and the first surprise is almost always the same: some ordinary verb you reached for eleven times in four hundred words.
Using it as a style pass
Do it last, after the argument is settled and before the final read. Three things are worth looking for.
A crutch word near the top. Not the — the real find is a content word ranked far higher than
its usefulness justifies: leverage, simply, robust, just. One instance is a choice, eleven
is a tic, and the table is what turns the tic into something you can see.
A repeated opener. Set the window to three words and a minimum count of two. Phrases that start sentences rise to the top, and a document where four paragraphs open with the same construction reads as monotonous long before a reader could say why.
A term you thought was central and is not. If the subject of the piece appears twice while a minor aside appears nine times, the emphasis on the page is not the emphasis in your head. That is a structural note, not a word-level one, and it is the most valuable thing a count can tell you.
The counter is also the fastest way to check whether a document actually covers what it claims to cover, which is a different question from whether it repeats itself.
Stop words are a choice, and here is the whole list
There is no canonical list of stop words. Every library ships its own, they disagree with each
other, and the disagreements are not trivial: some drop no and not, which inverts the meaning of
whatever you are measuring, and some drop can, may and one, which are the subject of plenty of
documents.
So this one is short, deliberately, and printed in full. Fifty words, all of them functional in almost any English sentence, none of them capable of being the topic.
| Stop word | Stop word | Stop word | Stop word | Stop word |
|---|---|---|---|---|
| a | an | and | are | as |
| at | be | but | by | for |
| from | had | has | have | he |
| her | his | i | if | in |
| is | it | its | not | of |
| on | or | our | she | so |
| than | that | the | their | them |
| then | there | these | they | this |
| to | was | we | were | what |
| which | will | with | you | your |
For phrases, the filter works on the whole window rather than on each word. A pair is discarded only
when both of its words are on that list, so and the disappears while the morning stays. The
alternative — stripping the functional words first and then forming pairs — invents adjacencies the
text never contained: delete the from in the morning and you get the phrase in morning, which
nobody wrote.
Zipf, and why the top of the table is boring
Rank the words of any long natural text by frequency and the counts fall in a very particular way: the second word occurs about half as often as the first, the third about a third as often, the tenth about a tenth. That is Zipf's law, and it holds well enough across languages, centuries and genres that a text which badly violates it is usually not natural prose — it is a list, a table, or something generated.
Two practical consequences. First, the head of the table is a property of English rather than of your writing, which is exactly why the stop-word switch exists. Second, the tail is enormous: in any real document, most distinct words occur once. That is why a minimum count is more useful than it sounds. Set it to two and the list collapses to the terms you actually repeated, which is the only part you can act on.
What the numbers mean
Words is every token in the text, before any filter — the figure you would compare against a
target length. Counted is how many windows survived the stop-word filter and became rows, and it
is the denominator for the share column, so the percentages of all rows add up to one hundred. When
you switch the filter on, that denominator shrinks and every remaining share rises. The document did
not change; the question did.
Terms are ranked by count, and ties are broken alphabetically, so the same text always produces the same table. The CSV export carries the same three columns, quoted per RFC 4180 where a term contains a comma or a quotation mark.
Where this fits
For length rather than distribution — words, characters, sentences, reading time — the word counter answers faster. When the frequency table has told you which lines are repeats and you want them gone, remove duplicate lines does that in one pass, and sort lines is the quickest way to eyeball a list you have just exported.
Your text is analysed in the page. It is not uploaded, stored or logged, which is the only sensible arrangement for a tool people paste unpublished drafts into.