KEYWORD DENSITY CHECKER

Check word and phrase repetition

Fetch a public URL or paste draft copy to count 1-to-4 word phrase frequencies, measure vocabulary variety, and check exact target keyword coverage. Use this report as an editorial repetition heuristic—keyword density is not a Google ranking factor.

How to measure word and phrase frequency

To inspect word repetition, n-gram phrase frequency, and target phrase coverage in your content, select your input mode and run the analyzer.

  1. Select From URL to extract and analyze the body text of a public webpage, or select Paste text to analyze draft copy live as you type.
  2. Enter the webpage URL (or paste your text into Page copy) and optionally enter a word or multi-word phrase in the Target keyword field.
  3. Select Analyze Frequency to generate the Content repetition report.
  4. Review the four top diagnostic rows (Enough copy to analyze, Unusual repetition heuristic, Vocabulary variety, and Target keyword), then inspect the four frequency tables: Top words, Two-word phrases, Three-word phrases, and Four-word phrases.

Reading your results: Checks, formulas, and n-gram tables

Unlike legacy SEO tools that invent a 0–100 "optimization score" for keyword density, SolViewer prints an unscored Content repetition report (`report` badge) so you never confuse word repetition with search ranking quality. Here is the exact math behind every row and table:

Report row / Table Basis Exact formula & thresholds in analyzeDensity
Enough copy to analyze Heuristic Requires at least 20 total words and at least 5 meaningful tokens (words longer than 2 characters after stopword filtering). Passes at 50+ total words, warns at 20–49 words, and fails below that threshold so short snippets are not misjudged.
Unusual repetition heuristic Heuristic Calculates top single-word density as (top_word_uses ÷ total_words) × 100. Passes at ≤ 5.0%, warns at 5.1%–8.0%, and fails above 8.0%. Explicitly notes: "Google publishes no ideal density percentage."
Vocabulary variety Heuristic Counts distinct meaningful words (new Set(meaningful).size) and passes when unique meaningful words reach at least min(20, ceil(meaningful.length × 0.4)).
Target keyword Heuristic When a target word or phrase is entered, counts exact consecutive token matches and computes word coverage: (exact_uses × phrase_token_length ÷ total_words) × 100. Classifies coverage into fixed writing bands: missing (0 uses), safe (≤ 3.00%, Pass), watch (3.01%–5.00%, Warn), or stuffing (> 5.00%, Warn).
1-to-4 Word Phrase Tables Evidence Lists the top 10 single meaningful words and top 8 Two-word, Three-word, and Four-word phrases, printing both exact use count and word coverage percentage (count × N ÷ total_words × 100). Phrases composed entirely of stopwords are excluded.

Capability boundary: All percentage bands in this tool are editorial writing heuristics designed to help you spot repetitive phrasing and keyword stuffing. They are not search engine ranking targets.

Worked example: How word-coverage math works for multi-word phrases

Many n-gram counters divide a 3-word phrase's count by the total word count (`count ÷ total_words`), which under-reports how much of the text is actually occupied by that phrase. SolViewer uses word coverage (`count × phrase_length ÷ total_words`). Consider a 200-word product guide where you enter the 3-word target phrase xml sitemap validator:

Total words in analyzed copy: 200 words
Meaningful tokens (excluding stopwords & ≤2-char words): 118 words
Target keyword entered: "xml sitemap validator" (3 tokens)
Exact occurrences in text: 2 uses

Here is how the analyzer computes the report for that 200-word passage:

  1. Sufficiency & vocabulary check: With 200 total words and 118 meaningful tokens (say, 74 distinct meaningful words), both Enough copy to analyze and Vocabulary variety pass.
  2. Word coverage calculation: Because the 3-word phrase xml sitemap validator appears 2 times, it accounts for 2 × 3 = 6 words out of the 200 total words, or 3.00% word coverage.
  3. Band classification: At 3.00%, Target keyword lands inside the safe writing band (≤ 3%) and passes: "Status: safe — 2 exact uses and 3.00% word coverage." If you forced the same 3-word phrase into a 200-word section 4 times (12 ÷ 200 = 6.00%), the status would switch to stuffing (Warning), alerting you that the paragraph reads awkwardly.

Why keyword density is not a Google ranking factor (and how to use n-grams properly)

In early 1990s search engines, repeating a term more often increased a document's raw term-frequency score. Modern search engines rely on semantic embeddings, entity relationships, BM25 saturation (where additional repetitions yield diminishing returns approaching zero), and site-wide context. Google Search representatives have repeatedly confirmed that there is no optimal keyword density percentage, and Google's Spam Policies on keyword stuffing explicitly penalize pages that repeat words or phrases unnaturally to manipulate rankings.

