Analyse keyword frequency and density for 1, 2, and 3-word phrases with stop-word filtering. Enter a target keyword to see its density, position heatmap, and stuffing warnings. Shows word count, unique word ratio, and a visual density bar for every top term.
Paste the full text of your article, blog post, landing page, or any content you want to analyse. The tool accepts plain text — HTML tags are stripped automatically. The word count, sentence count, and unique word ratio update as you type.
Enter your target keyword or phrase to see its specific density, count, and distribution throughout the text. The keyword is highlighted in the text with its position shown as a density heatmap. If no keyword is specified, the top-frequency terms are shown automatically.
Three tabs show 1-word (unigram), 2-word (bigram), and 3-word (trigram) phrase frequencies with density percentages and visual bars. Stop words can be toggled on or off. Over-used terms (>3.5% density) are flagged with a stuffing warning.
Keyword density is the percentage of times a keyword appears relative to the total word count: (keyword count ÷ total words) × 100. Industry consensus suggests 1–3% for primary keywords is a reasonable target — enough to signal relevance without appearing spammy. However, Google does not confirm an ideal keyword density and evaluates content holistically. What matters more is natural language variation, semantic relevance (related terms and synonyms), and whether the keyword appears in important locations (title, H1, first paragraph, meta description).
Keyword stuffing is the practice of excessively repeating target keywords in an attempt to manipulate rankings. It includes: pasting the same keyword many times in a row, hiding keyword lists using white text on white background, using keywords in content where they make no sense contextually. Google classifies it as spam in its Search Quality Guidelines and can penalise pages. A density above 3.5% for a single keyword phrase across several hundred words of content is often considered excessive, particularly if the text reads unnaturally.
Stop words are common function words that appear in nearly every piece of text and carry no specific topical meaning: the, a, an, and, of, in, on, for, to, with, is, are, was, were. Filtering stop words from keyword density analysis gives a clearer picture of your content's actual subject matter by highlighting the substantive terms. Keeping stop words included makes it harder to identify meaningful keywords because function words always dominate the frequency table.
A bigram is a 2-word phrase (e.g. "content marketing", "SEO strategy"). A trigram is a 3-word phrase (e.g. "on-page SEO tips", "keyword density checker"). Most people search using multi-word queries, so multi-word phrase density is often more relevant to your actual target keywords than single-word frequency. Analysing bigrams and trigrams helps identify whether your content naturally covers the phrase-level keywords your audience searches for, and reveals over-repetition of specific phrases more accurately than single-word analysis.
Keyword density measures how often a term appears relative to your document alone — it is self-referential. TF-IDF (Term Frequency–Inverse Document Frequency) measures how important a term is relative to a larger collection of documents. A word that appears frequently in your document but rarely across the web (high IDF) is likely a strongly topical, distinctive term. A word that appears frequently both in your document and everywhere on the web (low IDF) is probably a stop word or common phrase. TF-IDF is a more sophisticated measure of topical relevance than raw keyword density.
No specific density target is confirmed by Google as optimal. Modern best practice focuses on: natural language variation (use synonyms and related terms, not the same phrase repeatedly), semantic coverage (ensure your content covers the topic comprehensively), placement (keyword in title, H1, early in body, and naturally throughout), and user intent alignment (content answers what the user actually wants to know). Write for humans first, check density as a sanity check afterwards, and aim for natural prose over mechanical keyword insertion.