The top 1-, 2- and 3-word phrases.
Each table lists up to 20 phrases with their count and their density as a share of all words in the text.
- Stop words left out
- Words, unique words and reading time
Paste up to 50,000 characters of text. The checker counts the most used 1-, 2- and 3-word phrases and how often your target keyword appears, instantly and in your browser, with tables you can copy as CSV.
Free, no account needed. The text is counted in your browser and never sent to MrKeyword.
Built on first-party data from Google and Bing
A keyword density checker counts how often each word and phrase appears in a piece of text, and shows each count as a share of the total number of words. That share is the keyword density: a phrase used 5 times in 500 words has a density of 1%.
The counts are a quick way to see what a page actually talks about. If the phrase you want to rank for barely appears, or a different phrase dominates, the text may not be about what you think it is. If one phrase appears in every sentence, the page reads as written for search engines rather than people.
This checker splits the text into words, leaves common stop words such as “the” and “and” out of the phrase tables, and lists the 20 most used phrases of one, two and three words. It runs in your browser: the text is never sent anywhere.
Each table lists up to 20 phrases with their count and their density as a share of all words in the text.
Type a target keyword to see its exact count and density, then copy every table as CSV into a sheet.
The fictional northwind-plumbing.example drafted a paragraph for its boiler service page and entered boiler service as the target keyword. The paragraph:
A boiler service checks that your boiler is safe and working well. During a boiler service our engineer checks the gas pressure, the flue and the seals, then cleans the parts that wear. Book a boiler service once a year, before the heating season. A yearly service keeps the warranty valid and catches small faults before they become a breakdown.
Run through the checker, it comes out like this:
Target boiler service: 3 times · 5%
| Phrase | Count | Density % |
|---|---|---|
| boiler | 4 | 6.7 |
| service | 4 | 6.7 |
| checks | 2 | 3.3 |
| become | 1 | 1.7 |
| book | 1 | 1.7 |
| breakdown | 1 | 1.7 |
| catches | 1 | 1.7 |
| cleans | 1 | 1.7 |
| during | 1 | 1.7 |
| engineer | 1 | 1.7 |
| faults | 1 | 1.7 |
| flue | 1 | 1.7 |
| gas | 1 | 1.7 |
| heating | 1 | 1.7 |
| keeps | 1 | 1.7 |
| parts | 1 | 1.7 |
| pressure | 1 | 1.7 |
| safe | 1 | 1.7 |
| seals | 1 | 1.7 |
| season | 1 | 1.7 |
| Phrase | Count | Density % |
|---|---|---|
| boiler service | 3 | 5 |
| become breakdown | 1 | 1.7 |
| boiler safe | 1 | 1.7 |
| book boiler | 1 | 1.7 |
| catches small | 1 | 1.7 |
| checks boiler | 1 | 1.7 |
| checks gas | 1 | 1.7 |
| cleans parts | 1 | 1.7 |
| during boiler | 1 | 1.7 |
| engineer checks | 1 | 1.7 |
| faults become | 1 | 1.7 |
| flue seals | 1 | 1.7 |
| gas pressure | 1 | 1.7 |
| heating season | 1 | 1.7 |
| keeps warranty | 1 | 1.7 |
| parts wear | 1 | 1.7 |
| pressure flue | 1 | 1.7 |
| safe working | 1 | 1.7 |
| seals cleans | 1 | 1.7 |
| season yearly | 1 | 1.7 |
| Phrase | Count | Density % |
|---|---|---|
| boiler safe working | 1 | 1.7 |
| boiler service checks | 1 | 1.7 |
| boiler service engineer | 1 | 1.7 |
| boiler service year | 1 | 1.7 |
| book boiler service | 1 | 1.7 |
| catches small faults | 1 | 1.7 |
| checks boiler safe | 1 | 1.7 |
| checks gas pressure | 1 | 1.7 |
| cleans parts wear | 1 | 1.7 |
| during boiler service | 1 | 1.7 |
| engineer checks gas | 1 | 1.7 |
| faults become breakdown | 1 | 1.7 |
| flue seals cleans | 1 | 1.7 |
| gas pressure flue | 1 | 1.7 |
| heating season yearly | 1 | 1.7 |
| keeps warranty valid | 1 | 1.7 |
| parts wear book | 1 | 1.7 |
| pressure flue seals | 1 | 1.7 |
| safe working well | 1 | 1.7 |
| seals cleans parts | 1 | 1.7 |
Example result for a fictional plumbing business (target keyword: boiler service). It is produced by the checker's own code from the paragraph above, at build time; paste your own text to check it.
“Boiler” and “service” top the one-word table, and “boiler service” tops the two-word table, so the paragraph is plainly about the phrase it targets. Used three times in about sixty words, the target already has a high density for so short a text; adding it to every sentence would make the copy read as written for search engines. The better next step is the words a reader needs to decide, such as what a service costs and how long it takes. Our on-page SEO checklist covers where the main keyword belongs on a page: the title, the H1 and the first paragraph.
There is no density Google rewards. Use the keyword where it reads naturally, especially in the title, the H1 and the opening, and stop there.
The same phrase in every sentence, or lists of keywords and towns, reads badly and is named as spam in Google’s spam policies. Cut repeats until the text reads well aloud.
If the phrase you want to rank for is missing from the tables, the page may not be about it. Say it plainly in the title, the H1 and the first paragraph.
When another phrase leads the tables, the page may answer a different search. Check which keyword the page should target, or split it into two pages.
Paste the title, headings and body together if you want to see what the whole page repeats; the checker counts only the text you paste.
Check it when you write or rewrite a page, to see what the text really repeats before you publish.
The number of times a word or phrase appears in a text, divided by the total number of words, as a percentage. A phrase used 5 times in 500 words has a keyword density of 1%.
No. Google has no target density and does not reward hitting one. Write naturally for the reader and use the words they search for where they fit. Repeating a keyword to raise its density is keyword stuffing, which Google’s spam policies name as spam.
Words such as “the”, “and” and “of” are the most common words in almost any English text, so they would fill the top of every table without saying anything about the topic. They still count towards the total number of words, and the target keyword is counted with them in place.
No. The counting runs in your browser, so the text never leaves the page and no account is needed. You can check this in your browser’s network tab: pressing the button makes no request.
Up to 50,000 characters at a time, which is roughly 8,000 words. Longer text is cut at that point, so check a long page in parts.