The page is fetched for you and loaded into the editor, where you can review or edit it before trusting the numbers.
Preview shortened for very long texts — the analysis always covers the full text.
Presets only adjust the guide bands used for status labels — they never change the counts.
Words
Unique words
Reading time
Readability
Avg sentence
| Keyword | Count | Density | Title | H1 | First 100 words | Status |
|---|
Status is a guide, not a Google rule. There is no ideal density, so write for readers first.
| Keyword | First third | Middle third | Final third |
|---|
Each strip divides the text into 20 equal parts; a brighter block means more occurrences of that keyword start in that part.
Densities for your target keywords, counted with the same options on both texts.
| Keyword | Yours | Other |
|---|
Versions are stored only in this browser (localStorage) and are never uploaded. Click a version to restore its text, keywords and options.
Everything stays in your browser. Your text is never uploaded — analysis runs entirely on this device.
See how often each keyword appears in a block of text.
100% free · No sign-up · No daily limits · No watermarks
Analyze many target keywords at once: paste text or page HTML, fetch a public URL, or upload a .txt, .md or .html file. Review counts, densities, Title / H1 / first-100-words placement, phrase tables, distribution and readability, then export the report as CSV, text, Markdown, JSON or PDF.
📖 From the blog: Checking keyword density — and why chasing a percentage is a mistake
A keyword occurring three times in 100 counted words has a simple occurrence-to-word density of 3%. A two-word phrase occurring 7 times in 320 counted words has a density of 7 ÷ 320 = 2.19%. Phrase length, punctuation and the tool’s matching rules can affect comparisons.
Keyword stuffing is repeating a word or phrase so often that the text stops reading naturally — Google's spam policies describe it as filling a page with keywords in a way that manipulates ranking rather than helping readers. There is no official "safe percentage": a phrase can be fine at 3% in a product spec and stuffed at 1.5% in a blog intro. What gives stuffing away is pattern, not a single number, and the tables above show you that pattern:
To fix a flagged phrase: keep the first natural mention, then switch to pronouns ("it", "this tool"), synonyms, or the specific detail the reader actually needs ("the 500-word draft" instead of "the blog post" for the fourth time). Re-run the checker after editing — the phrase count should fall while the page still says everything it said before.
The checker extracts the visible body text from pasted HTML — scripts and styles are ignored, and the page title is checked separately rather than counted — splits it into words made of letters and numbers, and counts every 1, 2 and 3 word phrase. Density is occurrences ÷ counted words × 100. Options can ignore common stop words per language, match case exactly, or also count words inside HTML tags (the page title, meta description and alt / title / placeholder / aria-label values) as extra text after the body. Readability is the Flesch Reading Ease score, 206.835 − 1.015 × (words ÷ sentences) − 84.6 × (syllables ÷ words), and reading time assumes about 200 words per minute.
Paste your content (or fetch a URL or upload a file), add your target keywords, and read the count and density in the target table. Review the context of each use too; a percentage alone cannot show whether the writing is helpful.
There is no guaranteed ideal percentage. Use the term where it helps readers understand the subject, and use related concepts naturally rather than forcing repetitions.
Yes — use the URL input. The page is fetched and loaded into the editor, so you can review exactly what was analyzed. If the site blocks fetching, paste its visible text or page HTML instead. Do not assume an empty result means the page contains no keywords.
They may count punctuation, phrases, navigation and word forms differently. This checker counts letter-and-number words in the visible body text; use the same input and settings when comparing revisions.
Yes — copy a readable report, or download CSV, text, Markdown or JSON, or print a PDF report. Keep a copy alongside your draft to compare changes.
It also counts words found in the page title, the meta description and alt, title, placeholder and aria-label attribute values, as extra text after the body. It is off by default, matching what a reader sees.
No. The live page states that analysis runs entirely on this device and your text is never uploaded. Saved versions are stored only in this browser's local storage, so they stay on this device and disappear if you clear browser storage. Fetching a public URL is the exception in kind: the page has to be loaded into the editor for you to review what was analysed.
There is no universal target percentage that guarantees rankings, and the status labels here are guides, not Google rules. Forcing a phrase in unnaturally to hit a number can make the page worse to read. Check instead that the term appears where it helps — title, headings and the first 100 words are shown in the target table — and that the page actually answers the reader's question.
No. No search engine publishes a target density, and pages written to hit one usually read worse than pages written for the reader. Use the density figure diagnostically: if one phrase's count surprises you, that surprise is the signal.
No tool can see a penalty. What this checker shows is the raw material a stuffing judgement is made from — exact phrase counts, density and placement — so you can spot and fix the pattern yourself.
What is missing, broken, or could be better on this tool? Tell us — we read every suggestion.
✅ Thanks — your suggestion has been received. Suggestions like yours shape what we build next.