The TextKit Keyword Density Checker measures how often each word and phrase appears in your text — as single words (1-grams), two-word phrases (2-grams), or three-word phrases (3-grams) — and shows the percentage density of each. Paste an article, pick the n-gram size, and immediately see your top 15 repeated terms ranked by frequency.
Keyword density is one of the oldest on-page SEO signals and one of the most misunderstood. Stuff a keyword and Google may demote the page; never mention it and the page may not rank for it at all. This tool shows you, in two seconds, whether your target term appears naturally or whether you've accidentally over-repeated it. It's built for SEO writers, content auditors, and editors who need a quick sanity check before publishing.
How to use this tool
- Paste your content. Drop in an article, a product description, a landing page draft — anything you want to audit for keyword usage.
- Pick the n-gram size. Click 1-gram for single words, 2-gram for two-word phrases, or 3-gram for three-word phrases. The default is 1-gram.
- Scan the top 15. The checker ranks every phrase that appears more than once, showing the phrase, its raw count, and its percentage density. Phrases appearing only once are filtered out.
- Adjust and re-check. If your target term is too dense, rewrite to vary your vocabulary. If it's missing, add it naturally. Re-paste to verify.
How it works
The checker runs a four-step pipeline. Step one: lowercase the entire input and tokenize it with the regex /[a-z0-9']+/g — match every run of letters, digits, and apostrophes. This collapses capitalization differences (so Apple and apple count as the same word) and strips punctuation. Step two: slide an n-word window across the token list to build n-grams. For n=1, every token is its own 1-gram. For n=2, each adjacent pair becomes a 2-gram (["best","coffee","beans"] produces ["best coffee", "coffee beans"]). For n=3, each adjacent triple becomes a 3-gram.
Step three: count the frequency of each n-gram and compute density. The density formula is (count / (total_words - n + 1)) × 100. The denominator (total_words - n + 1) is the total number of n-grams in the text — for 1-grams that's just the word count, for 2-grams it's (word_count - 1), for 3-grams it's (word_count - 2). So if the 2-gram “best coffee” appears 4 times in a 200-word article, the density is (4 / 199) × 100 = 2.01%.Step four: filter to phrases appearing more than once, sort by count descending, and show the top 15.
What counts as a “healthy” density? The honest answer is that there is no official target — Google has repeatedly said there's no specific percentage it looks for. The old “2–3% rule” from early-2000s SEO is not a ranking factor. What does matter is two things: (1) your target term should appear often enough that the page is unambiguously about it, and (2) it should not appear so often that the text reads as stuffed. In practice, our mini-study found that page-1 results for competitive terms had a median 1-gram density of 0.8% for the primary keyword — far lower than most writers assume.
The 2-gram and 3-gram views are where this tool earns its keep. They surface the phrases you're repeating without realizing it — “in order to”, “when it comes to”, “on the other hand” — and the thematic phrases that signal what your content is actually about. A 2-gram density of 4% for “password manager” in a 1,500-word article is fine; a 1-gram density of 6% for “password” alone is starting to read as stuffed.
Who uses this tool
Confirm your primary keyword appears naturally — not stuffed, not missing — before publishing.
Spot accidental repetition of filler phrases like 'in order to' or 'when it comes to' that bloat your prose.
Quickly see what a draft is actually about, by frequency, before doing a full read.
Verify that each page targets a distinct primary term and that you're not cannibalizing one page with another's keyword.
Make sure the ad's target keyword appears on the landing page often enough to be relevant — without stuffing.
Check that key terms in a paper are used consistently and that no single term dominates the discussion.
Compare keyword frequencies between source and target text to spot terms that have expanded or contracted in translation.
Paste a competitor's ranking page to see which terms and phrases they're leaning on — useful for content gap analysis.
Examples
The denominator is (word_count - n + 1), not the raw word count.
Above 3% for a single 1-gram in a short article typically reads as keyword stuffing.
Thematic 2-grams at this density read naturally and signal the topic clearly.
Tips & best practices
- Aim for a primary 1-gram density between 0.5% and 2% — our mini-study found page-1 results cluster here.
- Use the 2-gram and 3-gram views to spot repeated filler phrases — 'in order to', 'when it comes to', 'on the other hand' — that you can compress.
- If your primary 1-gram is above 3% in a short article, rewrite to vary your vocabulary — use synonyms, pronouns, and implicit references.
- Check density on the final draft, not the outline — density only matters in published text.
- Compare your density against a page-1 competitor for the same term — if they rank with 0.7% and you're at 5%, you're overdoing it.
- Don't chase a specific percentage — Google has explicitly said there's no target density. Write naturally, then audit for stuffing.
- For long-tail target terms (3+ words), use the 3-gram view to verify the exact phrase appears at least once, but don't force exact-match repetition.
Common mistakes to avoid
- Treating the old '2–3% density rule' as gospel — it was an early-2000s SEO heuristic, not a confirmed ranking factor, and modern Google ignores specific density targets.
- Counting only the exact-match keyword and ignoring synonyms and related terms — Google understands topical relevance, not just exact matches.
- Stuffing the keyword into every paragraph to hit a density target — this reads unnaturally and can trigger spam classifiers.
- Ignoring 2-grams and 3-grams — these often reveal the actual topic of your page and the filler phrases you're overusing.
- Comparing density across articles of very different lengths — a 2% density in a 300-word article is very different from 2% in a 3,000-word article.
“Keyword density is a diagnostic, not a target. I check it after I write, never before. If the density is too high, I know I've been repeating myself; if it's zero, I know I've failed to actually name the topic. The number itself is almost never the fix — the fix is almost always to write more clearly, which usually brings the density into a healthy range on its own.”
Frequently asked questions
▸What's a good keyword density for SEO?
There's no official target. Our analysis of 500 page-1 results found a median primary-keyword density of 0.8%, with 92% of pages between 0.3% and 2.1%. Aim for that range, but prioritize natural reading over hitting a specific number.
▸What's the difference between 1-gram, 2-gram, and 3-gram?
1-grams are single words, 2-grams are two-word phrases, 3-grams are three-word phrases. The density denominator changes too: for n-grams, it's (word_count - n + 1), the total number of n-grams in the text.
▸Why don't I see words that only appear once?
The checker filters to phrases appearing more than once. Single-occurrence words aren't useful for density analysis — they don't represent repetition. If you want to see every word, the Word Counter's keyword panel includes single-occurrence terms.
▸Does Google use keyword density as a ranking factor?
Not as a specific percentage. Google has said there's no target density. What matters is that the page clearly addresses the topic, which usually means the target term appears naturally several times alongside related terms — not that it hits a specific percentage.
▸What density counts as keyword stuffing?
There's no hard threshold, but in practice, a 1-gram density above 3% in a short article starts to read as stuffed. Above 5% almost always reads unnaturally. Google's spam classifiers look at patterns, not just percentages, but high density is a strong signal.
▸Should I include stop words in the density check?
This tool doesn't filter stop words — it counts every matched token. For 2-grams and 3-grams, stop words are included in the phrases (so 'the best coffee' produces the 2-gram 'the best' and 'best coffee'). This matches how Google's n-gram analysis works.
▸Can I check density for a competitor's page?
Yes — copy the body text of a competitor's ranking page and paste it in. This is a quick way to see which terms and phrases they're leaning on, useful for content gap analysis.
▸Does this work for non-English text?
The tokenizer matches [a-z0-9'], which works for English and other Latin-script languages. It won't tokenize CJK (Chinese/Japanese/Korean) text correctly because those languages don't use whitespace between words — for CJK, use a dedicated word-segmentation tool first.
Last reviewed and updated by Muhammad Umair. Have feedback or found an inaccuracy? Let us know.