"Hidden text and/or keyword stuffing" manual action: finding and fixing it
This action covers two spam techniques that often travel together: text placed on a page so that search engines read it but visitors do not, and pages, titles or alt attributes packed with repeated keywords. Google's checklist is practical: compare what the crawler sees with what you see, look for text colored like the background or hidden with CSS, and look for lists of repeated words without context.
On WordPress the cause is split fairly evenly between old SEO habits baked into a theme or page builder, and hacked sites where injected links are hidden with CSS. Knowing which you have changes the fix.
The entry in the Manual actions report lists affected URL patterns. A theme-level problem tends to show as many pages or "Affects all pages", because the same footer or template prints on every URL. A handful of individual posts usually means stuffing written into specific articles, or an infection that only touched some of them.
Techniques Google is looking for
Hidden text means content in the HTML that is deliberately out of sight: white text on a white background, text behind an image, a block pushed off-screen with position:absolute; left:-9999px, zero-size fonts, or a single tiny link on a period. Keyword stuffing means repeating terms or lists beyond what reads naturally, like "cheap hotels Paris, Paris hotels cheap, best cheap Paris hotel" in a footer, or a block of every city you serve.
Not all hidden content is a problem. Tabs, accordions, menus and "read more" toggles that visitors can open are normal interface design. Screen-reader text for accessibility is fine too. The test is intent: is the text there for people who can reach it, or only for crawlers?
Where it hides on WordPress sites
- Theme or builder "SEO text" sections: a keyword paragraph at the bottom of every page set to
display:none, or placed inside a collapsed element nobody can open. - Footer location lists: dozens of towns or service keywords in a widget, repeated site-wide.
- Alt text and titles: images named "best plumber London plumber emergency plumber", or title templates that stack three keyword variants.
- Old tag clouds with hundreds of near-identical tags.
- Injected spam: hidden link blocks inserted into posts or the footer by malware, usually pharma, casino or loan links. These are often invisible in the editor because they sit inside HTML the visual editor hides.
If you did not write the hidden text, treat it as a compromise and read Hacked: Content injection as well.
Tracking it down in the HTML and database
Start with the example URLs from the report. Use URL Inspection to see the rendered HTML Google has, press Ctrl+A or Command+A on the live page to reveal same-color text, and search the source for inline styles:
curl -s https://example.com/sample-page/ | grep -oiE 'style="[^"]*(display:\s*none|visibility:\s*hidden|left:\s*-[0-9]{3,}|font-size:\s*0)[^"]*"' | sort | uniq -c
wp db search 'display:none' wp_posts --one_line
wp db search 'left:-9999' --all-tables
Page builders deserve a separate look: Elementor, Divi and similar tools store layouts in post meta rather than post content, so search wp_postmeta as well, and check any global footer or header templates the builder manages. Check the widgets under Appearance → Widgets (or the Site Editor for block themes), and the footer and header template parts. For alt text, a quick scan in Media → Library list view shows filenames and alt values together.
Rewriting rather than just deleting
Remove hidden blocks outright. For stuffed copy, rewrite for a person: one clear sentence naming your service area beats forty towns. In titles, use a single natural phrase; the SERP snippet preview shows how it reads in results. For images, describe what is in the picture. Hydrogen SEO can fill in missing alt attributes from the filename or title, and can generate alt text with AI on upload, but it will not rewrite alt text that is already stuffed, so fix those by hand.
If the hidden text came from the theme, override that template part in a child theme or switch themes. Editing the parent theme directly is lost at the next update and the text comes back.
A short, specific request
Once every affected template and post is clean, use Request Review. A short request is fine for this action if it names the source:
Our theme printed a hidden keyword block in the footer of every page
(display:none). We removed it via a child theme template. We also
rewrote alt text on 340 images and replaced a 60-town footer list with
one sentence about our service area. Example: /services/boiler-repair/
Expect the decision by email, typically within days to a few weeks. If it comes back rejected, look again at places the visual editor hides, such as HTML blocks, shortcodes and custom fields.
Common questions
Is content inside tabs or accordions hidden text?
Not when visitors can open it. Google's concern is text placed only for search engines. Interface elements that users can expand are ordinary design.
Can keyword stuffing in alt text alone cause this action?
Google's checklist for this action specifically includes checking title tags and alt text for strings of repeated words, so stuffed alt text is part of what reviewers look at.
I found hidden links I never added. What now?
That points to a hack rather than an SEO choice. Clean the site as a compromise, change passwords and update software, then fix any Security issues report entries before requesting review of the manual action.