Keyword density checker. With a real threshold.
Paste any body of text or a URL, get per-word, per-bigram, and per-trigram density. Stop-word filtering on. Flesch reading ease bundled. Over-optimization warnings calibrated per content type: a 4 percent density on a product page is fine, on a blog post it is a problem.
Density is not a ranking factor. Stuffing still tanks rankings.
Google has publicly said since 2011 that keyword density is not a direct ranking signal. Every serious SEO repeats that line. What they skip: extreme repetition still trips Google's spam-detection classifiers, and the 2024 March Core Update specifically downranked pages with unnatural keyword repetition. So density matters, just not the way keyword-stuffing tools from 2012 framed it. The right mental model is over-optimization detection: use density as a red-flag check, not a target to hit.
The calibrated thresholds by content type in the checker above come from tracking what survives core updates versus what gets penalized. On a product description, repeating the SKU name 4 percent of the time is natural because the page is literally about that SKU. On a blog post, 4 percent on a single term reads forced to any human reader and signals over-optimization to Google. Landing pages sit in the middle. The tool ships different presets because the safe bracket is page-type dependent.
Bigram and trigram analysis matters more than single-word density for most ecommerce and agency pages. Your target is almost never a single word; it is a phrase like shopify plus agency or custom shopify theme development. The raw frequency of shopify on the page might be fine, but the repeated occurrence of the exact 3-gram is the real over-optimization signal. The tool exposes all three n-gram levels so you can analyze at the granularity of your actual target phrase.
Readability is bundled because the two metrics interact. Pages that score low on Flesch ease (college-level, long sentences, polysyllabic jargon) tend to get stuffed during rewriting as editors try to boost keyword presence. Pages that score high on readability (simple sentences, everyday vocabulary) absorb keyword variation naturally because humans write more fluid prose at that level. The checker bundles Flesch reading ease plus Flesch-Kincaid grade level so you can tune both in one pass.
Tools in the same cluster: Meta tag generator to write the title and description once density is under control. Schema markup generator to ship structured data. XML sitemap generator for the sitemap this page will live inside.
Six answers.
What keyword density is too high?
There is no single safe number, which is why most tools refuse to give one. Our calibration by content type: on a blog post or editorial article, flag anything above 2.5 percent on a single target term; on a landing or service page, 3 percent; on a product description, 4 percent (catalog pages naturally repeat the product name more). These are over-optimization warning thresholds, not ranking formulas. Google uses thousands of signals and has publicly said density is not a direct ranking factor, but extreme repetition still triggers spam-detection heuristics. The checker above flags per-bracket.
Are bigrams and trigrams more important than single-word density?
Usually yes. Most commercial keywords are multi-word phrases (shopify plus agency, custom shopify theme development, ecommerce growth strategy), so single-word density often mis-reads keyword stuffing as natural vocabulary. The 2-gram and 3-gram tables surface real phrase-level repetition. If your target is shopify plus agency and the 3-gram shows that exact phrase appearing 18 times in 1,200 words, that is the number to check against the threshold, not the raw shopify count. The tool shows all three n-gram levels so you can match analysis to your target phrase length.
Should I exclude stop words?
Yes by default. Stop words (the, a, an, is, of, in, to, and similar grammatical words) are the highest-frequency tokens in any English text and flood the density chart without telling you anything useful about topic focus. The checker excludes a standard English stop list by default. Turn it off when debugging unusual text (legal documents, poetry, transcripts) where stop-word distribution carries meaning, or when analyzing non-English content: the tool currently ships an English stop list only; for German, Spanish, or other languages, disable filtering and manually interpret.
What is a good Flesch reading ease score?
Flesch reading ease runs 0 to 100, higher is easier. Target brackets by content type: marketing blog 60 to 70 (8th to 10th grade reading level, which is where most US adults comfortably read); technical documentation 50 to 60 (10th to 12th grade); legal or medical 30 to 50. Below 30 the text is college-level and harder to skim. Above 80 reads simple and often choppy. The formula penalizes long sentences and polysyllabic words, so the fastest way to raise a low score is to break long sentences and replace 4-syllable jargon with 2-syllable synonyms. The checker bundles the score so you can tune density and readability in one pass.
Does pasting a URL ping the target server?
Yes, one browser-side fetch via a public CORS proxy (isomorphic-git corsproxy as fallback) to retrieve the raw HTML. The tool strips tags client-side and runs density analysis on the extracted text. The fetched HTML is never uploaded or saved anywhere; it lives in memory for the tab only. If you do not want to issue that fetch at all, paste the text directly into the textarea and the URL mode is bypassed entirely. The URL mode is opt-in, off by default.
Does this tool save my text?
No. Every word you paste lives in memory for this browser tab only. Nothing is transmitted to a DH server, stored in a database, or synced. The Copy Results button puts a plain-text summary on your clipboard; that is the only output path. The tool uses localStorage optionally to remember your last content-type preset and stop-word setting, which you can clear by wiping browser data.
One metric. Not enough.
Our SEO engagements ship content systems: target-keyword research, entity coverage audits, passage-level citability checks, and monthly refresh cadence against decay signals in Search Console. Written plan in 2 weeks.