Keyword Density Calculator
Calculate keyword density and frequency for any text. Paste your content and keyword to see how often it appears and whether density is in the recommended SEO range.
Did this tool work for you?
How to use this calculator
Density is the number of whole-word, case-insensitive matches divided by the total word count. The tool labels below 0.5% Too low, 0.5–3% Optimal, above 3–5% Slightly high and above 5% Keyword stuffing; these are its own cut-offs.
- 1
Paste your full page content into the text box.
- 2
Enter the target keyword or phrase.
- 3
Read the status label: below 0.5% is Too low, up to 3% Optimal, up to 5% Slightly high and above 5% Keyword stuffing (the tool’s own cut-offs).
Frequently asked questions
How exactly is the density figure calculated?
Occurrences of the keyword divided by the total number of whitespace-separated words in the box, multiplied by 100 and shown to two decimals. A multi-word phrase counts once per appearance, so “keyword research” appearing 3 times in a 33-word passage is 3 ÷ 33 = 9.09%. The total includes every token you paste, so markup, bullets and stray symbols raise the denominator.
What counts as a match?
This tool matches case-insensitively and by whole word: the characters on either side of the match must not be letters, digits or underscores in any alphabet. “feed” does not match “feeding”, and “café” does not match “Cafés”. Hyphens and punctuation act as boundaries, so “page” matches inside “on-page”. Spaces inside a phrase match any run of spaces or line breaks, and keywords with symbols such as “c++” are matched literally.
What do Too low, Optimal, Slightly high and Keyword stuffing mean?
Below 0.5% is Too low, 0.5% to 3% is Optimal, above 3% up to 5% is Slightly high, and above 5% is Keyword stuffing. Those four cut-offs are written into this tool. They are not limits published by any search engine, and the tool cannot tell whether your repetition reads naturally.
My short paragraph was flagged as stuffing even though it reads normally. Why?
On short text each occurrence moves the percentage a lot. In a 93-word paragraph about sourdough starters, the word “starter” appears 5 times and scores 5.38%, which lands in the top band, while “flour” appears once and scores 1.08%. Treat the label on a short passage as a prompt to reread it, and run the full page text for a steadier figure.
Does it count plurals, synonyms or related phrases?
No. It counts only the exact word or phrase you type, with the boundary rules above. To measure “starter” and “starters” together, run both and add the counts yourself. It also cannot tell you whether a page covers the related terms a reader would expect.
Should I paste the HTML source or only the visible text?
Paste the visible text. The calculator treats every space-separated token as a word, so a pasted tag such as <h2> or an attribute string adds to the total and lowers the density. It also has no idea which words sit in the title, headings or image alt text; it only sees the text you give it.
Does a result in the Optimal band mean the page will rank?
No. The tool measures how often a string repeats and nothing else. It does not look at search intent, competing pages, links or page quality, and it makes no prediction about rankings.
Keyword density: the arithmetic, the matching rules and the cut-offs
The arithmetic behind the percentage
Density here is occurrences ÷ total words × 100. Total words is the count of whitespace-separated tokens in the text box, so a dash standing alone or a pasted tag counts as a word. A phrase is counted once per appearance, not once per word it contains. In the passage “Our guide to keyword research explains how keyword research works. Good keyword research starts with a seed list…” the phrase keyword research appears 3 times in 33 words, giving 3 ÷ 33 = 9.09%. Counting both words of each match would have doubled that to 18.18%, so compare phrases with phrases and single words with single words.
What the matcher treats as a hit
Matching ignores case and requires a clean edge on both sides: the neighbouring character cannot be a letter, digit or underscore. The table shows what that means in practice, using runs of the calculator.
| Keyword | Text | Result |
|---|---|---|
| café | Café culture is big. Visit a café today, because every café has its own style. Cafés differ though. | 3 matches in 18 words (16.67%); “Cafés” is not counted |
| c++ | Learn C++ and C# . C++ is fast. Many teams still pick C++ for games and tools today ok. | 3 matches in 19 words (15.79%) |
| page | Our on-page checks cover every page. A good page loads fast and the other page too. | 4 matches in 16 words; the hyphen in “on-page” counts as a boundary |
| keyword research | We cover keyword (line break) research in depth, and keyword research again. | 2 matches in 10 words; line breaks and repeated spaces inside the phrase are accepted |
The four status bands
After the percentage is computed it is placed into one of four bands. These are the tool’s own thresholds.
| Density | Label shown |
|---|---|
| Below 0.5% | Too low |
| 0.5% to 3% | Optimal |
| Above 3% to 5% | Slightly high |
| Above 5% | Keyword stuffing |
A worked example on natural prose
Take a 93-word paragraph about feeding a sourdough starter. The word “starter” appears 5 times: 5 ÷ 93 = 5.38%, labelled Keyword stuffing. “Flour” appears once, 1.08%, labelled Optimal. Add eight more mentions of “starter” and the text becomes 101 words with 13 hits, 12.87%. The first result shows how a single on-topic paragraph can cross a band on word choice alone; the second shows the kind of repetition the top band is meant to catch. Neither number says anything about how a search engine would treat the page.
Where the figure stops being useful
Because the tool matches exact strings, it cannot see stems, plurals or synonyms, and it does not know which text is a heading or a link. Use it as a spot-check for accidental repetition in a draft, for example to confirm that a phrase you meant to use twice did not end up in every paragraph. Decisions about what a page needs to cover are better made by reading the pages that already answer the same query.
Learn more from an authoritative source:
Google Search CentralMeta Description Checker
Check your meta description length, character count, pixel width, and SEO quality. Get instant feedback on whether it will display fully in Google search results.
Title Tag Checker
Check a title tag’s character length, approximate pixel width and keyword position against the length figures built into this tool. Search engines choose how titles are displayed, so treat the result as a guide.
Reading Level Calculator
Calculate the reading level and readability score of any text using the Flesch-Kincaid formula. Find out what grade level your content targets.
SERP CTR Estimator
Estimate monthly organic traffic from search volume and SERP position. Uses industry-average click-through rates by ranking position to project traffic potential.
SEO Word Count Checker
Count the words in your content and see reading time, sentence statistics and where the total sits against the length bands built into this tool. Word count alone does not decide how a page ranks.
Open Graph Checker
Check the Open Graph and Twitter Card meta tags for any URL — see exactly how your page appears when shared on social media.
Results are estimates for informational purposes only and do not constitute professional financial, medical, legal, or technical advice. Read full disclaimer →