Instead of chasing a target percentage, experienced technical writers and SEOs use an n-gram frequency analyzer for three practical editorial tasks:

  • Catching accidental verbal tics and over-repetition: When drafting a 1,500-word guide, writers often repeat the same 2-word or 3-word transition or noun phrase 25 times without realizing it. Scanning the Two-word and Three-word phrases tables highlights overused phrases so you can replace them with clearer pronouns or specific technical terms.
  • Verifying primary topic alignment: If a page is meant to explain HTTP response headers, but the Top words and Two-word phrases tables are dominated by generic marketing words (solution, platform, business, workflow), the copy is likely too vague to answer the reader's technical query.
  • Auditing boilerplate-stripped URL copy: In From URL mode, SolViewer strips navigation menus, footers, forms, dialogs, scripts, and styles before counting tokens—allowing you to inspect the actual vocabulary distribution of a page's body text.

Common problems and fixes

Use these tips when interpreting or troubleshooting your frequency report:

  • Enough copy to analyze fails even though you pasted a sentence.
    Cause: A single sentence or a list of stopwords has fewer than 20 total words or fewer than 5 meaningful tokens, making percentage calculations statistically noisy (for example, 1 use in a 10-word sentence equals 10% density).
    Fix: Paste at least a full paragraph (50+ words) before evaluating repetition bands.
  • Target keyword says Status: missing even though the individual words appear in different sentences.
    Cause: The target keyword check measures exact consecutive token sequences. If you enter on page seo checker, the words must appear adjacent in that order (punctuation/case normalized) to count as an exact match.
    Fix: Check the Top words and Two-word phrases tables to see how the constituent words are distributed across your copy.
  • English or Vietnamese stopwords (`the`, `and`, `của`, `những`) do not appear in the Top words table.
    Cause: By design, the analyzer detects the document language (`<html lang>` in URL mode or `navigator.language` in Paste mode) and filters out English (`en`) or Vietnamese (`vi`) stopwords (or both when language is unspecified), along with 1–2 character tokens, from the single-word table.
    Fix: Multi-word phrases (2–4 words) still allow internal stopwords (such as "view source on iphone") as long as the phrase is not composed 100% of stopwords.
  • URL mode word count is lower than the word count in HTML Extractor.
    Cause: In URL mode, Keyword Density Checker removes nav, footer, form, dialog, [role="banner"], [role="navigation"], [role="contentinfo"] so site-wide menu links do not skew your article's phrase counts.
    Fix: If you want every word in document.body including navigation chrome, copy the text from HTML Extractor and paste it into Paste text mode here.

How this check works

In From URL mode, SolViewer fetches the server-returned HTML, parses it with DOMParser, removes non-editorial landmarks (script, style, noscript, svg, nav, footer, form, dialog, [role="banner"], [role="navigation"], [role="contentinfo"]), and reads the remaining body text and <html lang> attribute. In Paste text mode, analysis runs locally on every keystroke using your browser's locale.

Text is normalized with Unicode NFKC and segmented into word-like tokens using the browser's native Intl.Segmenter API (with a Unicode letter/number regex fallback). All URL requests follow the SolViewer public retrieval limits.

Frequently asked questions

Is keyword density a Google ranking factor?

No. Google does not use a target keyword density percentage to rank pages. Repeating a keyword to hit an arbitrary number like 2% or 3% will not improve rankings, and excessive repetition can violate Google's spam policies on keyword stuffing.

Why does this report show a dash (—) instead of a 0–100 score?

Assigning a 0–100 grade to keyword density misleads writers into padding or deleting words just to chase a number. SolViewer intentionally omits a numeric score on this report and presents exact token counts, n-gram tables, and heuristic bands for editorial review.

How is word coverage calculated for 2-, 3-, and 4-word phrases?

Word coverage equals (phrase_occurrences × words_in_phrase ÷ total_words) × 100. For example, if a 4-word phrase appears 3 times in a 300-word article, those occurrences cover 12 words, or 4.0% of the article's total words.

What do the safe, watch, and stuffing statuses mean on Target keyword?

They are fixed editorial heuristics based on word coverage: up to 3.00% is labeled safe, 3.01% to 5.00% is labeled watch, and above 5.00% is labeled stuffing. Treat watch and stuffing as a prompt to read the passage aloud and replace clunky repetition.

Does this tool support non-English languages and Unicode scripts?

Yes. Tokenization uses Intl.Segmenter with NFKC Unicode normalization, and built-in stopword lists automatically filter common function words in both English and Vietnamese.

Related tools

  • SEO Checker — audit on-page SEO fundamentals (titles, canonicals, headings, schema, and index directives) that actually affect search visibility.
  • Heading Checker — inspect your H1–H6 outline in HTML source order and check H1 wording clarity.
  • HTML Extractor — convert any webpage or HTML snippet into clean plain text and count lines and sentences.
  • Meta Description Checker — check your meta description for repeated terms, pixel width, and snippet directives.

Public URL requests follow the shared fetch limits on the About page.