Word Frequency Counter
Analyze word frequency in any text. Find most common words, create word clouds, and understand text patterns.
A word frequency counter ranks every word in a text by how often it appears. Paste into Enter text to analyze and the table redraws on each keystroke — there is no Analyze button. A 38-word paragraph about a fox and a dog reported Total words 26, Unique words 16 and Density 61.5%, with fox at 5 (19.2%), because Ignore common words is ticked by default.
Top words ()
Enter text to analyze
About Word Frequency Counter
This page counts words entirely in your browser. The text is split on everything that is not a letter or a digit, lowercased when Ignore case is ticked, filtered against a built-in stop word list when Ignore common words is ticked, and then tallied. Nothing is uploaded, there is no size limit other than what your browser can hold, and the table updates as you type rather than on a Analyze button.
Three numbers sit above the table. Total words is the count after filtering, Unique words is how many distinct entries the list holds, and Density is Unique divided by Total as a percentage — a measure of vocabulary variety, sometimes called the type-token ratio, not the keyword density that SEO tools mean. That figure is in the table instead: the percentage beside each word is its own count divided by Total words.
Three tabs change what gets counted. Words tallies single words; Bigrams tallies every adjacent pair and Trigrams every adjacent triple, both built from the already-filtered list, so with Ignore common words left on the phrases you get are content words that were not originally adjacent. The results panel offers a Bar chart and a Word cloud view, a Show top selector of 10, 30, 50 or 100 rows, and an Export button that writes those rows to word-frequency.csv with the columns Rank, Word, Count and Percentage.
The stop word list is chosen by the language of the page you are on, and lists exist for English, French, German, Spanish, Italian, Portuguese, Russian, Turkish, Polish and Chinese. It does not open files: there is no upload field, so a PDF or a .docx has to be opened in its own reader and the text copied across. Because the splitting rule keeps only letters and digits, contractions break in two — don't becomes don and t — which is why a stray single letter sometimes climbs the table.
Use Cases
How to use
Paste or type your text into the Enter text to analyze box; the table appears as you type, with no button to press.
Decide how words are matched with the two checkboxes: Ignore case folds Word and word together, Ignore common words drops the stop words of the page's language.
Pick a tab: Words for single words, Bigrams for adjacent pairs, Trigrams for adjacent triples.
Read Total words, Unique words and Density above the table, then the ranked list where each row shows the count and its share of the total.
Switch between Bar chart and Word cloud, and set Show top to 10, 30, 50 or 100 rows.
Press Export to download word-frequency.csv with the Rank, Word, Count and Percentage columns for the rows on screen.
Pro Tips
- The Density tile is Unique words divided by Total words, not keyword density. The number an SEO brief asks for is the percentage printed beside each word in the bar list, which is that word's count over Total words.
- Every percentage is calculated after filtering. With Ignore common words ticked the denominator excludes the stop words, so figures here read higher than in a tool that counts every word; untick it before comparing with another counter.
- Bigrams and Trigrams are assembled from the filtered word list, so with Ignore common words on the pairs are content words that were not next to each other in the original. Untick it first if you want genuine phrases.
- The stop word list follows the page language, not your text. Analysing a German passage on the English page strips English function words and leaves der, die and und at the top; open the German version of this tool instead.
- Export only writes the rows currently shown, and Show top defaults to 30. Set it to 100 before pressing Export if you want the long tail in word-frequency.csv.
Troubleshooting
A single letter such as t or s appears high in the ranking.
Words are split on every character that is not a letter or a digit, so contractions come apart: don't becomes don and t, and it's becomes it and s. Replace the apostrophes in your text before pasting, or read past those rows.
Total words is much lower than the word count my editor reports.
Ignore common words is ticked by default and removes roughly seventy function words of the page's language before anything is counted. Untick it to see the full count, and note that every percentage will change because the denominator grows.
The exported CSV stops after 30 rows.
Export writes exactly the rows on screen, and the Show top selector defaults to 30. Set it to 50 or 100, wait for the table to redraw, then press Export again.
A German or Turkish text still shows und, der or bir at the top.
The stop word list is chosen from the language of the page you are on, not from your text. Open the same tool on its German or Turkish address and paste the text there so the matching list is used.
Frequently Asked Questions
A tool that takes a block of text, splits it into words and reports how many times each one occurs, ranked from most to least frequent. This one adds the share of the total each word represents, a unique-word count, three n-gram modes and a CSV export. The whole calculation happens in your browser as you type, so the text never leaves the page.
Finding repetition you stopped noticing, checking that a document really covers the terms it claims to, building vocabulary lists for teaching, comparing two drafts for variety, and measuring how often a target term appears in a page. It is also the first step of most text analysis: the ranked list tells you what a document is about before you read a word of it.
Not by uploading one — this page has no file picker, only a text box. Open the PDF in any reader, select the text, copy it and paste it here. Scanned PDFs hold images rather than text, so nothing will come across; those need OCR first. The same applies to .docx files and spreadsheets.
Yes, and there is nothing to sign up for. The counting is done by JavaScript in your own browser, so there is no server quota to sell and no cap on how long a text can be beyond your device's memory. The CSV export is included rather than being the paid part.
No. It runs in the browser tab you already have open, on a phone as well as a desktop, and it keeps working on a text you have already pasted if the connection drops, because the analysis is local. There is no desktop download and no browser extension to add.
Three lines: split the text with re.findall(r"[^\W_]+", text.lower()), pass the result to collections.Counter, and call .most_common(30). Add your own stop word list if you want to filter function words. This page does the same steps and adds the percentages, the n-gram modes and the export, which is the part that takes the longest to write yourself.
It is Unique words divided by Total words, shown as a percentage. In the sample paragraph used on this page it read 61.5%, meaning 16 distinct entries across 26 counted words. A high value means varied vocabulary; a low value means the same words come round again. It is not the density of any single keyword, which is the percentage next to each row.
Because Ignore common words is ticked by default and removes about seventy of the most frequent function words in the page's language before counting. Untick that checkbox and the, and, of and the rest reappear in the ranking, and Total words rises to include them, which lowers every percentage.
Not while Ignore case is ticked, which is the default: Word, word and WORD are folded into one entry. Untick it and they are counted separately, which is useful for checking proper nouns or brand names but usually splits ordinary words across two rows depending on where a sentence began.
Yes. The Export button saves a file named word-frequency.csv with four columns — Rank, Word, Count and Percentage — one row per entry currently displayed. That means the export honours the Show top setting, so raise it from the default 30 to 100 if you want more rows in the file.