What is keyword density and how is it calculated?
Keyword density is the share of a text that one particular word takes up, written as a percentage. The formula is keyword density = (number of times the keyword appears / total word count) × 100. If a word appears 6 times in a 600 word article, its density is 1%. Nothing more complicated is going on, which is why the number is easy to check by hand and easy to misread.
The reason the figure gets tracked at all is that search engines read the words on a page to work out what it is about. A page that never uses its target term is hard to match to a query for that term, and a page that repeats one term far more often than a human writer naturally would looks manipulated. Density sits between those two failures and gives a rough measurement of where a draft falls.
The denominator matters more than most people expect. Density measured against every word in a document, function words included, always produces smaller percentages than density measured against content words only. Two tools can report 1.3% and 2.6% for the same word in the same text and both be correct, because they counted different totals. Whenever you compare a density figure to a target range, check which total it was measured against.
How to check keyword density in this tool
Paste your text into the box on the left. The counting starts as you type, with no button to press. Words are extracted with a Unicode aware pattern that keeps letters and digits and drops everything else, so punctuation, quotation marks and line breaks do not create phantom words, and text in non Latin scripts is tokenised rather than ignored. Hyphenated forms are split at the hyphen, so state-of-the-art is counted as four separate words.
Two controls change what gets counted. Min word length sets the shortest word the tool will keep, with a default of 3, which removes two letter fragments that carry no topical meaning. Exclude stopwords is on by default and drops a fixed list of roughly 130 English function words such as the, and, is, with, that and would. Both controls act on the same filtered pool, and everything the results table reports is measured against that pool.
The output panel shows the total word count before filtering, the number of unique words after filtering, and a table of the 30 most frequent words with their raw count and their density to two decimal places. All of it runs inside your browser. No text is sent to a server, nothing is stored, and the page works with the network disconnected, which makes it safe for unpublished drafts, client copy and internal documents.
A worked keyword density calculation
Take a product page about an espresso machine. The raw text is 820 words. With the default settings, stopword removal and a three character minimum strip out roughly 390 of those, leaving a filtered pool of 430 words. The word espresso appears 11 times. The tool reports 11 / 430 × 100 = 2.56%.
Now switch Exclude stopwords off and set Min word length to 1. The pool becomes the full 820 words and the same 11 occurrences now read as 11 / 820 × 100 = 1.34%. The text has not changed and the word still appears exactly 11 times. Only the denominator moved. This is the single most common reason two keyword density tools disagree, and it is worth reproducing once on your own text so the behaviour stops being surprising.
The count column is the value to act on when you are editing. If espresso appears 11 times and machine appears 19 times, the page is arguably more about machines than about espresso, and the fix is an edit to the copy rather than an adjustment to a percentage target. Densities are a summary; the counts are the evidence.
What is a good keyword density for SEO?
No published threshold guarantees a ranking, and search engines have never confirmed one. The widely repeated working range is 1% to 3% for a main term, which is less a rule than a description of what unforced writing tends to produce. A 1200 word article that mentions its subject 15 to 30 times reads normally to a person. One that mentions it 90 times does not.
Readings above roughly 4% to 5% are worth a second look, not because a penalty fires at a fixed number, but because that level of repetition usually means sentences were bent to fit the term in. Search engines have matched pages on synonyms and related concepts for years, so a page can rank for a phrase it never states verbatim. Repeating one exact string is not the lever it was in 2010.
A more useful way to read the table is as a topic profile rather than a single score. If you wrote a guide to cold brew coffee and the top rows are coffee, brew, water, grind and steep, the page is about what you intended. If the top rows are click, offer, today and best, the page is about a promotion, whatever the headline says.
Limits of this checker
The tool counts single words only. It does not count multi word phrases, so a two word target term such as running shoes appears in the table as two separate rows, running and shoes, each with its own count. To judge a phrase, read the two rows together and check the copy for how often they actually occur side by side.
There is no stemming or lemmatisation. Optimise, optimises, optimising and optimisation are four distinct rows, and their combined presence in the text is larger than any single row suggests. The stopword list is English only, so running the checker over German, Spanish or French text with the filter on will still leave that language's function words in the table, usually occupying the top rows. For those languages, raise Min word length or simply read past the first few entries.
Only the top 30 words are listed, so a long document's tail is not shown, and the unique word count is the figure to look at if you want a sense of vocabulary range. The tool measures text you paste in; it does not fetch a URL, so for a live page copy the rendered body text rather than the HTML source, since markup would otherwise be counted as words.