Keyword stuffing is the unnatural repetition of keywords on a page to manipulate search engine rankings. Google lists it among the violations of its spam policies for Google web search and deals with it in two ways: through automated ranking systems and, where needed, through a human review that results in a manual action.
Most guides on the subject end with the same advice: keep keyword density between 1% and 2%. That figure does not appear in any document Google has published: it is one of the SEO myths born from a plugin. We measured the 90 Italian-language articles on this blog: applying that rule, 60 of the 90 would need rewriting. None of the 90 is keyword stuffed.
The three examples Google calls keyword stuffing
Google Search's spam documentation says nothing about percentages. It describes three behaviours, and describes them precisely enough that you can spot them on a real page in under a minute.
| Example in Google's spam policies | What it looks like on a real site | Where it turns up most often |
|---|---|---|
| Lists of phone numbers without substantial added value | A contact page with twenty different numbers, one per county, all ringing the same switchboard | Technical support, emergency call-out services, franchised services |
| Blocks of text that list cities and regions that a web page is trying to rank for | A footer with a hundred and twenty towns separated by commas, repeated word for word on every page of the site | Trades, professional firms, e-commerce with nationwide delivery |
| Repeating the same words or phrases so often that it sounds unnatural | The keyword squeezed into every paragraph and set in bold, often in exactly the same form | Blog posts, product pages, text generated in bulk |
The second example is the one that matters most for local businesses, and I'll come back to it. None of the three is about how many times a word appears in a text: all of them are about the lack of content around that word. It is a practical distinction, not a philosophical one, and it completely changes what you need to check during an on-page audit.
Keyword density is not a Google metric
Keyword density is a calculation someone came up with in the early 2000s: occurrences divided by total words, times a hundred. It is easy to measure, which is why it has survived twenty years of algorithm updates. The guides ranking on page one today give thresholds that disagree with each other, from 1% to 5%, all presented as if they came from Google. None of them has a source.
The reason there is no source is technical. Since 25 October 2019 Google has used BERT to interpret queries: Pandu Nayak, then Google Fellow and Vice President of Search, announced it would affect one in ten searches in English in the United States. The point of the announcement was that the system reads the context of words, the ones before and the ones after. A page that repeats "heat pump" forty times tells that system nothing more than one that names it eight times and explains how to size it.
To see how far the 1-2% rule is from real writing, we measured our own archive: 90 Italian-language articles published on visilay.com, all over 800 words. For each one we took the most repeated term, excluding function words, and calculated its density.
| Density of the most repeated term | 90 Italian-language articles on visilay.com |
|---|---|
| Minimum | 0.64% |
| Median | 2.26% |
| Mean | 2.68% |
| Maximum | 6.62% |
| Articles below 1% | 3 |
| Articles between 1% and 2% | 30 |
| Articles above 2% | 57 |
| Articles above 3% | 31 |
Two thirds of the archive falls outside the recommended range. The article with the highest density, 6.62%, is the one on training courses: the repeated word is "SEO", 105 times in 1,586 words. That isn't stuffing, it's what the subject is called. The one with the lowest density, 0.64%, is the guide to E-E-A-T, where the most frequent term is "esperienza" (experience), nine times in 1,412 words.
The case that settles the argument is the article on SEO for manufacturing. Its most repeated term is "pagina" (page), 17 times in 2,541 words: a density of 0.67%, the second lowest in the archive. It is the piece that documents our work for Macropix, a Milan-based manufacturer of custom LED screens, which reached first place in Italy for "ledwall", 4,400 searches a month on Google Italy. If density were a factor, that article should not have worked.
On local business sites, keyword stuffing lives in the footer
The textbook keyword-stuffed paragraph has almost disappeared from blogs. It has survived in one place, put there by a local SEO tip repeated for years: the list of towns at the bottom of the page.
The pattern is always the same. A plumber, a locksmith or a boiler repair firm puts a line at the bottom of the site listing eighty or a hundred and twenty towns in the area, sometimes three lines with the keyword repeated in front of each town. It is exactly the second example in Google's documentation, quoted almost word for word: "blocks of text that list cities and regions that a web page is trying to rank for".
It hasn't worked for years, and it was never a good substitute for what does work: a real page for the places where you actually work, with the address, the jobs done there and realistic response times. We covered this in detail in the guide to local SEO for restaurants, where the reasoning on location pages applies equally to any service business, and on our local SEO service page.
The business name on Google Business Profile
The second surviving form is riskier than the first, because the penalty is not a loss of rankings but a suspended profile. Google's guidelines for representing your business on Google say the name must reflect how the business presents itself in the real world: on its signage, stationery and website. Three kinds of addition are not allowed: service keywords, town or location names, and marketing taglines.
"Smith Heating Ltd" is fine. "Smith Heating Ltd Emergency Plumber Manchester 24/7" is keyword stuffing on a listing that lives on Google Maps, and the stated consequence is suspension of the listing. The difference between the two situations is stark: a suspended listing disappears, and getting it back takes a longer process than fixing a footer. For what to put in a listing and what to leave out, we have a dedicated guide to Google Business Profile.
What happens when Google notices
There are two different routes, and it's worth knowing which one you've hit, because the response differs.
The first is algorithmic. No notification arrives; the page simply ranks lower or stops ranking. There is no request to submit: you fix it and wait for the page to be reprocessed. This is the most common case, and also the hardest to diagnose, because the drop gets mixed up with every other reason a page loses positions on ranking factors.
The second is a manual action. In Search Console, under "Security & Manual Actions", an entry appears called hidden text and/or keyword stuffing. The procedure Google documents is: identify the problem text, including with the URL Inspection tool, look for text in the same colour as the background or hidden with CSS, remove words repeated without context, check title tags and alt attributes, then request a review. The review can take days or weeks and should not be resubmitted before you get a reply. It is the only case where you get written confirmation of what Google found, which is a stroke of luck dressed up as bad news.
The problem is back through mass-generated content
For a decade or so, keyword stuffing was a glossary topic. It is current again for a reason that has nothing to do with density: producing text now costs almost nothing.
In April 2025 Ahrefs analysed 900,000 newly created English-language web pages, one per domain, with its own detection model: 74.2% contained AI-generated content, and only 25.8% were entirely written by people. In a second study of 331,000 ranking pages, 5.3% of pages in positions 1-3 were 100% AI-generated, while 82.2% of the top 3 was taken by pages with less than 50% automated content. The authors conclude that Google does not target generated text as such; it targets the flaws that text brings with it when nobody edits it: repeated information, missing links, flat structure, inaccuracies.
"Repeated information" is keyword stuffing by another name. A model asked for a text on a topic tends to name the topic again in every paragraph, because that is the most likely continuation. Generate twenty product pages in a batch and you get twenty texts repeating the same formula, which is the situation Google describes in its scaled content abuse policy: creating many variations of the same content to manipulate results is a violation, not a tactic. If you work with AI-assisted text, it is worth reading what AI content detectors actually tell you before relying on them.
On the other side sits the opposite belief: that to get cited by AI Overviews or ChatGPT you need to repeat more. Google's official guide to optimising for generative features explicitly says the opposite: no special files, no chopping content into chunks, no rewriting for AI systems, because those features rest on the same ranking systems as Search. What it asks for is material that is not a compilation of things already available elsewhere. In our work on visibility in answer engines this is the part that moves results, and it has nothing to do with how many times a term appears.
What to check instead of density
Once you drop the occurrence counter, you still need to know what to look at. Five checks that cover what density doesn't measure.
- Query intent. Before writing, look at what Google already shows for that search. If page one is made of comparisons and you write a definition, density will never be the problem. The logic is that of search intent, and it comes before any choice of wording.
- The terms the topic brings with it. A page on "heat pump" that never mentions COP, outdoor unit, split system or underfloor heating is thinner than one that repeats the keyword. That is the work done during keyword research, widening the list rather than narrowing it.
- Subheadings. Every heading tag should match a question someone is asking. An H2 that repeats the keyword in three variations answers nothing.
- Alt text and file names. This is where keyword stuffing survives unnoticed, because you can't see it when reading the page. Alt text is there to describe the image, as we explain in the guide to image optimisation.
- Title and meta description. Write them for the person reading them in the results. A meta title with the keyword three times loses clicks, and Google rewrites the meta description as soon as it notices it doesn't describe the page.
The method we use to bring these together when writing is set out in the guide on how to create SEO content.
How to get out of it if you're already in
On a site that has carried the problem for years, this is the sequence that works.
- Open Search Console and check "Security & Manual Actions". If something is listed there, you already know where to act and you have someone to reply to.
- Look for invisible text before visible text: the same colour as the background, zero size, blocks hidden with CSS, content inside tags the browser doesn't display. Together with repetition, this is what triggers a manual action.
- Remove town lists from the footer and templates. Don't replace them with anything: if you need to cover a location, you need a page with something real on it.
- Go through alt text, titles, meta tags and internal anchors. These are the four places where repetition builds up without anyone reading it.
- Rewrite the text where the keyword appears in exactly the same form in every paragraph. Don't count: read the paragraph aloud and notice where you stumble.
If the site has other problems from the same family, the full map is in the guide to black hat SEO, while the list of what Google considers legitimate is in the entry on white hat SEO. When the situation is bigger than a clean-up, that is the moment to get support: it's the kind of work almost all our SEO projects start with.
Keyword stuffing FAQs
Google has never published a threshold. The percentages quoted in guides, from 1% to 5%, have no official source. Across the 90 Italian-language articles on the Visilay blog, the density of the most repeated term ranges from 0.64% to 6.62%, with a median of 2.26%: two thirds would fall outside the 1-2% rule despite being normally written texts.
If it is a manual action, you will see it in Search Console, in the Security and Manual Actions section, as hidden text and/or keyword stuffing. If an automated system stepped in, you get no notification: you only see pages losing positions. In that case the only way is to inspect the pages, starting with the footer, alt text and titles.
Yes, when it is just a list. Google's spam policies name blocks of text that list cities and regions a web page is trying to rank for among their examples. A page dedicated to a location, with an address, jobs completed and information of its own, is a different thing and does not count as a violation.
No. Google's guidelines require the name to match the real name of the business and rule out service keywords, town names and taglines. The stated consequence is not a loss of rankings but suspension of the listing.
It is the main risk, because a model tends to name the topic again in every paragraph. The Ahrefs study of 331,000 ranking pages shows that Google does not target generated text as such: it targets the flaws it carries when nobody reviews it, repeated information first among them. Generating many variations of the same content falls under the scaled content abuse policy instead.
Something the industry rarely says: the biggest cost of keyword stuffing today is not the penalty. It's that a page built around repeating a term contains nothing anyone can cite. The systems that extract answers, and the people who link, take sentences, numbers, a figure with a source: they don't take density. A page like that can stay online for years without a single message in Search Console and without anyone ever mentioning it. It isn't punished. It's ignored, which in traffic terms is the same thing but doesn't show up in any report.