Check Keyword Density in Seconds – No Sign-Up Needed
Paste any text and instantly see which words and phrases dominate it, along with their exact frequency as a percentage of your total word count. This keyword density checker catches over-optimised content before it hurts your rankings and highlights thin spots where important terms are barely showing up.
Quick definition: keyword density = (number of times a term appears ÷ total words) × 100. A healthy range for any single term is roughly 1–2%. Above that, search engines may flag the page as keyword-stuffed; below 0.5% for a core topic, the page may not rank well for it at all.
Results show single words and 2–3 word phrases (often called keyword frequency or term density analysis), so you can spot natural-language clusters, not just isolated words. Everything runs in your browser — nothing is uploaded or stored.
How to Use the Keyword Density Checker
- Paste your text into the input box above — an article, a product page, a meta description, anything.
- Click "Analyse" (or the equivalent button — it may run automatically as you type).
- Read the results table. You'll see each word and phrase alongside its count and density percentage, sorted from most to least frequent.
- Adjust your copy based on what stands out — trim terms above 2%, add more mentions of terms that matter but score below 0.5%.
Worked Example
Say you paste the following 50-word paragraph about running shoes:
Running shoes should fit your foot shape first and foremost.
The right running shoe gives you support on long runs.
Cheap running shoes often lack cushioning, so invest in a
quality pair. Good shoes make every run more enjoyable and
reduce injury risk over time.
The checker would return something like this:
| Term | Count | Density |
|---|---|---|
| running | 4 | 8.0% |
| shoes | 4 | 8.0% |
| running shoes | 3 | 6.0% |
| run | 2 | 4.0% |
| shoe | 1 | 2.0% |
Takeaway from this example: "running shoes" at 6% is far too dense for a real page — a clear sign of keyword stuffing. You'd want to swap some instances with synonyms like "trainers," "athletic footwear," or just restructure a sentence.
How to Calculate Keyword Density in Code
If you need to automate this check in a script — say, to audit a batch of pages — here's how to do it in two popular languages.
Python
import re
from collections import Counter
text = "Your article text goes here. Paste the full content."
words = re.findall(r"\b[a-z]+\b", text.lower())
total = len(words)
counts = Counter(words)
for word, count in counts.most_common(10):
density = (count / total) * 100
print(f"{word}: {count} times ({density:.1f}%)")
This strips punctuation, lowercases everything, and prints the top 10 single-word frequencies. Add a sliding window of 2–3 words to capture phrase density as well.
JavaScript (browser or Node.js)
const text = 'Your article text goes here. Paste the full content.';
const words = text.toLowerCase().match(/\b[a-z]+\b/g) || [];
const total = words.length;
const counts = {};
words.forEach(w => { counts[w] = (counts[w] || 0) + 1; });
Object.entries(counts)
.sort((a, b) => b[1] - a[1])
.slice(0, 10)
.forEach(([word, count]) => {
console.log(`${word}: ${count} (${((count / total) * 100).toFixed(1)}%)`);
});
Both snippets give you the raw numbers fast. The online tool above does all of this instantly, including multi-word phrases, so there's no need to run a script for one-off checks.
How It Works Under the Hood
The tool tokenises your text — splits it into individual words by breaking on spaces and punctuation. It then counts every unique word, every unique 2-word sequence (bigram), and every unique 3-word sequence (trigram). Common stop words (like "the," "is," "of") are optionally filtered out so they don't swamp the results.
Each term's count is divided by the total word count and multiplied by 100 to give a clean percentage. The results are sorted by frequency so the most-used terms surface first. All of this runs client-side in JavaScript — your text never leaves your device.
When to Use a Keyword Density Checker — and When to Skip It
Good times to use it
- Before publishing a blog post or landing page — catch accidental stuffing early.
- Auditing older content that has slipped in rankings — over-optimisation is a common culprit.
- Checking competitor pages — paste their text to see which phrases they emphasise.
- Validating SEO rewrites — confirm that your target phrase now appears at the right frequency after editing.
When it won't help on its own
- For very short text (under ~100 words), percentages swing wildly — a single extra word can jump density by a full percent.
- It doesn't replace a full SEO audit. Density is one signal; page structure, backlinks, and semantic relevance all matter too.
- Meta tags and alt text are not factored in when you paste body copy only — analyse them separately if needed.
For related content work, you might also find it useful to structure your data properly — our JSON Beautifier is handy when you're working with SEO audit exports or API responses that come back as compressed JSON, and the JSON Validator helps catch errors in structured data markup before it goes live.
Your text stays private — the checker runs entirely in your browser. Nothing is sent to a server, logged, or stored anywhere.
Paste your content into the tool above and let the numbers guide your edits — a quick frequency scan is one of the fastest ways to tighten up a page before it goes live.