Skip to content
SocialTools

Keyword Density Checker

Paste draft copy to see how often a keyword appears. Use it to avoid stuffing, not to hit a magic percentage.

SEO ToolsSEOReviewed 2026-09-11 by SocialTools editorial. How we test
Total words
0
Keyword count
0
Density %
0%
Ideal range
1-2%

Aim for 1-2% keyword density. Over 3% may look like keyword stuffing to search engines.

Runs in your browser. Nothing you enter is uploaded.

Overview

Keyword density is a ratio: how many times an exact phrase appears divided by the total number of words on the page. This checker computes it locally as you type, showing the raw match count alongside the percentage so you can see whether a 0.4% reading comes from a long article with few mentions or a short one with none.

The metric has a bad reputation, mostly deserved. It was invented when search engines really did count repetitions, and a decade of people writing "cheap flights to Rome" eleven times per page taught Google to discount the signal. What density is still useful for is the opposite check - noticing that the phrase you built the page around appears exactly once, in the H1, and nowhere in the body.

What a density figure can and cannot diagnose

A density near zero is a genuine finding. It usually means the draft drifted: you outlined a page about "instagram carousel size" and wrote 900 words about design principles without ever using the phrase a searcher would type. Search engines can infer topic from related vocabulary, but there is no reason to make them guess when one natural mention in the opening paragraph solves it.

A density above about 3% is also a finding, and it is almost never solved by deleting instances. High density is a symptom of thin content: the page is short, so each repetition weighs more, or the writing keeps restating the target phrase because it has nothing new to add. Adding substance lowers the ratio and improves the page at the same time.

Between roughly 1% and 2% the number stops being informative. Do not edit sentences to move from 1.3% to 1.7%. Nothing in modern retrieval responds to that difference.

Placement beats frequency

Where the phrase appears carries more weight than how often. One occurrence in the title tag, one in the H1, one in the first hundred words, and one in a subheading covers the positions that actually get parsed as topical signals. Everything after that is ordinary prose.

Modern ranking systems match on meaning as much as on strings, so synonyms and closely related terms count toward topical coverage even though this tool will not score them. A page about "engagement rate" that also discusses saves, shares, reach, and impressions reads as comprehensive to both a human and a language model, regardless of what the density figure says.

  • Title tag - one natural occurrence, ideally near the front.
  • H1 and one H2 - the phrase or a close variant.
  • First paragraph - within the first 100 words, in a real sentence.
  • Image alt text and URL slug - where it genuinely describes the content.

How the count is produced, and why it is stricter than you expect

The text is lowercased and split on whitespace into tokens. Each token is stripped of non-alphanumeric characters, and the same treatment is applied to your keyword. A match is an exact equality between the two cleaned strings. Density is matches divided by total tokens, expressed as a percentage and rounded to two decimals.

The important consequence is that matching happens token by token. A multi-word keyword such as "social media tools" is compared against individual words, so it will report zero matches even on a page that uses the phrase repeatedly. For multi-word targets, check the head noun on its own - "hashtags", "sitemap", "engagement" - and read the result as a proxy.

Stemming is not applied either. "hashtag" and "hashtags" are different tokens and counted separately. That strictness is deliberate: it means the number you see is reproducible and easy to reason about, rather than depending on a language-specific stemmer you cannot inspect.

Reading a result that looks alarming

Input

Keyword: hashtag
Content: a 620-word article about choosing Instagram hashtags

Output

Total words: 620 · Keyword count: 4 · Density: 0.65% · Ideal range: 1-2%

The 0.65% looks like an underuse warning, but four of the mentions are the plural "hashtags" which the exact-match rule counts under a different token. Searching the singular separately returns 19 matches for a combined 3.7%. The correct action here is not to insert more instances - it is to recognise that the exact-match method split one concept across two tokens, and to judge the page on whether the phrasing reads naturally.

Limitations

  • Matching is exact and token-by-token, so multi-word phrases and plural forms report as separate keywords or as zero.
  • No stemming, lemmatisation, or synonym matching. Semantically related terms that search engines do credit are invisible here.
  • The tool counts whatever text you paste. If you include navigation, footer, or boilerplate copy, the denominator inflates and every density figure drops.
  • The 1-2% band shown in the interface is a widely used editorial convention, not a threshold published or confirmed by any search engine.
  • Density says nothing about whether the mentions read naturally, which is the thing search quality systems are built to assess.

When not to use this tool

  • If you want to know which terms dominate a draft rather than how often one term appears, the character frequency counter surfaces the whole distribution instead of a single ratio.
  • If the page is already ranking and you are trying to improve it, query data in Search Console tells you what the page is actually matching - far more useful than a self-reported ratio.

How to use it

  1. 1

    Enter a single distinctive word as the target rather than a full phrase, since matching is token-by-token.

  2. 2

    Paste only the body copy of the page - no navigation, footer, or HTML - so the word total reflects real content.

  3. 3

    Compare the keyword count against total words rather than reacting to the percentage alone; four mentions in 300 words is a different situation from four in 3,000.

  4. 4

    If density is near zero, add one natural mention in the opening paragraph and one subheading, then re-check instead of sprinkling the term throughout.

Questions

My keyword is three words long and the count says zero. Is the tool broken?

No - it compares single tokens, so a three-word phrase never matches a one-word token. Check the most distinctive single word from your phrase instead. If you need true phrase counting, a find-and-replace pass over the draft will give you the occurrence count directly.

Is there a density number that triggers a penalty?

No published threshold exists, and framing it as a penalty is misleading. What gets demoted is content that reads as written for a crawler rather than a person - unnatural repetition is one symptom of that, but a page can be spammy at 1% and perfectly fine at 4% if the topic genuinely requires the term.

Should I include the keyword in every subheading?

No. Subheadings work best when they describe the section beneath them accurately, which usually means using different words. One or two headings containing the phrase or a close variant is plenty; the rest should earn their place by helping someone scan the page.

Does the count include text inside HTML tags if I paste raw markup?

Yes - tags and attribute values become tokens and inflate the word total. Strip the markup first with the HTML-to-text tool so the denominator reflects the copy a reader actually sees.