![AIWebPageSEO](/images/aiwebpageseo-logo-light-t.webp) ![AIWebPageSEO](/images/aiwebpageseo-logo-dark-t.webp)

# Spam Policy Audit

Checks any website for signs of the practices in Google’s spam policies. Every sign found, where it is, and how to fix it.

Check My Site

Free•No account needed•Report on this page

Advanced controls

Free, no account

- Up to 20 URLs
- 10 pages opened in Chrome
- Every policy checked
Free, signed in

- Up to 100 URLs
- 25 pages opened in Chrome
- Every policy checked
Advanced controls

- 20, 50 or 100 URLs
- One folder, your own list of URLs, or chosen policies
- DataForSEO spam score for your site and every site it links to
- WHOIS registration date when the public record has none
Signed in, paid from your credits.

Open Advanced controls

[ Demo](https://aiwebpageseo.com/aipageseo-demo-pages/demo-spam-audit.html)[ Tutorial](https://aiwebpageseo.com/aipageseo-demo-pages/novice-tutorial-spam-audit.html)[ Guide](https://aiwebpageseo.com/aipageseo-demo-pages/spam-audit-guide.html)[ Fix](https://aiwebpageseo.com/aipageseo-demo-pages/spam-audit-fixes-index.html)

What it checks

## Google’s spam policies, checked one by one

15 of Google’s 16 spam policies are checked automatically, plus scam and fraud and spammy structured data, on up to 20 URLs from your sitemaps, or up to 100 when you’re signed in. The one left (machine-generated traffic) and three other practices Google lists can’t be seen from a website, so the report tells you what to review by hand.

- CloakingEach URL loaded as a visitor, as Googlebot and on mobile, and compared; selected pages also in a real browser.
- ️Sneaky redirectsWhere visitors, Googlebot, mobile users and visitors from Google end up, including redirects made by scripts.
- Hidden text and link abuseLinks and text hidden from visitors, including by stylesheets, colour and position.
- Keyword stuffingRepeated phrases, lists of phone numbers and places, and repeated words in alt text and titles.
- Hacked contentSpam words in 11 languages, hidden iframes, suspicious scripts and auto-generated pages.
- ️Malicious practicesGoogle Web Risk on every URL and linked site, hidden code, mining, pop-under and back-button tricks.
- Link spamSold, affiliate and advert links, link exchanges, sponsored posts and site-wide keyword links.
- User-generated spamSpam in comments, forum signatures, member profiles and uploaded files.
- Thin affiliationPages that are mostly affiliate links with little of your own text.
- Scaled content abuseNear-copies, reworded copies and pages made of other sites’ snippets.
- Doorway abuseNear-identical town or keyword pages, and short pages that funnel visitors on.
- ️Site reputation policyCoupon, casino, loan and similar sections your site isn’t about.
- ⏳Expired domain abuseWhether the domain was registered again after holding a different site.
- Misleading functionalityContent lockers, fake download buttons and tool pages with nothing to use.
- ScrapingPages that are mostly media embedded from other sites.
- Scam and fraudPages posing as a brand’s or government’s official service.
- Spammy structured dataRatings and reviews in the markup that the page doesn’t show.
FAQ

Does this audit say my site is spam?

No. Only Google can decide that a site breaks its spam policies. The audit looks at your public pages for signs of the practices Google describes, and reports each policy as signs found, no signs found, information, or not checkable automatically.

A sign is something worth looking at, not a verdict. Each one shows exactly what was found and on which page, so you can judge it yourself.

Is the Spam Policy Audit free?

Yes. You don’t need an account or a card. Enter a website address and the report appears on the page. It checks up to 20 URLs, or up to 100 when you’re signed in, and usually takes a few minutes. There’s a daily free allowance for each connection, and if you reach it the page tells you so.

Which pages does it check?

Up to 20 URLs on the same site, or up to 100 when you’re signed in: your homepage first, then the URLs in the order your sitemaps list them (found through robots.txt or at /sitemap.xml, including every sitemap in a sitemap index). If there is no sitemap, pages found by following internal links from your homepage. The report shows how many URLs were found and how many were checked.

Pages and text files such as .md, .txt, .json and .xml are checked. Images, PDFs and other non-text files are listed in the report as not checked, and so is any URL that could not be loaded.

Why does it load my pages as Googlebot?

To look for cloaking and sneaky redirects. Every URL is loaded as a normal visitor, as Googlebot, on a mobile phone, and as a visitor arriving from Google on a computer and on a phone, and the results are compared. Selected pages are also opened in a real browser (Chrome) the same ways, so redirects and content made by scripts are seen too.

The request says it is Googlebot but doesn’t come from Google. A firewall or bot blocker that treats unverified Googlebot requests differently can give the same result as cloaking; if that’s the cause, no change is needed.

What can’t it check?

One of Google’s spam policies can’t be seen from a website: machine-generated traffic. Nor can three of the “other practices that can lead to demotion or removal” Google also lists: legal removals, personal information removals and policy circumvention. The report lists them so you can review them by hand.

Scraping, misleading functionality and scam and fraud are checked for the patterns a website shows (pages that only embed other sites’ media, content lockers and fake download buttons, pages posing as a brand’s or government’s official service). Text copied from other sites and other tricks need a manual review.

Stylesheets, scripts and comments loaded by JavaScript are checked on the pages opened in a real browser; the other pages are checked from their HTML.

How does it check for expired domain abuse?

It looks up when the domain’s current registration started, from the public registration record (RDAP), and asks the Wayback Machine whether a site existed on the domain before that date. If it did, the old site’s main words are compared with your homepage. A domain registered again after holding a site about something else is reported as a sign. If the registry for your domain ending doesn’t publish registration dates, the report says it could not be checked.

What should I do after a Google spam update?

Google’s advice is that sites that see a change after a spam update should review its spam policies. This audit gives you a starting point: every sign it finds comes with what was found, where, and how to fix it.

Will the audit change anything on my website?

No. It only reads public pages, the same way a visitor or search engine does. Nothing is installed, it never needs your login, and nothing is written to your server.

Can you fix the problems for me?

Yes. Under the report, use “Request a quote for this work”. Your request automatically includes the signs found and their fixes. You can also copy an AI fix prompt to paste into an AI coding tool.

How it works

## Your report, URL by URL

1. 1
### Enter your website

Type the address of any public website.

2. 2
### We read your pages

Up to 20 URLs from your sitemaps (100 signed in), as a visitor, Googlebot, on mobile and from Google; selected pages in a real browser.

3. 3
### Read the report

Every policy, signs found first, with where and how to fix.

4. 4
### Fix or get a quote

Copy the AI fix prompt, or ask us to do the work.

## Check your site against Google’s spam policies

Check My Site

Free•No account needed•Report on this page

Study

## What we found checking 668 UK websites against Google’s spam policies

We ran this audit on every URL of 668 small UK websites: 469 ordinary sites picked at random from the Tranco top-sites list, and 199 gambling sites found among them. The final figures all come from one run of the finished audit, from 30 September to 1 October 2026. No site is named.

94.9%445 of 469 ordinary sites showed no signs against any of Google’s spam policies

5.1%24 ordinary sites showed signs against at least one policy; 7 of them against two or more

94.0%187 of 199 gambling sites showed signs, almost all of them unmarked casino links

| Google spam policy | Ordinary sites (469) | Gambling sites (199) | All sites (668) |
| --- | --- | --- | --- |
| Link spam | 7 (1.5%) | 186 (93.5%) | 193 (28.9%) |
| Hidden text and link abuse | 0 | 78 (39.2%) | 78 (11.7%) |
| Keyword stuffing | 5 (1.1%) | 2 (1.0%) | 7 (1.0%) |
| Cloaking | 4 (0.9%) | 0 | 4 (0.6%) |
| Expired domain abuse | 4 of 369 checked (1.1%) | 0 of 54 checked | 4 of 423 checked (0.9%) |
| Hacked content | 3 (0.6%) | 0 | 3 (0.4%) |
| Thin affiliation | 3 (0.6%) | 0 | 3 (0.4%) |
| Sneaky redirects | 2 (0.4%) | 1 (0.5%) | 3 (0.4%) |
| Spammy structured data | 2 (0.4%) | 1 (0.5%) | 3 (0.4%) |
| Doorway abuse | 2 (0.4%) | 1 (0.5%) | 3 (0.4%) |
| Scam and fraud | 1 (0.2%) | 0 | 1 (0.1%) |
| Malicious practices | 1 (0.2%) | 0 | 1 (0.1%) |
| Scaled content abuse | 1 (0.2%) | 0 | 1 (0.1%) |
| User-generated spam, site reputation abuse, scraping, misleading functionality | 0 | 0 | 0 |
| At least one policy | 24 (5.1%) | 187 (94.0%) | 211 (31.6%) |

### Most small UK sites are clean

445 of 469 ordinary sites (94.9%) showed no sign against any policy. Of the 24 that did, most had one thing to fix, such as affiliate or sponsor links not marked as paid.

### Hacked sites hide spam from their owners

Four ordinary sites sent Googlebot Turkish or Indonesian gambling pages that visitors never see. The owners would see a normal site. Only a check that asks as Googlebot finds it.

### Casino link blogs are new and built in bulk

172 of the 199 gambling domains were registered in July 2026. Most look like lifestyle or business blogs, and between them they link to 1,139 other websites with gambling link text such as “casino not on GamStop”.

### Old domains get a second life

Four domains were registered again after holding a different site: a table tennis association, a film news site, a file-sharing site and a driving licence site. That last one now offers to sell driving licences.

The full report

1. [Summary](#study-summary)
2. [Why we did this study](#study-why)
3. [The sites](#study-sites)
4. [How each site was checked](#study-method)
5. [How the study got here: nine runs](#study-history)
6. [Results](#study-results)
7. [Each policy: what Google says and what we found](#study-policies)
8. [The gambling sites](#study-gambling)
9. [False alarms and limits](#study-limits)
10. [What site owners should do](#study-owners)
11. [Questions and answers](#study-faq)
12. [The rules and thresholds](#study-rules)
### 1. Summary

This is the full report of a study we ran with the Spam Policy Audit on this page. We checked every URL of 668 small UK websites against Google’s spam policies, and we report every figure, how we got it, and every rule that decides what counts as a sign.

The study has two groups, and they behave so differently that we report them side by side as well as together.

- **469 ordinary sites:** small .uk websites (under 100 URLs each) picked at random from the Tranco list of the world’s top million sites. 24 of them (5.1%, with a 95% confidence range of 3.5% to 7.5%) showed signs against at least one of Google’s spam policies. 7 showed signs against two or more.
- **199 gambling sites:** every gambling site the random sample turned up that could still be checked. 187 of them (94.0%) showed signs, almost all of them links with commonly sold casino link text that weren’t marked as paid.
- **All 668 together:** 211 sites (31.6%) showed signs against at least one policy.
The most common sign among ordinary sites was link spam: 7 sites carried affiliate, sponsor or advert links without the `rel="sponsored"` or `rel="nofollow"` marking Google asks for. Next came keyword stuffing (5 sites), cloaking (4), expired domain abuse (4 of the 369 sites where it could be checked), hacked content (3) and thin affiliation (3).

The most serious finding was four hacked sites: a clothing shop, a holiday attraction, an estate agent and a county agricultural show. Each one sent Googlebot a gambling page in Turkish or Indonesian, while visitors and the owners saw the normal site. Two of them also sent Googlebot, or some visitors, to other websites.

The gambling sites tell a different story. Most of them aren’t casinos. They’re blogs about lifestyle, business, coins or the outdoors, nearly all registered in July 2026, whose real purpose is to carry links with text such as “casino not on GamStop” to other websites. 78 of them also hid that link text in a box too small to show it.

We reviewed every sign by hand against its evidence. Three ordinary-site signs (all cloaking) were false alarms, and so were 31 “hacked content” signs on gambling sites, where the gambling articles were placed by the sites’ own owners. These are taken out of every figure above and explained in section 9. Nothing else was adjusted.

Two limits matter most. Expired domain abuse could only be completed on 369 of the 469 ordinary sites and 54 of the 199 gambling sites, because the Wayback Machine often didn’t answer or its old copies couldn’t be loaded. And the audit missed one known hack under hacked content, though it caught the same site under cloaking. Both are explained in section 9.

### 2. Why we did this study

Google updates the systems that find spam several times a year, and it lists these spam updates alongside its other ranking updates. Its advice to site owners is short. In its own words: “Sites that see a change after a spam update should review our spam policies to ensure they are complying with those.”

That advice assumes an owner can tell whether their site has a problem. Many can’t. A hacked site may look perfect to its owner, because the spam is only shown to Googlebot. An affiliate link a web designer added years ago may be missing a single attribute. A domain may have been bought after a charity let it lapse, and nobody running the new site may know. Google’s policies describe these practices clearly, but they don’t give owners a way to check for them.

We built the Spam Policy Audit to give them one. It reads a site’s public pages the way Google and visitors do, compares what each is shown, and reports the patterns Google’s policies describe. Before publishing figures about it, we wanted to answer four questions with real sites rather than test pages:

1. **How common are signs of spam on ordinary small UK websites?** Not big brands, which have teams to watch for this, but the clubs, shops, local firms and hobby sites that make up most of the web.
2. **Which policies do they run into?** Whether the problems are deliberate tricks, or ordinary mistakes such as unmarked affiliate links.
3. **What does the gambling corner of the .uk web look like?** Our first runs showed that a large share of small .uk domains carry gambling content. We wanted to measure it properly instead of leaving it out.
4. **Can an automated audit tell real spam from ordinary website features?** Menus that open and close, cookie notices, shop templates, firewalls and pages built by JavaScript all look like spam to a careless check. A tool that cries wolf on half the web is no use to anyone.
The fourth question shaped the whole project. Our first full run flagged 85.6% of sites, and nearly all of those signs were wrong. Over nine runs we looked at every sign the audit raised, found the ones that were ordinary features, and changed the rules until they were no longer flagged, while making sure the real problems still were. Section 5 tells that story. The figures in this report come only from the last run, made with the finished rules.

One thing this study doesn’t do is decide that any site is spam. Only Google can do that. The audit reports signs: patterns that Google’s policies describe, with the evidence for each. Throughout this report, “a site with signs” means the audit found at least one such pattern on it, and a person checked that the pattern was really there.

### 3. The sites

#### Where the sites came from

We started from the Tranco list, a free ranking of the top one million websites that academic studies of the web use because it’s stable and hard to manipulate. We kept only domains ending in .uk (including .co.uk, .org.uk and the other UK endings), then shuffled them into a random order using a fixed seed (20260926). Anyone with the same list and seed gets the same order, so the sample can be repeated.

A random sample from the Tranco list is not a sample of every UK website. Sites on the list are ones that get some traffic, and sites with no visitors at all aren’t on it. But it isn’t a list of big brands either: the .uk domains on it run from national newspapers to village clubs, and once the large sites are left out, most of what remains is small.

#### Small sites only

We kept only sites with fewer than 100 URLs, and checked every one of their URLs. We made that choice for three reasons:

- **Every URL counts.** A hacked page, a doorway page or a stuffed page can be anywhere on a site. Checking a sample of pages from a big site would miss it, and we wanted a clean answer for each site: signs or no signs, with nothing left unchecked.
- **Small sites are the ones with no one watching.** A large site usually has a developer or an agency. A small one often has an owner who set it up years ago.
- **Time.** Each URL is loaded five times, and up to 25 pages are opened in a real browser. A study of large sites would have taken weeks.
A site was set aside as “too big” as soon as its sitemaps listed more than 99 URLs on the same site (or more than 1,980 URLs of any kind), or as soon as following its links found a 100th URL.

#### How the ordinary group was fixed

The ordinary group was set in our fourth run, on 27 September 2026. That run went down the shuffled list and tried 836 domains. It skipped sites that were too big or couldn’t be loaded, and set aside every gambling site, until 487 sites had been checked in full. Those 487 sites were then carried through every later run, so each improvement to the rules was measured on the same sites.

Over the following days, 15 of them dropped out: 11 had grown past 99 URLs and 4 could no longer be loaded. That left 472 going into the final run. Three more couldn’t be checked on the night: one had grown past 99 URLs, one refused every request (HTTP 403) and one timed out. **469 ordinary sites were checked in full.**

#### How gambling sites were found

Gambling turned out to be everywhere in the .uk part of the list. Before our fourth run we removed every domain with a gambling word in its name (casino, poker, bingo, roulette, jackpot, GamStop, blackjack, betting, lotto, sportsbook, plinko): 1,453 of them. Even so, 185 of the 836 domains that run tried (22.1%) turned out to be gambling sites. 147 of those carried gambling link networks and 38 had a gambling homepage, including 13 on ordinary names that now show gambling.

A site counted as a gambling site when either of these was true:

- its homepage title was about gambling (words such as bet, casino, slots, bingo, poker, free spins, GamStop or the names of big bookmakers);
- its pages linked to 3 or more different websites with gambling link text (casino, GamStop, betting, bookmaker, poker, roulette or jackpot).
The exact word lists are in section 12.

#### Why gambling sites are in the study

When we first published, we left gambling sites out. They distort every total, and a reader who wants to know about ordinary websites doesn’t want a quarter of the sample to be casino networks.

We changed our minds for two reasons. First, leaving them out hides something real: a fifth of the small .uk domains we tried were gambling sites. Second, gambling sites are exactly where Google’s spam policies bite hardest, so they’re the best test of whether the audit finds what it should. A check that found nothing on a casino link network would be broken.

So the final run checked a gambling group as well, in full, with the same audit: every gambling site from the earlier runs that could still be checked, 199 in all. We planned 200. One fewer was available because the earlier runs had found no more. The results are reported together, so the study covers the small .uk web as we found it, and separately, because the two groups are so different that a single figure would mislead.

#### The final sample

|  | Ordinary | Gambling | All |
| --- | --- | --- | --- |
| Sites checked in full | 469 | 199 | 668 |
| URLs checked | 12,250 | 6,560 | 18,810 |
| URLs per site (median) | 19 | 4 | 18 |
| Sites with only one URL | 115 | 7 | 122 |
| URLs found through a sitemap | 278 sites | 105 sites | 383 sites |
| URLs found by following links (no sitemap) | 191 sites | 94 sites | 285 sites |
| Pages opened in Chrome | 6,826 | 2,621 | 9,447 |

The gambling sites have a small median (4 URLs) but a higher average (33), because the link blogs split in two: 73 of them have only 2 URLs, while 69 have 20 or more articles.

### 4. How each site was checked

Every site in the study was checked with the same audit that runs on this page, using the same code file. The only differences are the ones a study needs: every URL was checked instead of the first 20 or 100, up to 25 pages per site were opened in a real browser, and Google Web Risk was asked about the homepage only. The study made no calls to paid data services.

#### Step 1: the homepage

The audit starts by loading the homepage twice at the same time: once as a visitor on a computer, and once as a visitor arriving from Google (with Google as the referring page). At the same time it asks Google Web Risk, Google’s own list of unsafe sites, whether the homepage is listed. If the homepage can’t be loaded, or returns an error, the site is recorded as “could not load” and isn’t counted.

#### Step 2: finding every URL

The audit reads every `Sitemap:` line in the site’s `robots.txt`, or tries `/sitemap.xml` if there are none. It follows a sitemap index to every sitemap it lists. A sitemap only counts if it loads and really is a sitemap.

If there’s no sitemap, or the sitemaps list nothing, the audit follows every link on every page it loads, staying on the same site. 278 ordinary sites had a working sitemap, and 191 were checked by following links.

Duplicate addresses are removed (ignoring `www.`, a trailing slash, letter case and anything after `#`). Files that aren’t text, such as images, PDFs, videos and Office documents, are listed but not downloaded. Pages and text files such as `.txt`, `.md`, `.json` and `.xml` are checked.

#### Step 3: five loads of every URL

Every text URL is loaded five times, one after another:

1. as a visitor on a computer (a current desktop Chrome identity);
2. as Googlebot (Googlebot’s own identity string);
3. as a visitor on a mobile phone (an Android Chrome identity);
4. as a visitor on a computer arriving from Google;
5. as a visitor on a phone arriving from Google.
Comparing the five copies is how cloaking and sneaky redirects are found: a hacked site often shows spam only to Googlebot, or sends only visitors from Google somewhere else, because that’s what earns money while keeping the owner unaware.

Each request asks for English, follows up to 5 redirects (checking each step is a public address), and gives a page 9 seconds to load. A page is read up to 2 MB. A page that answers “too many requests” or “temporarily unavailable” gets one more try after 3 seconds. Up to 5 URLs of a site are checked at once.

One point matters for every cloaking result. The audit’s Googlebot requests use Googlebot’s name but don’t come from Google’s network. A site that checks where requests really come from, as Google advises, will treat them as an ordinary visitor or block them as an impostor. So a firewall can make a page look different to the audit’s “Googlebot” without any cloaking. The audit recognises firewall, bot-check, maintenance and error pages and never compares them. In the final run, 138 URLs on ordinary sites returned such pages and weren’t compared.

#### Step 4: a real browser

Many tricks only show up when a page’s JavaScript runs: redirects made by scripts, links hidden by stylesheets, text pushed outside a box, pop-up windows. So the audit also opens pages in Chrome, three times each:

- as a visitor on a computer (a 1366 × 900 screen);
- as Googlebot;
- as a mobile visitor arriving from Google (a 390 × 844 touch screen).
Chrome can’t run on every URL of a large site, so the audit chooses. The homepage always goes first. Then come pages whose HTML already looks suspicious: redirect code, hidden or packed code, code that checks who’s visiting, rare scripts from other sites, hidden iframes, pop-up or back-button code, or very little text with scripts. Then one page from each section of the site not yet covered. The rest of the allowance is filled with other pages in order.

In the study the allowance was 25 pages and 240 seconds per site, the same as a signed-in audit on this page. Chrome opened 9,447 pages across 667 sites. On 381 sites, every HTML page was opened in Chrome. Pages load four at a time with a 15-second limit, plus up to 5 more seconds while short timers or network activity are still running, so delayed redirects are seen.

The browser runs behind a safety proxy that refuses private and internal network addresses and any port other than 80 and 443. Downloads are refused, pop-up windows are closed and recorded, and Chrome’s own sandbox stays on.

#### Step 5: the checks

With every copy loaded, the audit applies its rules for each policy. It checks 15 of Google’s 16 spam policies, plus scam and fraud and spammy structured data, which Google also describes. Machine-generated traffic can’t be seen from a website, and neither can three of the “other practices” Google lists (legal removals, personal information removals and policy circumvention). The report lists those for review by hand.

Each policy ends up as one of four results: **signs found**, **no signs**, **information** (something worth knowing that isn’t a sign) or **not checked**. Every sign comes with its evidence: the URL, what was found, and which copy it was found in. Section 12 sets out every rule.

#### Step 6: registration and the Wayback Machine

To check for expired domain abuse, the audit reads the date the domain’s current registration started, from the public registration record (RDAP). It then asks the Wayback Machine, the Internet Archive’s record of old web pages, for copies of the homepage saved more than 30 days before that date.

If there’s an older copy, the audit skips parked, for-sale and placeholder pages, loads the last real one, and compares its main words with today’s homepage. A domain registered again after holding a site about something quite different is a sign. If both the old and new titles carry the domain’s name, it’s treated as the same owner rebuilding their site.

The Wayback Machine is often slow and sometimes refuses busy callers, so the audit allows it 45 seconds and 3 tries. At the end of the study run, every site where it still hadn’t answered was tried again, one at a time, for up to 60 minutes. Section 9 explains how many sites that left unchecked.

#### How the run was organised

- **Three sites at a time.** Each site ran in its own process with a memory limit of 768 MB and a time limit of 20 minutes. If a site went over either, only that site would stop and be recorded as an error. In the final run no site hit either limit.
- **Every result saved as it finished.** Each site’s result was written to the results file the moment it finished, so a stopped run could carry on without repeating work.
- **A 10-site trial first.** The first 10 ordinary sites were run as a trial and checked before the rest started. They’re part of the results.
- **Timing.** The run started at 22:16 on 30 September 2026 and finished at 05:23 on 1 October (UK time). The ordinary sites took a median of 79 seconds each, and the slowest 546 seconds. The gambling sites took a median of 82 seconds.
- **Polite crawling.** Each site saw at most 5 requests at once from the audit, plus up to 4 pages in Chrome. Nothing was submitted, no forms were filled in, and no one signed in.
#### Why these settings

- **Under 100 URLs.** Large enough to include real small businesses with blogs and service pages, small enough that every URL could be loaded five times and a quarter or more of each site opened in a browser.
- **25 browser pages.** The same as a signed-in audit, so the study measures what a customer gets. On 381 of the 668 sites that covered every HTML page.
- **Three sites at a time.** Fast enough to finish in one night, slow enough that no site saw more than a handful of requests at once, and that the server running the study wasn’t overloaded.
- **Web Risk on the homepage only.** The page checks every URL and linked domain. Across 18,810 URLs and the domains they link to, that would have meant tens of thousands of lookups, so the study asked about each homepage. None was listed.
- **No paid data.** The study used only what any visitor or search engine can see, so anyone can repeat it.
#### What was recorded

For each site, the results file holds: the number of URLs found and checked, how they were found, how many failed or returned bot checks, how many pages Chrome opened, the Web Risk answer, and every policy’s result with its evidence (up to 25 lines each, plus the full count). It also holds some details that aren’t part of the audit but describe the sites, such as the platform, security headers, tracking and consent, and email security records. Section 6 reports those.

No page content was kept, only these results. No site is named in this report.

### 5. How the study got here: nine runs

An audit like this is only as good as its rules, and you can’t write good rules from Google’s descriptions alone. “Hiding text” describes a spammer’s trick, but it also describes every drop-down menu on the web. So we ran the audit on real sites, read every sign it raised, and asked of each one: is this the practice Google describes, or an ordinary feature that looks like it? Where it was an ordinary feature, we changed the rule, added a test site that copies the innocent pattern, and checked that the real problems were still found.

This section lists every run, so readers can see how far the figures moved and why.

| Run | Date | Sites | Ordinary sites with signs | What it led to |
| --- | --- | --- | --- | --- |
| 1 | 26–27 Sep | 250 | 85.6% | Most signs wrong; rules rewritten |
| 2 | 27 Sep | 250 (different sites) | 81.6% | Firewall pages recognised |
| 3 | 27 Sep | 500 | 25.4% | Templates, menus and social links left out |
| 4 | 27 Sep | 487 | 12.0%, then 4.1% | The ordinary group fixed; first figures published |
| 5 | 28 Sep | 4 | (stopped) | Gambling group added to the study |
| 6 | 28–29 Sep | 687 | about 5% | Chrome added to the audit |
| 7 | 30 Sep | 674 | about 25% | 19 rule changes |
| 8 | 30 Sep | 472 | 7.2% | 9 more rule changes |
| 9 | 30 Sep – 1 Oct | 668 | 5.1% | The figures in this report |

#### Runs 1 to 4: from 85.6% to 4.1%

The first full run, on 250 sites, flagged 85.6% of them. Reading the evidence showed why. Shop templates, where every product page shares most of its text, were flagged as mass-produced content. Cookie notices and pop-ups that start hidden were flagged as hidden text. Links to Facebook and Instagram were flagged as unmarked links. Firewalls that block anything calling itself Googlebot were flagged as cloaking. Gambling sites that mention gambling were flagged as hacked.

The second run, on 250 different sites, added recognition of firewall and bot-check pages and still flagged 81.6%. The third, on 500 sites with version 12 of the rules, flagged 25.4%. By then the rules left out shop and account pages, listing pages, menus, tabs and accordions, social links and a site’s own subject.

The fourth run fixed the ordinary group: 487 sites checked in full with version 13 of the rules, 12.0% with signs. Version 14 tightened the rules again, and was applied to the evidence that run had saved, giving 20 sites with signs (4.1%). Those were the figures we first published on 28 September. We said at the time that they came from rules applied to saved evidence rather than a new crawl. This report replaces them.

#### Runs 5 and 6: gambling sites added, and the move to a browser

Run 5 was stopped after 4 sites when we decided to add the gambling group. Run 6 checked the 487 ordinary sites again, plus 200 gambling sites, with the HTML-only audit. About 5% of ordinary sites showed signs.

Run 6 also showed the limits of reading HTML alone. The audit couldn’t see redirects made by scripts, links hidden by stylesheets, or anything on pages built by JavaScript. In the fourth run, 41 of the 122 sites with a single URL had turned out to be built with Next.js, a JavaScript framework. So over 29 September we added Chrome in three stages: first to open pages and record what it saw, then to compare the browser’s views for cloaking, redirects, hidden text and malicious behaviour, and finally to fill in checks that don’t need a browser, such as structured data and scam claims.

A first run of the finished audit on 84 real sites showed ten rules were too loose. For example, long descriptive image captions were flagged as stuffed alt text, hidden tracking iframes as hacks, and fade-in animations as hidden links. Each was changed.

#### Run 7: the browser finds more, and more false alarms

Run 7 was the first full study with the finished audit and Chrome, on 674 sites. Ordinary sites with signs jumped from about 5% to about 25%. That was expected: the browser sees far more than HTML. But reading every sign showed that most of the new ones were wrong. Some examples:

- a body class called “category-advertising” turned every link on a page into an “advert link”;
- a restaurant’s “book now for” was read as an auto-generated keyword page;
- a band’s newsletter page sent every visitor to its record label’s sign-up form, which was flagged as a sneaky redirect, though everyone went to the same place;
- a privacy page saying “complete a survey” was flagged as a content locker;
- phone layouts and app sign-in screens were flagged as mobile cloaking;
- a news slider headline that mentioned a pill was flagged as hidden spam;
- donation links such as “Buy me a coffee” were flagged as sold links.
We made 19 rule changes, each with a test site copying the innocent pattern. By run 7 the audit had found four hacked sites, which we confirmed ourselves by requesting their pages as Googlebot and as a visitor. Each change was checked against them: all four had to stay flagged.

#### Run 8: the last false alarms

Run 8 checked the ordinary sites again with the 19 changes. 34 of 472 (7.2%) showed signs. Reading every one found 9 more patterns that weren’t spam:

- two sites whose computer copy came back empty while phones got the full page, which looked like “0% the same” mobile cloaking;
- a restaurant’s branch pages, which listed the head office postcode first on every page, so the branch-page exception missed them;
- a second restaurant whose branch pages each listed every branch’s postcode;
- a chat site’s help articles, which all pointed to its contact page and looked like doorway funnels;
- a betting site’s own promotions in a zero-size tab, flagged as hidden spam on a site whose subject is betting;
- a second betting site whose homepage HTML was empty, so its subject couldn’t be read;
- a racing guide titled “Free Tools”, flagged as a tool page with no tool;
- pages whose videos or products change on every load, flagged as cloaking.
The ninth pattern was a question rather than a fix. Sponsor and advert links without `rel="sponsored"` were still flagged, and we kept them as signs: Google’s policy asks for paid links, sponsorship included, to be marked. We fixed the other eight, added a test site for each, and checked them against the real pages on the live server. All eight sites were clean when checked again. One of them, an IT firm whose pages change on every load, was flagged again in run 9 on two pages the fix didn’t cover. Section 9 explains it.

#### Run 9: one run for the figures

By then the ordinary sites’ figures had been measured with two versions of the rules on different days. For a study we were going to publish, that wasn’t good enough. So we ran everything once more: all 472 ordinary sites and all 199 gambling sites, on the final rules, in one run. Every figure in this report comes from that run’s results file. We reviewed every sign it raised against its evidence and report the result, false alarms included, in section 9. We didn’t change any rule after seeing the results.

#### Keeping the rules honest

Every rule is written down in a rules record, and a check compares that record with the code before any change goes live. It currently covers 361 named patterns, constants and thresholds. If any of them changes, the check fails until the record is updated.

Every fix also comes with a test site. The test suite now has over 100 sites. Some copy spam patterns, which must be flagged. Others copy innocent patterns from real sites, such as branch pages, help centres, rotating products, ticker slides, cookie notices and empty computer copies, which must not be flagged. The suite runs with and without a browser before every change.

### 6. Results

#### Sites with signs

| Group | Sites | With signs | Share | 95% confidence range |
| --- | --- | --- | --- | --- |
| Ordinary sites | 469 | 24 | 5.1% | 3.5% to 7.5% |
| Gambling sites | 199 | 187 | 94.0% | 89.8% to 96.5% |
| All sites | 668 | 211 | 31.6% | 28.2% to 35.2% |

The confidence range is how far the true share among all similar sites could reasonably be from what we measured, given the sample size (a Wilson 95% interval). For ordinary sites, the share of small .uk sites with signs is very likely between 3.5% and 7.5%.

The “all sites” figure depends on how many gambling sites are in the sample, and we chose that number. It describes this sample, not the .uk web. For the web as a whole, the ordinary-site figure is the one to use, along with the finding from our fourth run that 22.1% of the small .uk domains we tried were gambling sites.

#### How many policies per site

| Policies with signs | Ordinary sites | Gambling sites | All sites |
| --- | --- | --- | --- |
| None | 445 (94.9%) | 12 (6.0%) | 457 (68.4%) |
| One | 17 (3.6%) | 107 (53.8%) | 124 (18.6%) |
| Two | 4 (0.9%) | 78 (39.2%) | 82 (12.3%) |
| Three | 2 (0.4%) | 2 (1.0%) | 4 (0.6%) |
| Four | 1 (0.2%) | 0 | 1 (0.1%) |

Most ordinary sites with signs had one problem. The seven with two or more were three of the four hacked sites (between them: cloaking, hacked content, sneaky redirects and link spam), a site selling driving licences (keyword stuffing, expired domain and scam), a car key firm (scaled content and doorway pages) and two affiliate sites (link spam and thin affiliation).

Among gambling sites, the usual pair was link spam with hidden text: casino link text both linked and hidden on the page.

#### Policies with no signs

Four policies had no signs on any site: user-generated spam, site reputation abuse, scraping and misleading functionality. That doesn’t mean these practices don’t exist. It means the sites we checked didn’t show the patterns the audit looks for. Small sites rarely have open comment sections or forums, rarely host other companies’ coupon or casino sections, and rarely offer tools. Section 7 explains each.

#### Google Web Risk

Not one of the 668 homepages was on Google Web Risk’s list of unsafe sites, including the four hacked sites. Web Risk lists sites that spread malware or phishing. Sites that only show spam to Googlebot are usually not on it, which is one reason those hacks go unnoticed.

#### Expired domain abuse: what was checked

| Result | Ordinary sites | Gambling sites |
| --- | --- | --- |
| No copy on the Wayback Machine from before the current registration | 336 | 54 |
| Public-body domain (allocated by its registry) | 15 | 0 |
| Only parked or placeholder pages before | 7 | 0 |
| Same owner rebuilt the site | 3 | 0 |
| Same subject before and after | 3 | 0 |
| Registered 10 or more years ago | 1 | 0 |
| **Signs found** | **4** | 0 |
| Not checked: the Wayback Machine didn’t answer | 82 | 142 |
| Not checked: old copies couldn’t be loaded | 18 | 3 |

The registration records also show how differently the two groups were built. More than half the ordinary sites whose registration date could be read were registered before 2010, and the median falls between 2008 and 2009. Every one of the 199 gambling domains was registered in 2024 or later, and 172 of them in July 2026.

#### Every ordinary site with signs

The 24 ordinary sites with signs, described by what they are rather than named. “Evidence” is the number of lines of evidence the audit recorded for each policy, usually one per URL or per link.

| Site | URLs checked | Policies with signs (evidence) |
| --- | --- | --- |
| County agricultural show (hacked) | 39 | Cloaking (20), sneaky redirects (8), hacked content (8), link spam (30) |
| Holiday attraction (hacked) | 47 | Cloaking (47), sneaky redirects (72), hacked content (46) |
| Site selling driving licences | 41 | Keyword stuffing (2), expired domain (3), scam and fraud (40) |
| Motorbike and fashion clothing shop (hacked) | 10 | Cloaking (8), hacked content (1) |
| Car key repair firm | 54 | Scaled content (6), doorway (2) |
| Product review site | 9 | Link spam (77), thin affiliation (8) |
| Cycling deals site | 7 | Link spam (3), thin affiliation (2) |
| Estate agent (hacked) | 44 | Cloaking (41) |
| Motor rally club | 27 | Link spam (158) |
| Fashion news site | 54 | Link spam (120) |
| Scuba diving club | 36 | Link spam (50) |
| Polish community classifieds | 64 | Link spam (9) |
| Plant and transport hire firm | 40 | Keyword stuffing (4) |
| Essay-writing service | 43 | Keyword stuffing (1) |
| Business credit report site | 61 | Keyword stuffing (1) |
| Film scenery maker | 26 | Keyword stuffing (1) |
| Web hosting firm | 89 | Doorway (2) |
| Loan comparison site | 83 | Spammy structured data (2) |
| Web and PDF form designer | 63 | Spammy structured data (32) |
| Classic literature site | 38 | Malicious practices (25) |
| Small site with a shop page | 23 | Thin affiliation (1) |
| AI tools guide (old table tennis association domain) | 82 | Expired domain (3) |
| IT and telecoms firm (old file-sharing domain) | 1 | Expired domain (3) |
| Bare page (old film news domain) | 12 | Expired domain (3) |

All four hacked sites run WordPress, as do 120 of the 469 ordinary sites. WordPress isn’t less safe than other platforms, but it’s the most common target, and out-of-date plugins and themes are the usual way in.

#### Which ordinary sites had signs

The numbers are small, so these splits show tendencies, not firm rates. Still, three stand out.

- **Bigger sites showed signs more often.** 1 of the 115 single-URL sites (0.9%) had signs, against 2 of 64 sites with 2 to 9 URLs (3.1%), 13 of 203 with 10 to 49 (6.4%), and 8 of 87 with 50 to 99 (9.2%). More pages mean more places for a problem, and more pages built from templates, plugins and affiliate feeds.
- **WordPress sites showed signs more often.** 13 of 120 WordPress sites (10.8%) had signs, against 11 of the other 349 (3.2%). All four hacked sites run WordPress. Part of this is size: the WordPress sites had a median of 35 URLs, against 14 for the rest. Plugins can also add links, ratings and markup that an owner never looks at.
- **Age made little difference.** Sites registered before 2005 showed signs at 4.2%, 2005 to 2014 at 4.9%, 2015 to 2022 at 7.6%, and 2023 or later at 4.9%. Old sites aren’t safer, and new ones aren’t worse.
Sites with a sitemap (5.8%) and without one (4.2%) were similar, as were .co.uk sites (5.6%) and .org.uk sites (1 of 28).

#### How these figures compare with what we published before

On 28 September we published that 20 of 487 small UK sites (4.1%) showed signs. This report gives 24 of 469 (5.1%). The two figures aren’t far apart, but they measure different things, and the newer one is the one to use:

- **The audit can now see far more.** The earlier figure came from reading HTML only. The audit now opens pages in Chrome, loads every URL five ways instead of three, and checks scam claims, structured data, misleading functionality and scraping, which it didn’t then. That finds real problems the earlier audit couldn’t, such as the literature site’s self-opening windows, the fake review ratings and the driving licence scam.
- **The earlier figure came from rules applied to saved evidence.** We said so at the time. This one comes from a fresh run of the finished audit.
- **The hacked sites.** The earlier figure found two hacked sites. This run found four. Sites get hacked and cleaned all the time, and the audit now checks phones and visitors from Google as well as Googlebot.
- **The sample is the same sites.** 469 of this run’s ordinary sites are from the same 487, minus those that grew too big or stopped loading.
#### Other things we noticed

These aren’t part of Google’s spam policies, but the study recorded them for every site, and they say a lot about how small UK sites are run. They cover the 469 ordinary sites only.

- **Platform:** 120 sites (25.6%) run WordPress, 48 (10.2%) are built with Next.js, and smaller numbers use Drupal, Shopify, Magento, HubSpot and Joomla. On 258 sites (55.0%) the platform couldn’t be identified from the page.
- **HTTPS:** 468 of 469 sites use it.
- **Security headers:** 240 sites (51.2%) send none of HSTS, Content Security Policy or X-Frame-Options on the homepage. 181 (38.6%) send HSTS and 118 (25.2%) a Content Security Policy.
- **Tracking before consent:** 284 sites load a tracker, such as Google Analytics or the Meta Pixel, on the homepage. 170 of them (59.9%) do it with no cookie banner, consent tool or Google consent mode that we could detect. 64 set Google consent mode, and 50 show a banner or consent tool (we didn’t test whether it works).
- **Old analytics code:** 134 sites carry only Google’s old Universal Analytics code, which stopped collecting data in 2023 and 2024, and no Google Analytics 4. 93 sites use Google Analytics 4.
- **Email security:** 329 sites (70.1%) have no DMARC record or a DMARC policy of “none”, so anyone can send email that looks like it comes from their domain. 97 have a policy of “quarantine” and 43 “reject”.
- **AI crawlers:** 73 sites (15.6%) block at least one AI crawler in `robots.txt`. 27 (5.8%) have an `llms.txt` file.
- **Robots:** 373 sites have a `robots.txt`. 9 block Googlebot in it.
- **Structured data and descriptions:** 227 sites (48.4%) use structured data. 206 (43.9%) have a meta description on every page checked.
- **Who runs the site:** 340 sites have a contact page, 310 a privacy page and 262 an about page. 223 show a UK postcode and 84 a company registration number.
- **Marking links:** 104 sites use `rel="nofollow"` on at least one outbound link. Only 3 use `rel="sponsored"`, the marking Google prefers for paid links.
- **Broken links:** 51 sites have at least one internal link to a page that returns “not found”.
- **Networks:** 68 sites (14.5%) belong to two networks that share a tracking ID. The larger is 38 local job sites sharing one Google Analytics and Tag Manager account. The other is 30 local newspaper sites sharing one analytics account. Sharing an owner isn’t a spam policy problem, but it shows how many small sites are run in groups.
The gambling sites were strikingly uniform. None loaded a tracker. All 199 had DMARC set to none or missing. 186 blocked AI crawlers. 194 named an author, but only 6 had a privacy page and none showed a postcode or company number.

### 7. Each policy: what Google says and what we found

This section takes each policy in the order Google lists them. For each one: Google’s own words, what the audit checks, what the study found, and any false alarms we saw. Examples are real, from the final run, with the sites’ names left out.

#### 7.1 Cloaking

> “Cloaking refers to the practice of presenting different content to users and search engines with the intent to manipulate search rankings and mislead users.”

**What is checked.** The copies served to a visitor, to Googlebot and to phones are compared on every URL, from the HTML and in a browser. A sign is either spam sent only to Googlebot (or only to phones), with a different title or 3 or more different spam words, or a page that is mostly different (under 50% the same with a different title, or under 30% the same whatever the title). Firewalls, bot checks, maintenance pages, empty copies, pages built by JavaScript, paywalls, search pages and pages that change on every load are never counted.

**What we found.** 4 ordinary sites (0.9%) and no gambling sites. All four were hacked. Googlebot was shown gambling pages that visitors never see:

- a motorbike and fashion clothing shop whose homepage, as Googlebot sees it, is titled “Goldenbahis .com Orjinal Adres – Goldenbahis 896 Login …”, a Turkish betting site, on 7 URLs;
- a holiday attraction whose 47 URLs all showed Googlebot “BENTO4D # Pengelola Resmi Situs Toto Togel Online …”, an Indonesian lottery-betting page;
- an estate agent whose 41 URLs showed Googlebot “BayWin Nedir? Güncel Erişim ve Sık Sorulanlar”, another Turkish betting page;
- a county agricultural show whose pages showed Googlebot “PT89 x Situs Investasi” and “ZONATUAN Situs Investasi”, Indonesian gambling pages dressed up as investment sites, on 14 URLs.
In each case the visitor’s copy was the business’s normal page. This is the most damaging kind of hack for a small business. Google indexes the gambling page under the business’s name, the business’s own pages drop out of search, and the owner sees nothing wrong when they visit their site.

**False alarms.** Three ordinary sites were flagged for cloaking wrongly. We took them out of the figures. Section 9 gives the details: an IT firm whose pages change on every load, a hosting firm whose visitor copy was a loading screen, and a cycling club whose server gave Googlebot the WordPress readme file.

Cloaking also had the most pages the audit couldn’t compare. 59 ordinary sites had at least one URL where Googlebot was blocked, given a firewall page, or got no response. That’s how firewalls normally treat a request that claims to be Googlebot but doesn’t come from Google, and it isn’t counted.

#### 7.2 Doorway abuse

> “Doorway abuse is when sites or pages are created to rank for specific, similar search queries. They lead users to intermediate pages that aren’t as useful as the final destination.”

**What is checked.** Groups of 5 or more pages that are each at least 85% the same as one page, with titles identical except for one swapped word (usually a town or a product). Also “funnel” pages: 5 or more short pages that differ by one word and all point to the same contact, booking or quote page. Branch pages of a real business are not counted when most of them show their own postcode, opening hours, map or local details, or have pages of their own below them.

**What we found.** 2 ordinary sites (0.4%) and 1 gambling site.

- A car key repair firm had 25 pages titled “… car keys”, one for each car make, each at least 85% the same as the BMW page.
- A web hosting firm had 6 pages titled “domain name registration …” and 6 titled “website and email hosting …”, one for each UK region, each 85% or more the same as the others.
- On the gambling side, a home-selling site had 10 near-identical pages titled “… – your home”, six for cities and four for property types. Section 8 explains why that site is also in the gambling group.
Location pages are common and often useful. What makes them doorway pages in Google’s terms is that they’re near-copies with the town swapped, created to rank for “[service] in [town]” searches. A page for each branch that really is different, with its own address, team, opening hours and reviews, is not a doorway.

**False alarms.** None in the final run. Run 8 found three, all branch or help pages, and the rules were fixed (section 5).

#### 7.3 Expired domain abuse

> “Expired domain abuse is where an expired domain name is purchased and repurposed primarily to manipulate search rankings by hosting content that provides little to no value to users.”

**What is checked.** Whether the domain was registered again after holding a site about something quite different, using the public registration date and the Wayback Machine (section 4, step 6).

**What we found.** 4 of the 369 ordinary sites where it could be checked (1.1%):

- a domain that held a county table tennis association until 2024, registered again in December 2025, and now an AI tools guide;
- a domain that held a copy of a well-known file-sharing site in 2022, registered again in November 2022, and now an IT and telecoms firm’s site;
- a domain that held a film and entertainment news site, registered again in December 2022, and now showing a bare page under the domain name;
- a domain that held a driving licence site until 2022, registered again in September 2024, and now offering to sell UK driving licences.
The audit doesn’t judge whether the new content is low value, which Google’s definition also needs. It only records that the subject changed completely after a new registration. Three of these four new sites may well be legitimate businesses that bought a free domain name. The fourth is not: it’s also flagged for scam and fraud (section 7.17).

Expired domain abuse is the policy with the largest gap in this study. The check couldn’t be completed on 100 ordinary sites and 145 gambling sites, because the Wayback Machine didn’t answer or its old copies couldn’t be loaded. So 4 is a minimum. A domain we know from run 8 to be an expired domain, an overseas volunteering charity’s old address now carrying AI tool reviews, is among the 100 not checked this time.

#### 7.4 Hacked content

> “Hacked content is any content placed on a site without permission, due to vulnerabilities in a site’s security.”

**What is checked.** Spam phrases about pills, casinos, payday loans, replica goods and adult content, in 11 languages, that are off the site’s own subject. Also pages mostly in an unexpected script, hidden iframes from suspicious hosts, scripts from bare network addresses or spam-named hosts, auto-generated keyword pages, and spam shown only to Googlebot.

**What we found.** 3 ordinary sites (0.6%): the clothing shop, the holiday attraction and the county show from section 7.1. On each, the hacked-content check recorded “spam shown only to Googlebot, not to visitors, a common sign of a hacked site”.

The fourth hacked site, the estate agent, wasn’t flagged under hacked content in this run. In run 7 it was, through hidden links to a Turkish betting site, which weren’t found this time. Its Googlebot pages carry the betting brand “BayWin”, which isn’t one of the gambling words the audit lists, so they were caught under cloaking because the whole page was different, not under hacked content as spam. The site is in the figures, with the betting title as evidence. But hacked content should read 4, not 3, and we report it as a miss (section 9).

**What isn’t counted.** A single mention of a spam phrase, which is usually an ordinary sentence (a support charity writing about pornography, a hosting firm listing the .porn domain ending). Spam words that are the site’s own subject: a pharmacy mentioning sildenafil, a bookmaker mentioning free spins. Pages in Japanese, Chinese or Korean on sites that publish in those languages. Hidden tracking, consent and widget iframes.

**False alarms.** 31 gambling sites were flagged under hacked content because they carried casino articles on blogs about other subjects. Those articles were placed by the sites’ own owners, so they aren’t hacks. We took all 31 out (section 9). Every one of those sites still has link spam signs.

#### 7.5 Hidden text and link abuse

> “Hidden text or link abuse is the practice of placing content on a page in a way solely to manipulate search engines and not to be easily viewable by human visitors.”

**What is checked.** Links and text hidden from visitors with a spam phrase or commonly sold link text, by inline styles, by stylesheets (as the browser shows the page), by being pushed off-screen, cut off outside a box, given a tiny font, coloured like the background, covered by an image, or placed inside `<noscript>` or HTML comments. Menus, tabs, sliders, tickers, cookie notices and screen-reader text are left out.

**What we found.** No ordinary sites. 78 gambling sites (39.2%). On 77 of them, the hidden text was casino link text such as “non gamstop casinos”, “non uk casino” or “casino not on gamstop”, cut off outside the box it sits in, so the browser draws nothing. The 78th hid casino links in its page. Across the 78 sites the audit counted 4,907 hidden links and phrases. Every hidden phrase in the evidence we kept was cut off outside its box. One home-selling site carried 689 hidden casino links on a single page.

The fact that no ordinary site showed hidden spam matters. Earlier versions of the rules flagged menus, cookie notices, sliders and fade-in animations as hidden content (section 5). Leaving those out while still catching every gambling site that hides its link text is what the rules are for.

#### 7.6 Keyword stuffing

> “Keyword stuffing refers to the practice of filling a web page with keywords or numbers in an attempt to manipulate rankings in Google Search results.”

**What is checked.** Google’s three examples: long lists of phone numbers, blocks of text listing towns and regions, and the same phrase repeated unnaturally. Also titles and image alt text that repeat one word. Navigation, menus, link text, product cards and repeated labels are removed before checking.

**What we found.** 5 ordinary sites (1.1%) and 2 gambling sites (1.0%).

- A plant and transport hire firm had blocks of 25 to 28 place names on its service pages, such as “Hilton, Mickleover, Littleover, Sinfin, Etwall, Alvaston …”.
- The driving licence site repeated “driving lessons [town]” 26 to 28 times a page.
- An essay-writing service repeated “nursing personal statement” 22 times on one page.
- A business credit report site repeated “trade credit insurance” 22 times on one page.
- A film scenery maker’s page title repeated “hire” 6 times: “Scenery Hire – Film Prop Hire – Rock Hire – Statue Hire – Column Hire – Scenery Hire”.
- On the gambling side, an Indonesian-language slots blog repeated “bermain slot online” 20 times on a page, and a casino news blog repeated “live dealer games” 23 times.
**What isn’t counted.** Lists where at least half the names are countries (where a service is available), where at least 30% are people’s names (who’s named), or where 90% are in A–Z order (a directory). A phrase repeated in captions or credits doesn’t count unless it’s the page’s own keyword, in its address or title. A newspaper’s own town name in its titles doesn’t count. Long, descriptive image captions don’t count.

The place-name lists are the most common kind on small business sites. They’re usually written to tell visitors “we cover your area”, but a block of 25 town names is exactly Google’s second example. A map, or a short sentence naming the main areas, does the same job without the risk.

#### 7.7 Link spam

> “Link spam is the practice of creating links to or from a site primarily for the purpose of manipulating search rankings.”

Google’s link guidance adds: “Mark links that are advertisements or paid placements (commonly called paid links) with the sponsored value.”

**What is checked.** Links to other websites, without `rel="sponsored"` or `rel="nofollow"`, that have commonly sold link text, that go to affiliate networks (3 or more), or that sit in advert or sponsor boxes. Also link exchange pages, required links back, sponsored posts with followed links, the same keyword link on every page, and links to many free-hosting sites.

**What we found.** 7 ordinary sites (1.5%) and 186 gambling sites (93.5%).

On ordinary sites, every case was a missing marking rather than a sold link:

- a motor rally club’s homepage carried its sponsors’ advert links (158 lines of evidence across its pages);
- the county show’s homepage carried its sponsors’ advert links too (30 lines);
- a Polish community classifieds site carried advert links to partner sites (9 lines);
- a scuba diving club linked to Amazon products through amzn.to, 50 times;
- a fashion news site linked to shops through the Awin network with “Buy now” buttons, 120 times;
- a product review site linked to Amazon, 77 times;
- a cycling deals site linked to Amazon best-seller lists.
**What isn’t counted.** One or two unmarked affiliate links on a site are listed with advice but aren’t a sign: a single book or archive link isn’t a pattern. Links to government, NHS, university, police and school sites aren’t counted. Single everyday words such as “loan” or “casino” aren’t sold link text, so a council’s home improvement loan or a film called Casino Royale doesn’t count. Donation buttons such as “Buy me a coffee” aren’t sold links.

None of these sites is doing anything Google would object to, apart from not marking the links. Google’s policy is clear that paid links, sponsorship and affiliate links included, should carry `rel="sponsored"`. Adding it is a five-minute job, and it removes the sign.

The gambling sites are a different matter. Their links have text such as “casinos not on gamstop” (407 times in the evidence), “non gamstop casinos” (374) and “online casinos” (173), and they point to other websites, most of them .uk domains. That’s the pattern Google describes as buying and selling links to pass ranking. Section 8 looks at it in detail.

#### 7.8 Machine-generated traffic

> “Machine-generated traffic (also called automated traffic) refers to the practice of sending automated queries to Google.”

This is about what a site’s owner does to Google, not about the site. It can’t be seen from a website, so the audit lists it for review by hand and the study has no figure for it.

#### 7.9 Malicious practices

> “Malicious practices create a mismatch between user expectations and the actual outcome, leading to a negative and deceptive user experience, or compromised user security or privacy.”

**What is checked.** Google Web Risk (the homepage, in the study); hidden code that decodes to a redirect, an iframe or a script from another site; crypto-mining code; pop-under advert networks; back-button hijacking; and, in a browser, windows that a page opens by itself while loading.

**What we found.** 1 ordinary site (0.2%). A classic literature site opened a new window by itself whenever one of its pages loaded, taking the visitor to a chapter of a web novel on a fiction site. It happened on 25 pages. Opening windows without a click is the kind of unexpected behaviour Google describes. It may be a misconfigured advert or a deliberate traffic deal, but either way the visitor didn’t ask for it.

No site was on Web Risk’s list, and no site carried mining code, pop-under networks or back-button hijacking.

#### 7.10 Misleading functionality

> “Misleading functionality refers to the practice of intentionally creating sites that trick users into thinking they would be able to access some content or services but in reality can’t.”

**What is checked.** Content lockers and offer walls (“complete a survey to unlock”), fake download buttons that lead to adverts, and pages that offer a free tool but have nothing to use.

**What we found.** No signs on any site. In run 8, a racing guide titled “Free Tools” was flagged as a tool page with no tool, and the rule was fixed so that guides and lists of tools aren’t counted.

#### 7.11 Scaled content abuse

> “Scaled content abuse is when many pages are generated for the primary purpose of manipulating search rankings and not helping users.”

**What is checked.** Groups of 10 or more content pages, at least a quarter of the site, that are each 90% or more the same as one page and differ only by one word in the title. Also “snippet” pages built from other sites’ excerpts. Shop, account, listing and form pages are left out, because they share a template by design.

**What we found.** 1 ordinary site (0.2%): the car key firm from section 7.2. A group of 27 of its 50 content pages was built around its BMW page: the other 26 were each 92% to 97% the same as it, with only the car make changed. Another 6 pages were 97% to 98% the same as one town’s locksmith page.

Early runs flagged 41% of sites under this policy, nearly all shop templates and news layouts. Since then only near-copies with a swapped title word count, which is the pattern Google describes.

#### 7.12 Scraping

> “Scraping refers to the practice of taking content from other sites, often through automated means, and hosting it with the purpose of manipulating search rankings.”

**What is checked.** Sites where 5 or more pages (a quarter or more) are little more than embedded videos or posts from other sites. Text copied from other sites isn’t checked, because that needs a web search for every paragraph.

**What we found.** No signs on any site.

#### 7.13 Site reputation abuse

> “The site reputation policy applies where third-party content is published on a host site mainly because of that host’s already-established ranking signals, which it has earned primarily from its first-party content.”

**What is checked.** A section of 3 or more pages about coupons, casinos, betting, payday loans, CBD or essays, on a site whose homepage never mentions that subject.

**What we found.** No signs on any site. The gambling blogs do the opposite of what this policy describes: rather than renting space on a respected site, they build new sites whose whole purpose is the links.

#### 7.14 Sneaky redirects

> “Sneaky redirecting is the practice of doing this maliciously in order to either show users and search engines different content or show users unexpected content that doesn’t fulfill their original needs.”

**What is checked.** Whether Googlebot, phones or visitors arriving from Google end up on a different website from an ordinary visitor; meta refresh tags that send visitors to another site; and, in a browser, script redirects that send any view away. A redirect that sends every visitor to the same place isn’t counted.

**What we found.** 2 ordinary sites (0.4%) and 1 gambling site.

- The holiday attraction sent Googlebot to an unrelated site, while visitors stayed on its own pages (72 lines of evidence).
- The county show had meta refresh tags on old event pages sending visitors to a link-shortening service. In a browser, the same pages’ code sent phones arriving from Google to cryptocurrency sites.
- A “casinos not on GamStop” site sent Googlebot to a different .org.uk site with a “what’s on” page and an amphitheatre page, while visitors got the casino list. In effect it shows Google a respectable venue’s site and shows people a casino guide.
#### 7.15 Thin affiliation

> “Thin affiliation is the practice of publishing content with product affiliate links where the product descriptions and reviews are copied directly from the original merchant without any original content or added value.”

**What is checked.** Pages with 5 or more affiliate links and fewer than 100 words of the page’s own text per link. The audit can’t tell whether the text was copied from the merchant, so it measures how little of its own text the page has, and the report says so.

**What we found.** 3 ordinary sites (0.6%):

- a cycling deals site with 24 affiliate links and 26 words of its own per link on one page;
- a product review site with 8 to 10 affiliate links and 21 to 29 words per link on its product pages;
- a small site’s shop page with 15 affiliate links and 31 words per link.
Thin pages aren’t automatically spam. A shop page with a short note for each product can be useful. But a page that’s mostly links with a line each is what Google’s policy targets, and adding real experience of the products is the fix.

#### 7.16 User-generated spam

> “User-generated spam is spammy content added to a site by users through a channel intended for user content.”

**What is checked.** Spam links without `rel="ugc"`, `nofollow` or `sponsored` in comments, forum posts, signatures, member profiles and comment widgets, and uploaded files with spam.

**What we found.** No signs on any site. Very few small sites in the sample have open comments or forums.

#### 7.17 Scam and fraud

> “Scam and fraud come in many forms, including but not limited to impersonating an official business or service through imposter sites, intentionally displaying false information about a business or service, or otherwise attracting users to a site on false pretenses.”

**What is checked.** Titles claiming to be a brand’s official support, phone number or website on a site that isn’t that brand’s; titles claiming to be the official site of a government service on a site that isn’t .gov.uk; and offers to sell official documents such as driving licences, passports, ID cards, visas and certificates.

**What we found.** 1 ordinary site (0.2%). Its homepage was titled “Buy UK Drivers License Online”, and 40 lines of evidence across its pages offered to sell UK driving licences, which can’t legally be bought. It was also flagged for keyword stuffing and expired domain abuse. It’s the clearest case of a site built to deceive in the whole study.

#### 7.18 Spammy structured data

Google’s structured data guidelines say markup must describe what’s on the page, and Google can take manual action when it doesn’t. The audit checks one common case: a review rating in the markup when the page shows no ratings or reviews.

**What we found.** 2 ordinary sites (0.4%) and 1 gambling site.

- A loan comparison site’s markup claimed ratings such as 4.60 from 157 reviews and 4.20 from 381 reviews on its loan pages, but the pages show no ratings.
- A web designer’s markup claimed a rating of 5 from 28 reviews on 32 pages, none showing reviews.
- The “casinos not on GamStop” site from section 7.14 claimed a rating of 5 from 30 reviews on 3 of its pages, including its responsible gambling page.
Ratings in markup are what put stars under a result in Google, which is why they’re tempting to fake. If the reviews are real, showing them on the page fixes the sign. If they aren’t, the markup should go.

#### 7.19 The practices that can’t be seen from a website

Google lists other practices that can lead to demotion or removal: legal removals (many valid copyright notices), personal information removals, and policy circumvention (moving to new domains to dodge action). These depend on Google’s own records, not on anything on a site, so the audit lists them for review by hand and the study has no figures for them.

### 8. The gambling sites

The gambling group is where Google’s spam policies are tested hardest, so it deserves its own section. Most of these sites aren’t casinos at all.

#### Two kinds of gambling site

The 199 sites came into the group in two ways:

- **56 had a gambling homepage:** casino guides, “not on GamStop” lists, slot game demos and casino landing pages, with a median of 10 URLs. Most say what they are.
- **143 carried gambling link networks:** their pages linked to 3 or more different websites with gambling link text. Half of them have only 2 URLs (73 of the 143), while 69 have 20 or more articles. Most of them don’t look like gambling sites at all.
The 143 link-network sites mostly present themselves as blogs about wildlife, offices, coins, investing, city living, events, gaming gear, web design and the outdoors, with titles such as “Your Guide to Smart Investing and Finance Tips” or “Inspiring Wildlife and Nature Blog”. Their articles cover those subjects too. The gambling is in the links.

#### Built in bulk, and recently

The registration records make the pattern plain. Every gambling domain in the study was registered in 2024 or later, and 172 of the 199 (86.4%) in a single month, July 2026. They share a style: one- or two-word brand names built from words like urban, London, Brit, modern, smart, prime, luck, ace, arena and coin, a .uk ending, a named author on almost every site, and almost never a privacy page, and never a postcode or company number. 186 of them block AI crawlers in `robots.txt`, and none loads any analytics.

Sites built this way, in a batch, with invented subjects as cover, are the kind of thing Google’s scaled content and link spam policies were written for. Our audit doesn’t compare one site with another, so it can’t flag a network across domains (section 9). What it can see is what each site does on its own pages.

#### The links

186 of the 199 gambling sites (93.5%) carried links with commonly sold casino link text, not marked `sponsored` or `nofollow`. The audit counted 132,655 such links across those sites, a median of about 450 per site. The most common link texts were:

- casinos not on gamstop;
- non gamstop casinos;
- casino not on gamstop;
- non gamstop casino;
- online casinos;
- non uk casinos;
- non uk casino;
- sites not on gamstop.
GamStop is the UK’s free self-exclusion scheme for people who want to stop gambling. Casinos licensed in Great Britain must take part in it. A casino “not on GamStop” is one that isn’t licensed here and that people who’ve excluded themselves can still use. These links exist to rank such casinos in UK search results.

Between them, the gambling sites linked with gambling text to 1,139 different websites. 546 of those were linked from 2 or more of the sites, and 229 from 5 or more. The most-linked website was linked from 65 of the 199. Of the 1,139 targets, 739 (64.9%) were .uk domains: 561 .co.uk and 154 .org.uk.

That last figure is worth a second look. Many of the link targets have names that sound like ordinary British organisations: venues, clubs, societies, cafés, awards, a historic society. A link with the text “casinos not on GamStop” pointing to a name like that only makes sense if that domain now carries casino content too. We didn’t check the 1,139 targets, so we can’t say how many are expired domains of real organisations now used for gambling. But the pattern matches Google’s own example of expired domain abuse closely, and it would be the natural next study.

#### Hidden link text

78 of the gambling sites (39.2%) also hid their casino link text. The phrases sit in a box that cuts them off, so the browser shows nothing, while the text is still in the page for search engines to read. The audit counted 4,907 hidden links and phrases across those 78 sites. This is Google’s hidden text policy in its plainest form: content placed “in a way solely to manipulate search engines and not to be easily viewable by human visitors”.

#### The other signs

- **Sneaky redirects and spammy structured data:** one “casinos not on GamStop” site sent Googlebot to a different .org.uk site with “what’s on” and amphitheatre pages, and showed visitors its casino list. Its markup also claimed a rating of 5 from 30 reviews on 3 of its pages.
- **Doorway abuse:** a site with a home-selling name and 10 near-identical city and property-type pages also carried 689 hidden casino links on its homepage, pages in Chinese, and a page about buying sildenafil. Whether that’s a hacked business site or a bought domain, its pages are a spam catalogue.
- **Keyword stuffing:** two casino blogs repeated their key phrase 20 or more times on a page.
#### The 12 gambling sites with no signs

Twelve gambling sites showed no sign against any policy. All twelve had a gambling homepage: slot game demos, casino landing pages and “not on GamStop” lists of one to ten URLs. A gambling site isn’t against Google’s spam policies just for being about gambling. It needs to break one, and these didn’t: no unmarked sold links, no hidden text, no cloaking. Several sit on names that suggest a wedding business, a building firm or a Welsh organisation, which suggests the domains were bought after their old owners let them go. But the Wayback Machine didn’t answer for most of the gambling group, so the audit couldn’t confirm it.

#### What the gambling sites didn’t show

No gambling site was flagged for cloaking, malicious behaviour, scam claims or thin affiliation, and none was on Google Web Risk’s list. These sites aren’t trying to trick visitors. They’re trying to pass ranking to casinos through links, and that’s where the signs are.

### 9. False alarms and limits

We read every sign the final run raised against its evidence. This section sets out what we took out of the figures and why, what the audit missed, and what the study can’t tell you.

#### False alarms taken out

The run raised signs on 27 ordinary sites and 187 gambling sites. After review, 24 ordinary sites and 187 gambling sites remain. We took out 34 signs:

1. **An IT support firm (cloaking).** Its product pages build a different selection of text on every load. The audit’s rule for rotating pages fetches the page a second time as a visitor, and doesn’t count it if the two visitor copies differ as much as Googlebot’s. That rule, or the browser comparison, cleared four of its pages, but not two, where the two visitor copies happened to be more alike than either was to Googlebot’s. Googlebot got 10% the same text, under the same title. It isn’t cloaking.
2. **A cloud hosting firm (cloaking).** On its contact page, the visitor copy was a loading screen titled “One moment, please…”, while Googlebot got the normal contact page. The audit treats a firewall or bot-check page as “not compared”, but this loading screen’s wording isn’t on its list of such pages, so it was compared. Googlebot was given the real page. It isn’t cloaking.
3. **A cycling club (cloaking).** Googlebot and phones arriving from Google were given the WordPress “ReadMe” page instead of the club’s homepage. That’s a misconfigured server or security plugin, and it’s bad for the club (Google can’t see its homepage), but there’s no spam in it and nothing to mislead anyone. It isn’t cloaking in Google’s sense.
4. **31 gambling sites (hacked content).** The hacked-content check flags spam phrases that are off a site’s own subject. These blogs present themselves as being about coins, wildlife, offices or events, and also carry casino articles, so the check read the casino articles as injected. They were placed by the sites’ owners. That makes them link spam (which all 31 are flagged for), not hacks. One of the 31, the home-selling site in section 8, may really have been hacked, but we can’t tell, so it isn’t counted as hacked either.
Each of these points to a rule that can be improved, with a test site copying the innocent pattern. We didn’t change any rule and re-run to make these signs go away, because the published figures have to come from one run.

#### What the audit missed

- **One hack, under hacked content.** The estate agent is a confirmed hack: Googlebot gets a Turkish betting page. The audit flagged it for cloaking, but not for hacked content, because the betting brand on the page isn’t one of the audit’s listed gambling words. The site is counted among sites with signs. Hacked content should read 4 ordinary sites, not 3.
- **Expired domains on sites the Wayback Machine didn’t answer for.** See below.
We can only report misses we know about. We didn’t review the 445 ordinary sites with no signs by hand, so there may be others. The rules were tuned to avoid false alarms, and a stricter tool would find more, along with many more false alarms.

#### Expired domains that couldn’t be checked

The Wayback Machine limits how often it answers one caller, and overnight it often refused. During the run it didn’t answer for 275 sites. At the end, the study tried those again one at a time for the full 60 minutes it allows. That covered 72 of them and got answers for 30, one of which (the file-sharing domain) became a sign. The other 203 weren’t reached.

In the end, expired domain abuse couldn’t be checked on 100 ordinary sites (82 where the Wayback Machine didn’t answer, and 18 where its old copies couldn’t be loaded) and 145 gambling sites. The figure of 4 is therefore a minimum. One domain we know to be expired, from run 8, was among those not checked.

#### What the study can’t tell you

- **Large sites.** Every site had fewer than 100 URLs. Large sites may look quite different.
- **Other countries.** Only .uk domains were checked.
- **One night.** Each site was checked once, on one night. Hacks come and go, and so do sites. A hacked site in run 7 may be clean now, and the reverse.
- **Backlinks.** The audit only reads a site’s own pages. Links pointing to a site from elsewhere, which Google’s link spam policy also covers, aren’t checked.
- **Networks across domains.** Doorway, scaled content and link network checks work within one site. The study recorded shared tracking IDs and link targets, but the audit doesn’t flag networks.
- **Firewall-dependent cloaking.** The audit’s Googlebot doesn’t come from Google’s network. A site that only cloaks for real Google addresses won’t be seen. A firewall that blocks the audit’s Googlebot is recognised and not counted.
- **Copied text.** Scraping and thin affiliation can’t check whether text was copied from elsewhere.
- **Pages not opened in a browser.** Up to 25 pages per site were opened in Chrome. On sites with more HTML pages, the rest were checked from their HTML only. On 381 of the 668 sites, every HTML page was opened.
- **The rules were tuned on these sites.** The false alarms we fixed were found in earlier runs on the same ordinary sites. That’s how the rules got good, but it also means the rules fit this sample better than they might fit another.
- **The gambling group isn’t random.** It’s every gambling site our random sample turned up that could still be checked. Its figures describe those sites, not all gambling sites.
### 10. What site owners should do

If your site is small and ordinary, the study’s main message is reassuring: 94.9% of sites like yours showed no signs at all. But the sites that did show signs mostly had no idea, and every one of the common problems is quick to fix once you know. Here’s what we’d do, policy by policy, in order of how often we saw it.

#### Mark paid, sponsor and affiliate links

The most common sign on ordinary sites. If you link to a sponsor, an advertiser, or a shop through an affiliate link (Amazon, Awin and similar), add `rel="sponsored"` to the link. `rel="nofollow"` is also accepted. Clubs and events with sponsor logos on every page are the commonest case. It costs nothing, it doesn’t stop the link working, and it’s exactly what Google asks for.

#### Check what Googlebot sees

Hacked sites hide their spam from you. The quickest check is Google Search Console’s URL Inspection tool, which shows the page as Google fetched it. Or search Google for `site:yourdomain.co.uk` and look for titles you don’t recognise, especially in other languages. Our audit does the same comparison on every URL. If you find a hack:

- update your platform, theme and plugins, and remove any you don’t use;
- change every password: hosting, database, admin users and FTP;
- look for files and users you didn’t add, and for code in your theme that checks for “Googlebot”;
- once it’s clean, use Search Console to ask Google to look again.
If your web host or developer looks after the site, send them the evidence. The audit report shows the exact title Googlebot was given on each page.

#### Rewrite town lists and repeated phrases

Replace blocks of place names with a map or a sentence naming your main areas. Read your key pages aloud: if a phrase comes round so often it sounds odd, cut it back. Page titles should name the page once, not list every variation.

#### Make location pages genuinely local, or merge them

If you have a page for each town or each product where only the name changes, either make each one genuinely different (local address, team, photos, reviews, prices) or merge them into one good page. Google’s doorway policy is about near-copies made to rank, not about having branches.

#### Only mark up reviews you show

If your structured data includes a review rating, the reviews should be on the page. Plugins sometimes add a rating to every page by default. Check your markup with Google’s Rich Results Test and remove ratings that aren’t shown.

#### Give affiliate pages something of your own

A page that’s mostly product links with a line each is thin. Add what you know: why you chose each product, what you found using it, who it suits.

#### If you bought your domain second-hand

Check the Wayback Machine for your domain’s history. If it once belonged to a club, a charity or a business, that’s fine, but don’t trade on its old reputation: don’t keep old pages or old backlinks pointing at content that has nothing to do with them. If your domain has a past you don’t like, links from that past may also be worth disavowing.

#### Pages that open windows by themselves

If your pages open a new window or tab without a click, find out why. It’s usually an advert script or a plugin. Visitors don’t expect it, and Google lists it as a malicious practice.

#### After a spam update

If your traffic changes after a Google spam update, follow Google’s advice and review the spam policies. Our audit is a starting point: every sign it finds comes with the URL, the evidence and how to fix it. Remember that for link spam, Google says “making changes might not generate an improvement” and “any potential ranking benefits generated by those links cannot be regained”. The fix is still worth making, so the problem doesn’t grow.

#### Beyond the spam policies

The study also found things that aren’t spam but are worth fixing on a small site: set a DMARC policy so no one can send email as you, remove old Universal Analytics code, add a consent banner before tracking runs, and add the basic security headers. Each takes minutes with most hosts.

### 11. Questions and answers

Does a sign mean a site is spam?

No. A sign is a pattern Google’s spam policies describe, found on the site with evidence. Only Google decides whether a site breaks its policies, and it looks at intent, scale and much more than any outside check can see. Many signs on ordinary sites in this study were simple oversights, such as unmarked sponsor links.

Why are gambling sites in the study?

Because they’re a large part of the small .uk web (22.1% of the domains our fourth run tried), and because they’re the best test of whether the audit finds what it should. We report them separately as well as in the totals, because their figures are so different from ordinary sites.

Why did the figures change so much between runs?

Early versions of the rules flagged ordinary features such as menus, cookie notices, shop templates and firewalls. Each run, we read every sign, fixed the rules that caught innocent patterns, and checked that real problems were still found. The figures in this report come from one run of the finished rules. Section 5 lists every run.

Why weren’t the false alarms fixed and the run repeated?

Because a study has to report what its method found, not what it found after being adjusted to the answer. The 34 false alarms are listed in section 9 and taken out of the figures, and nothing else was adjusted.

How sure are the figures?

For ordinary sites, 24 of 469 had signs. Given the sample size, the true share among similar sites is very likely between 3.5% and 7.5%. Expired domain abuse is a minimum, because 100 ordinary sites couldn’t be checked for it.

Why does a hacked site look normal to its owner?

Because the hack is built to hide. The injected code checks who is asking. Googlebot gets the gambling page, which is what earns the hacker money, and everyone else, including the owner, gets the normal site. Some hacks also send only visitors arriving from Google, or only phones, somewhere else. The owner, typing their own address, never sees it. That’s why the audit loads every URL as Googlebot, as a phone and as a visitor from Google.

Is a gambling site against Google’s policies?

Not for being about gambling. Twelve gambling sites in the study showed no signs at all. The gambling sites with signs were flagged for what they did: unmarked links with sold link text, hidden link text, a redirect that showed Googlebot a different site, fake review ratings and repeated phrases.

What’s the single most useful thing a small site can do?

Mark sponsor, advert and affiliate links with `rel="sponsored"`. It was the most common sign on ordinary sites, it takes minutes, and it’s exactly what Google asks for. The second is to check, once in a while, what Googlebot sees on your site.

Can I check my own site the same way?

Yes. The audit on this page uses the same code as the study. Signed out, it checks up to 20 URLs and opens 10 pages in a browser. Signed in, it checks up to 100 URLs and opens 25 pages, the same as the study.

Why not name the sites?

The study is about patterns, not about shaming small businesses, most of which have simple fixes or have been hacked themselves. The hacked sites in particular are victims.

Does the audit check backlinks?

No. It reads the site’s own pages. Links pointing to a site from elsewhere need a backlink database. Signed-in users get a DataForSEO spam score for the site and the sites it links to, as information, but the study didn’t use it.

#### Terms used in this report

Sign

A pattern described in Google’s spam policies, found on a site with evidence and checked by a person. Not a verdict: only Google decides whether a site breaks its policies.

Googlebot

Google’s web crawler, the program that fetches pages for Google Search. The audit asks for pages using Googlebot’s name to see what Google is shown.

Ordinary site

A site in the random sample that isn’t a gambling site by the study’s rules (section 12.18).

Evidence line

One finding recorded by the audit, usually one URL or one link, with what was found there.

`rel="sponsored"` and `rel="nofollow"`

Markings on a link that tell search engines not to pass ranking through it. Google asks for `sponsored` on paid, sponsor and affiliate links.

Tranco list

A public ranking of the top one million websites, built from several traffic sources, widely used in research.

RDAP

The public registration record for a domain, which gives the date the current registration started.

Wayback Machine

The Internet Archive’s collection of old copies of web pages, used to see what a domain held before its current registration.

Google Web Risk

Google’s service for checking an address against its lists of unsafe sites (malware, phishing and unwanted software).

GamStop

The UK’s free self-exclusion scheme for online gambling. Casinos licensed in Great Britain must take part. “Not on GamStop” sites are casinos outside it.

Confidence range

The range the true share among similar sites very likely falls in, given the size of the sample (a Wilson 95% interval).

Near-copy

Two pages that share 90% or more of their three-word phrases, measured with a compact fingerprint of each page.

### 12. The rules and thresholds

This section sets out every rule the audit used in the final run: what it reads, what counts as a sign, the exact thresholds, what is deliberately not counted, and the word lists. It describes the code exactly as it ran. A check compares this record with the code before any change goes live, so the two can’t drift apart.

Two terms are used throughout. **Words** means words of 3 or more letters (accented letters included). **Similarity** between two texts means the share of three-word phrases they have in common, unless a rule says otherwise.

#### 12.1 Reading a site

- **Homepage.** Loaded as a visitor on a computer and as a visitor arriving from Google, at the same time as the Google Web Risk lookup. If it fails or returns HTTP 400 or above, the audit stops.
- **Finding URLs.** Every `Sitemap:` line in `robots.txt`, or `/sitemap.xml`; sitemap indexes followed to every sitemap. A sitemap must return HTTP 200 and contain `<urlset>` or `<sitemapindex>`. With no sitemap, links on each loaded page are followed on the same site. Subdomains of the site listed in its sitemaps are checked with it.
- **Duplicates.** Addresses that match after ignoring `www.`, a trailing slash, letter case and the `#` part are checked once. A URL that redirects to a page already checked isn’t checked again.
- **Text only.** Images, PDFs, archives, video, audio, fonts, programs and Office documents are listed, not downloaded. A response is a web page if its type is HTML, and a text file if its type is plain text, JSON, XML, Markdown or JavaScript, or, with no type, if the address ends `.md`, `.txt`, `.json` or `.xml`.
- **Five loads per URL:** visitor on a computer, Googlebot, mobile visitor, computer visitor from Google, mobile visitor from Google. The homepage reuses its first visitor-from-Google load.
- **Identities.** Visitor: a Chrome 120 on Windows identity. Googlebot: `Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)`. Mobile: a Chrome 120 on Android (Pixel 8) identity. Every request sends `Accept-Language: en-GB,en;q=0.9`.
- **Limits per request:** 9 seconds for a page, 20 for a sitemap, 15 for the registration record, 45 for the Wayback Machine. Up to 5 redirect steps, each checked as a public address. Pages and text files are read up to 2 MB, sitemaps up to 50 MB.
- **Retries.** A page load that gets HTTP 429 or 503 is tried once more after 3 seconds. `robots.txt` and sitemaps aren’t retried.
- **Pace.** Up to 5 URLs at once.
- **How many URLs.** The page checks the first 20 (signed out) or 100 (signed in), homepage first. The study checked every URL and left out sites with more than 99 same-site text URLs, or more than 1,980 URLs of any kind in their sitemaps. A safety limit of 1,000 sitemap files or 200,000 sitemap URLs applies everywhere.
#### 12.2 The browser

- **Which pages.** The homepage first. Then pages whose HTML shows suspicious signs, strongest first, with these strengths: a sign already found on the page (5); code that checks who is visiting, such as `navigator.userAgent`, `document.referrer`, `navigator.webdriver` or the words googlebot, bingbot, crawler, spider or headlesschrome (5); redirect code or a meta refresh (4); hidden or packed code such as `eval(`, `atob(`, `unescape(` or long runs of character codes or `\x` escapes (4); a script file with a strong sign (4); a hidden or tiny iframe from another site (4); pop-up, back-button or leave-page code (3); a script from another site used on 20% or fewer of the site’s pages, on sites of 5+ pages (3); an iframe from another site (2); under 150 visible words with a script (2); copies that couldn’t be compared (2); comments loaded by a script (2); styles that hide content (1). Then one page from each section not yet covered, then the rest in order.
- **Allowance.** 10 pages and 120 seconds signed out; 25 pages and 240 seconds signed in and in the study.
- **Three views:** a computer visitor (1366 × 900), Googlebot, and a mobile visitor from Google (390 × 844, touch). Four pages at a time. 15 seconds to load, then up to 5 more while timers of up to 6 seconds are pending or the network is busy.
- **Script files.** Each script file is read once, the rarest first, up to 40 files, 1 MB and 8 seconds each, on every audit. A file has a strong sign for: packed code; `String.fromCharCode(` with 50+ numbers; `atob(` of 200+ characters; 100+ `\x` escapes in a row; a redirect to an address written in the file; or visitor-checking code together with redirect code.
- **Safety.** All browser traffic goes through a proxy that refuses private, loopback, link-local, shared, documentation, multicast and reserved addresses, IPv6, `localhost`, `.local` and `.internal` names, names that don’t resolve and any port but 80 and 443. Downloads are denied. Pop-ups are closed and recorded.
#### 12.3 Cloaking

1. **Spam only for Googlebot.** Googlebot’s title or first 5,000 characters contain a word from list A (below); the visitor copy contains none anywhere; the visitor copy is a real page; Googlebot’s copy isn’t an error page; and either the titles differ or Googlebot’s copy has 3 or more different list A words. Also recorded under hacked content.
2. **Most of the page differs.** Under 50% similar with different titles, or under 30% similar whatever the titles. For text files, under 30%.
3. **Mobile copies.** Each mobile copy is compared with the computer copy: a sign for list A spam on mobile only (with different titles or 3 or more different list A words), or for different titles and under 30% similar. The second rule skips pages with a password field, mobile copies with no title and computer copies with no title. Empty copies on either side (under 5 words) aren’t compared at all.
4. **Phrases only for Googlebot.** A three-word phrase 5 or more times in Googlebot’s copy and never in the visitor’s, with at least one uncommon word, no month name, at least two of its words (3+ letters) in the page’s address or title, none of the words permission(s), login, logged, register, sign, cookie(s), javascript or enable, and no web-address part (www, http, com, pdf, html, php, jpg, png). Only when the copies aren’t already a sign and Googlebot’s copy has 30+ words.
5. **In a browser.** The rendered visitor and Googlebot copies are compared, and only spam sent to Googlebot counts. If the HTML copies differed but the rendered ones don’t give a sign, the HTML finding is removed as a page built by JavaScript. The mobile-from-Google view counts only for spam.
6. **AMP.** For up to 5 pages with an AMP version, a sign when the AMP text is under 30% similar and the title differs.
**Never counted:** firewall, bot-check, maintenance, rate-limit and error pages (list F); one copy empty and the other not; pages built by JavaScript (visitor copy under 150 words and Googlebot’s 4 or more times longer); paywalls (structured data says `isAccessibleForFree` is false and 70%+ of the visitor’s five-word phrases are in Googlebot’s copy); search, member-list and session pages; XML files; and pages that change on every load (same title for Googlebot, little shared text, and a second visitor copy that differs from the first by as much as Googlebot’s, within 20 points).

#### 12.4 Sneaky redirects

- A sign when the Googlebot, mobile, visitor-from-Google or mobile-from-Google load of a URL ends on a different website from the visitor load. A different website is a host that isn’t the same as, or a subdomain of, the other.
- A `<meta http-equiv="refresh">` that sends visitors to another website.
- In a browser, a view that ends on another website. Its destination is the final address, or the last address it tried if that failed to load.
- **Not counted:** every visitor type sent to the same other site by the server. In a browser, every view sent to the same outside host isn’t a sign either, unless that host is a bare network address or has a word from list B.
#### 12.5 Hidden text and link abuse

1. **Inline styles in the HTML.** A link to another website inside an element hidden by its inline style counts when its text has a list C phrase (in any listed language) or list D link text, or when it’s hidden strongly (font size 0, opacity 0, or pushed 100 px or more off-screen) and its address or text has a list B word or “pill(s)”. Not run on the browser’s copy of the page.
2. **A link on a single character** (a hyphen, full stop and so on) to another website whose address has a list B word. Links with an image, icon, `aria-label` or `title` don’t count.
3. **Links in `<noscript>` or HTML comments** to another website whose text has a list C phrase or list D text. Up to 50 `<noscript>` blocks and 200 comments per page.
4. **Hidden links in a browser.** The browser’s own test finds links hidden by opacity 0, scaling to 0, clipping, a box 1 px or smaller, lying outside an `overflow:hidden` box, `display:none`, `visibility:hidden`, a font under 1.5 px, lying off the page, transparent text, text the same colour as the background (contrast under 1.15) or being covered by an image. A hidden link counts when its text has a list C phrase or list D text, or when its host has a list B word and it’s hidden strongly in a way other than cut off or off-screen.
5. **Hidden text in a browser.** Text of 12+ characters hidden in a deceptive way counts when it has list D text, a list C phrase in another language, or two different list C phrases, and the words aren’t the site’s own subject.
6. **Text added by CSS** (`::before`, `::after`) with 8+ letters and a spam word or list D text, when hidden or off the homepage’s subject. Image and icon addresses aren’t text.
**Not counted:** elements whose id, class or role contains cookie, consent, gdpr, modal, popup, dialog, menu, dropdown, drawer, offcanvas, tab, accordion or collapse; hidden panels with a form field or button; menus, tabs, accordions, slideshows, tooltips, dialogs, `nav`, `details` and elements with `aria-expanded` or `aria-controls`; screen-reader text; links to the site itself; social and video sites (list H) unless spam; links that show a visible image or icon over 4 px; and anything that moves more than 2 px in 2 seconds or sits in an animated box (tickers and slideshows that visitors see).

**The site’s own subject.** A spam word is the site’s subject if it, or a word from its subject family (list E), appears as a whole word in the homepage text, or the family’s own words match the phrase. If the homepage HTML has fewer than 50 words, the subject is read from the homepage as the browser shows it, with its hidden text left out.

#### 12.6 Keyword stuffing

Before checking, the audit removes scripts, styles, headers, navigation, footers, sidebars, code, tables, link text, buttons, form labels and options, anything `aria-hidden`, list items of 12 words or fewer, labelled fields repeated 5+ times, any short text repeated 5+ times, any class used 5+ times with 80 words or fewer each, and web addresses and file names.

- **Phone numbers:** 20 or more different numbers (9 to 15 digits) with fewer than 25 words of prose per number.
- **Place lists:** a run of 25 or more capitalised names separated by commas, bars or bullets, unless at least half are countries, at least 30% contain a common first name, or 90% are in A–Z order.
- **Repeated phrases:** a three-word phrase of three different words, repeated 20 or more times and making up 3% or more of the page’s three-word phrases; not all common words; no month name; not only the site’s brand; and every uncommon word in it also in the page’s address or title. Pages with 60+ words of prose only.
- **Titles:** one word of 4+ letters, not a common word and not part of the site’s own address, 5 or more times.
- **Image alt text:** one word of 4+ letters, not a common word, 5 or more times in one alt text, and a third or more of its counted words. Up to 3 per page.
Not checked: XML, key and certificate files, JSON, CSV, calendar and contact files, `robots.txt`, `ads.txt`, `app-ads.txt`, `security.txt` and `humans.txt`. Meta keywords and descriptions aren’t checked: Google ignores meta keywords.

#### 12.7 Hacked content

1. **Spam phrases:** a list C phrase twice on a page, or once in its title, off the site’s own subject (12.5). Link text doesn’t count. On pages other than the homepage, a phrase in the homepage’s title, first heading or text isn’t counted.
2. **Unexpected script:** more than 20% of a page’s text (pages over 200 characters) in Japanese, Chinese or Korean script, unless the homepage title is in one of those scripts, the page is marked as one of those languages, or its address has a language marker such as `/ja/`.
3. **Spam only for Googlebot:** the cloaking rule 12.3.1.
4. **Hidden iframes** (0–2 px, `display:none`, `visibility:hidden` or `hidden`) from a bare network address or a host with a list B word, in the HTML or added by scripts.
5. **Scripts and stylesheets** from a bare network address or a host with a list B word.
6. **Auto-generated keyword pages:** 3 or more pages whose most repeated three-word phrase appears 10+ times, makes up 5%+ of the page, has at most one word on the homepage, and contains a list B word, a phrase in another language or a cheap-goods word (cheap, cheapest, replica(s), outlet, discount, buy, wholesale, fake, sale(s)). Listing pages, and phrases in the page’s own address, don’t count.
#### 12.8 Malicious practices

- **Google Web Risk:** a listing is always a sign. The page checks every URL, each outside domain linked (up to the URL limit) and up to 10 program downloads. The study checked homepages only.
- **Hidden code** in a page or a script file (a script that calls `eval` on `atob`, `unescape` or `decodeURIComponent`, uses `document.write(unescape(`, or builds a string from 50+ character codes) is decoded, never run. A sign if it sends visitors to another website, adds an iframe from another website or loads a script from another website.
- **Crypto-mining** code or scripts, and **pop-under advert networks**.
- **Back-button hijacking:** one inline script that calls `history.pushState` 3+ times or in a loop, handles `popstate`, and sends the visitor somewhere. In a browser, 3+ history entries added while loading, with a Back-button handler.
- **Windows opened by themselves** while a page loads, in a browser.
- Links straight to program files (`.exe`, `.apk`, `.msi`, `.dmg`, `.scr`, `.bat`, `.cmd`, `.vbs`, `.jar`) are listed for information, not as signs.
#### 12.9 Link spam

Only links to other websites without `rel="sponsored"` or `rel="nofollow"` are considered.

- **Sold link text:** any link with list D text.
- **Affiliate links:** 3 or more links to the networks in list G. One or two are listed with advice, not counted.
- **Advert links:** a link inside an element (the link or one of its 6 nearest parents, not `body`, `html` or `main`) whose class or id is exactly an advert name: ad, ads, advert(s), advertisement(s), sponsor(s), sponsored, sponsor-logos, ad-slot, ad-unit, banner-ad and similar. Not public-body sites, app stores, the site’s sister domain, or links about placing an advert with the site.
- **Link exchange pages:** address or heading about swapping links, text asking for links back, and links to 15+ other sites. **Required links back:** terms saying a link back must be included.
- **Sponsored posts:** title, heading or first 600 characters marked as sponsored (including “in paid partnership with”, but not “in partnership with” or “brought to you by”). Each followed link in the main content, except social and public-body sites.
- **Site-wide keyword links:** the same followed link on at least half the HTML pages (3+), with 3+ words including a strongly commercial word (cheap, best, top, affordable, buy, near me, deal, discount, casino, loan, betting), and no word of 4+ letters that’s part of the linked site’s own name. Not social, public-body, sister-domain or donation links (ko-fi.com, buymeacoffee.com, patreon.com, paypal.me, gofundme.com, justgiving.com).
- **Free-host networks:** followed links to 10+ different sites on free hosting.
Links to government, NHS, university, police, school and parliament sites (list I) aren’t counted unless they’re affiliate links. Single everyday words such as “loan” or “casino” aren’t sold link text.

#### 12.10 User-generated spam

A link in a comment, forum post, signature, member profile (`/member(s)/`, `/profile(s)/`, `/user(s)/`, `/author/` and similar) or comment widget (up to 3 per page in a browser) that has a list B word, list D text or goes to an affiliate network, without `ugc`, `nofollow` or `sponsored`. Also files in an uploads folder with hacked-content evidence. Not counted: links in avatars, author names, reply and share buttons, and links to common platforms (Gravatar, WordPress, Facebook, X, LinkedIn, Instagram, YouTube, Pinterest, Google, WhatsApp).

#### 12.11 Thin affiliation

Pages with 5 or more affiliate links (list G, plus addresses with `/go/`, `/recommends/` or `/refer/`) and fewer than 100 words of main text per affiliate link.

#### 12.12 Scaled content abuse

- **Fingerprints.** Each page with 50+ words of main text gets a 64-value MinHash fingerprint of its three-word phrases. Matches are found by banding (16 bands of 4); a band value shared by more than 2,000 pages isn’t used. 90%+ in common is a near-copy. Groups are built around one page and every member is compared directly with it.
- **Content pages** are web pages with 80+ words of main text. Not listing pages (category, tag, author, archive, numbered, sorted or filtered pages, addresses ending in a year, pages whose text is half links or more), query-string copies of pages already checked, or shop, account and form pages (list J).
- **A sign:** a group of 10+ content pages that aren’t exact copies, at least a quarter of the site’s content pages, made from one title pattern with one word swapped (the rest of the title 3+ characters, the swapped word 3+ letters with no digits, the pattern on at least 5 pages or half the group, whichever is more).
- **Snippet pages:** 3+ pages, each with 5+ “read more”, “source” or “via” links to other sites and under 80 words of main content per link.
Not counted: exact copies at several URLs (listed as duplicates), short pages alone, and product sizes and similar sets.

#### 12.13 Doorway abuse

- **Near-identical pages:** 5+ content pages, each 85%+ the same as one page, with titles identical except one word, at least 5 different titles, the rest of the title 3+ characters, and the swapped word 3+ letters with no digits.
- **Funnel pages:** 5+ pages under 150 words (not the homepage or listings), titles differing by one word of 3+ letters that isn’t a number, and 80%+ of them linking from their main content to the same page on the site, which is an action page (contact, book, quote, estimate, order, enquire, call, apply, buy, checkout, get started or free trial). Not when every page is under a help, support, FAQ, knowledge-base or documentation folder.
- **Branch pages aren’t counted** when 80% of the group: show a UK postcode, with 80% showing a different first postcode; or each show a postcode no other page in the group shows; or carry their own branch details (LocalBusiness markup with a town or phone number, opening hours, or a map); or link to pages of their own below them.
Swapped numbers and sizes (times tables, print sizes, years) aren’t counted.

#### 12.14 Site reputation abuse

A top-level folder of 3+ URLs named for a list K topic, or a section (first folder, 3+ pages) whose page titles name a money topic, when the homepage never mentions that topic. Single pages, and topics the homepage mentions, don’t count.

#### 12.15 Expired domain abuse

1. The registrable domain is worked out from the Public Suffix List.
2. Public-body domains (list I) are “no signs”: a registry allocates them.
3. The current registration date comes from RDAP. Signed in only, a missing date is taken from the WHOIS record through DataForSEO. With no date, the result is “not checked”.
4. The Wayback Machine is asked for homepage copies saved more than 30 days before that date, at most one a day, the last 8 kept: 45 seconds, 3 tries, a genuine “not found” not retried. No answer: “not checked”. No earlier copy: “no signs”.
5. Up to 3 of the latest earlier copies are tried, newest first. Placeholders are skipped: list L pages, pages under 30 words, pages titled only with the domain name, and untitled pages under 150 words. Only placeholders: “no signs”. None loaded: “not checked”.
6. The domain’s name (3+ characters) in both the old and current titles: “no signs” (the same owner).
7. The 40 most frequent meaningful words (over 3 letters, common words left out) of the old copy and today’s homepage are compared. **A sign** when both have 10+ words and they share under 15%.
8. A registration that started 10 or more years ago is “no signs”, with a note.
In the study, sites where the Wayback Machine didn’t answer were tried again at the end, one at a time, for up to 60 minutes.

#### 12.16 Scraping, misleading functionality, scam and fraud, structured data

- **Scraping:** 5+ pages (a quarter or more of the HTML pages, not the homepage), each under 50 words of main content with 1 or more embedded videos or posts from other sites.
- **Content lockers:** “complete an offer or survey”, “verify you’re human” next to an offer, “unlock this content”, free currency or follower generators, or known locker scripts; “complete a survey” only within 60 characters of unlock, access, continue, download, “get your/the/free/instant” or “to view/see/read/watch/reveal”.
- **Fake download buttons:** a link whose whole text is a download phrase, going to an advert or click tracker on another site.
- **Tool pages with nothing to use:** a title or first heading offering a free or online tool, not a guide or list (titles with tools, guide, how to, tutorial or explained), with no form, input, editable area, canvas, iframe, object or embed and no scripts, or no usable control in a browser.
- **Scam and fraud:** the title or first heading claims to be official support, a helpline, a phone number or the website of a well-known brand the site’s host name doesn’t contain; or calls itself the official site of a government service on a site that isn’t `.gov.uk` or `.gov`; or the address, title, heading or first 5,000 characters offer to buy a driving licence, passport, ID card, residence permit, visa, diploma or certificate (not “passport holders”, “ID card printers” and similar products).
- **Spammy structured data:** JSON-LD with an `aggregateRating` whose review or rating count is 1 or more, on a page whose visible text shows no ratings or reviews.
#### 12.17 Scores and results

The report scores 17 checks: 15 of Google’s 16 spam policies (all but machine-generated traffic), scam and fraud, and spammy structured data. Expired domain abuse counts only when it could be checked. Machine-generated traffic, legal removals, personal information removals and policy circumvention are listed as not checkable from a website. Signed in, a DataForSEO spam score is shown as information and never counted. The study used no DataForSEO data.

#### 12.18 The study’s gambling rules

These belong to the study, not the audit.

- **Gambling names** (removed from the ordinary list before the run): casino, poker, bingo, roulette, jackpot, gamstop, blackjack, betting, lotto, sportsbook, plinko.
- **Gambling homepage title** (whole words): bet, bets, betting, bookmaker(s), casino(s), slot(s), jackpot(s), bingo, poker, gambling, lottery, lotto, wager, free spins, gamstop, roulette, blackjack, sportsbook, plinko, chicken road, aviator game, crash game, no deposit bonus, a number followed by “fs”, ice fishing, play and win, win big, betway, bet365, betfred, ladbrokes, paddy power, sky bet, unibet, betfair.
- **Gambling link networks:** link text with casino, gamstop, gamestop, betting, bookmaker, poker, roulette or jackpot, pointing to 3 or more different websites.
#### 12.19 Word lists

A. Spam shown only to Googlebot

casino, slot gacor, gacor, togel, judi, bahis, betting, jackpot, poker, roulette, viagra, cialis, porn, xxx, kasih menang, deneme bonusu.

B. Spam words in addresses and host names

casino, gamstop, gamestop, betting, bestbetting, slot(s), poker, roulette, jackpot, viagra, cialis, levitra, pharma, payday, loan(s), porn, xxx, escort, essay, replica, forex, crypto, backlink(s).

C. Spam phrases (hacked content and hidden text)

viagra, cialis, levitra, tadalafil, sildenafil, online casino, casino bonus, slot machine(s), payday loan(s), replica watches, bags or handbags, free porn, porn video(s), porn tube, xxx video(s), sex video(s), escort service, essay writing service, buy followers, crypto giveaway. Plus gambling and pill phrases in German, French, Spanish, Portuguese, Italian, Dutch, Polish, Indonesian, Turkish and Russian, including Turkish betting words (any word containing “bahis”, “… bet giriş”, casibom, jojobet, holiganbet, grandpashabet, meritking, matbet) and Indonesian lottery phrases (toto togel, situs toto, situs togel, bandar togel).

D. Commonly sold link text

online casino(s), casino site(s), new casino(s), best casino(s), UK casino(s), casino(s) not on GamStop, not on GamStop, non-GamStop, casino bonus(es), betting site(s), bookmaker(s) not on, free spins, no deposit bonus, payday loan(s), cheap viagra, buy viagra, buy cialis, essay writing service(s), buy essay(s), buy backlinks, replica watches, replica handbags.

E. Subject families (a phrase isn’t off-subject on sites about these)

Medicine names: pharmacy, chemists, pills, erectile problems, men’s health, medicine. Casino and slot phrases: casinos, slots, gambling, betting, bingo, poker, GamStop, jackpots, spins, roulette, blackjack, bookmakers. Payday loans: loans, lending, credit, borrowing, finance. Essay writing: essays, assignments, coursework, dissertations, homework, academic writing, thesis. Escort service: bodyguards, close protection, security, escorting. With pharmacy, gambling and lending words in the other listed languages.

F. Pages not compared for cloaking

Firewall or bot check: just a moment, attention required, client challenge, validation request, checking your browser, verify(ing) you are (a) human, are you a robot, captcha, ddos protection, security check, request (was) blocked, access denied, forbidden, bot verification. Not served normally: under maintenance, maintenance mode, temporarily unavailable, service unavailable, too many requests, rate limit, bad gateway, gateway time-out, internal server error, site is down, be right back, account suspended. Matched on the title, and on the text of pages under 150 words.

G. Affiliate networks

Amazon (with a `tag=` parameter, or amzn.to), Awin (awin1.com), CJ (anrdoezrs.net, dpbolvw.net, jdoqocy.com, kqzyfj.com, tkqlhce.com), ShareASale, ClickBank, Skimlinks (go.skimresources.com), Partnerize (prf.hn), LTK (rstyle.me), Rakuten (linksynergy.com).

H. Social and video sites

facebook.com, fb.com, instagram.com, twitter.com, x.com, youtube.com, youtu.be, vimeo.com, linkedin.com, pinterest, tiktok.com, whatsapp.com, wa.me, t.me, threads.net, bsky.app, flickr.com, spotify.com, soundcloud.com.

I. Public-body domain endings

.gov, .gov.uk, .nhs.uk, .ac.uk, .police.uk, .sch.uk, .mod.uk, .parliament.uk, .gov.scot, .gov.wales, .edu.

J. Shop, account and form pages

Address parts: product(s), shop, store, collection(s), cart, basket, checkout, my-account, account, login, log-in, signin, sign-in, register, wishlist, compare, contact, contact-us, enquir…, booking, book-now, book, quote, order, portfolio, project(s), gallery, galleries, event(s), colour/color, size, brand, attribute, memberlist, profile, member(s).

K. Site reputation folders

coupon(s), voucher(s), voucher-codes, promo-code(s), discount-code(s), casino(s), betting, sportsbook, slot(s), payday, payday-loans, loan(s), cbd, essay(s), essay-writing.

L. Placeholder pages (expired domains)

for sale, buy this domain, registered at [domain], resources and information, thousands of domains, free email and choose, domain registered, hosted by [domain], domain (name) (is) parked or available, parked free, domain or by, this domain may be or is for, make an offer, coming soon, under construction, just another WordPress site, index of /, account (has been) suspended, default web site page, welcome to nginx, it works!, domain expired, renew this or your domain, website is (currently) unavailable.

![AIWebPageSEO](/images/aiwebpageseo-logo-light-t.webp) ![AIWebPageSEO](/images/aiwebpageseo-logo-dark-t.webp)

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical website tools.

### Tools

- [Security Audit](/security-audit.html)
- [Schema Generator](/schema-tools.html#ai-schema)
- [LLMs.txt Generator](/content-tools.html#llms)
- [Trust Audit](/trust-audit.html)
- [Ecommerce Crawl](/ecommerce-audit.html)
- [Site Audit Pro](/audit-tools.html#site-audit-pro)
### Our sites

- [GBP & Maps Audit](https://aipageseo.com/)
- [Keyword Analysis & Schema Debugger](https://aipageseo.co.uk/)
- [AEO & E-E-A-T Checker](https://aiwebpageseo.co.uk/)
- [GDPR Audit & Markdown Generator](https://aiwebpageseo.website/)
- [Site Audit Pro & Local SEO](https://aiwebpageseo.store/)
- [Security Audit report](https://aiwebpageseo.shop/)
- [Markdown Generator report](https://aiwebpageseo.info/)
### Company

- [Pricing](/pricing.html)
- [Blog](/blog.html)
- [Support](/support.html)
- [Privacy policy](/seo-auth/privacy.html)
© 2026 aiwebpageseo · [advice@aiwebpageseo.com](mailto:advice@aiwebpageseo.com)

Back

![AIWebPageSEO](/images/aiwebpageseo-logo-light-t.webp) ![AIWebPageSEO](/images/aiwebpageseo-logo-dark-t.webp)

## Spam Policy Audit

Your website address *

Please enter a valid website address.

Check My Site

![AIWebPageSEO](/images/aiwebpageseo-logo-light-t.webp) ![AIWebPageSEO](/images/aiwebpageseo-logo-dark-t.webp)

## Checking your site…

Up to 20 URLs are checked, or up to 100 when you’re signed in. Keep this page open until it finishes.

Try again

### Advanced controls

20, 50 or 100 URLs, paid from your credits.

### Why run the full audit?

- Check one folder, your own list of URLs, or only the policies you choose.
- Get a DataForSEO spam score for your site and every site it links to.
- Get the WHOIS registration date when the public record has none, so the expired-domain check can run.
[Sign in ](/seo-auth/login.html?redirect=spam-audit.html)

Opens in a new tab, so this audit keeps running.

[ Demo](https://aiwebpageseo.com/aipageseo-demo-pages/demo-spam-audit.html)[ Tutorial](https://aiwebpageseo.com/aipageseo-demo-pages/novice-tutorial-spam-audit.html)[ Guide](https://aiwebpageseo.com/aipageseo-demo-pages/spam-audit-guide.html)[ Fix](https://aiwebpageseo.com/aipageseo-demo-pages/spam-audit-fixes-index.html)

[![AIWebPageSEO](/images/aiwebpageseo-logo-light-t.webp) ![AIWebPageSEO](/images/aiwebpageseo-logo-dark-t.webp)](https://aiwebpageseo.com/)

[Schema Debugger](https://aiwebpageseo.com/schema-tools.html#schema-debugger) [Schema Generator](https://aiwebpageseo.com/schema-tools.html#ai-schema) [LLMs.txt Generator](https://aiwebpageseo.com/content-tools.html#llms) [Site Audit](https://aiwebpageseo.com/audit-tools.html#site-audit) [Pricing](https://aiwebpageseo.com/pricing.html) [Blog](https://aiwebpageseo.com/blog.html) [Sign In](https://aiwebpageseo.com/seo-auth/login.html) [Join free ](https://aiwebpageseo.com/seo-auth/login.html)

## Spam Policy Audit report

Signs of the practices in Google’s spam policies, found in your public pages, signs found first, with what was found, where, and how to fix it.

Back to the audit

Your website address

Any website, anywhere. Enter the full address including https://

How many URLs to check Up to 20 URLs Up to 50 URLs Up to 100 URLs

Which URLs The whole site (from your sitemaps) One folder only My own list of URLs

Your homepage is always checked first.

Folder

Your URLs (one per line, up to 100, on the same site)

Pages opened in a real browser (Chrome) Up to 10 pages Up to 25 pages

Which policies do you want in the report?

All None

CloakingEach URL loaded as a visitor, as Googlebot and on mobile, and compared; selected pages also in a real browser. Sneaky redirectsWhere visitors, Googlebot, mobile users and visitors from Google end up, including redirects made by scripts. Hidden text and link abuseLinks and text hidden from visitors, including by stylesheets, colour and position. Keyword stuffingRepeated phrases, lists of phone numbers and places, and repeated words in alt text and titles. Hacked contentSpam words in 11 languages, hidden iframes, suspicious scripts and auto-generated pages. Malicious practicesGoogle Web Risk on every URL and linked site, hidden code, mining, pop-under and back-button tricks. Link spamSold, affiliate and advert links, link exchanges, sponsored posts and site-wide keyword links. User-generated spamSpam in comments, forum signatures, member profiles and uploaded files. Thin affiliationPages that are mostly affiliate links with little of your own text. Scaled content abuseNear-copies, reworded copies and pages made of other sites’ snippets. Doorway abuseNear-identical town or keyword pages, and short pages that funnel visitors on. Site reputation policyCoupon, casino, loan and similar sections your site isn’t about. Expired domain abuseWhether the domain was registered again after holding a different site. Misleading functionalityContent lockers, fake download buttons and tool pages with nothing to use. ScrapingPages that are mostly media embedded from other sites. Scam and fraudPages posing as a brand’s or government’s official service. Spammy structured dataRatings and reviews in the markup that the page doesn’t show.

I'm happy for this website address to be checked by our audit tools. See our [privacy policy](/seo-auth/privacy.html).

Run the audit

Copy AI fix prompt Request a quote for this work Check another site

The AI fix prompt only covers changes to your site’s own files (HTML, CSS and JavaScript), never server, hosting or DNS settings. Those are listed separately, and if you’d like them done for you, you can request a quote. Back up your site before letting any AI tool change it.

Send quote request

[ AIWebPage*SEO*](https://aiwebpageseo.com/)

AI-powered schema and llms.txt generation plus SEO tools for small business. 90+ schema types, up to 1,000 items per run. Pay-as-you-go from £4.99 or subscribe from £14.99/mo — credits never expire.

### Our Other Sites

- [aipageseo.co.uk — Site Audit Pro & Local SEO Checker](https://aipageseo.co.uk/)
- [aipageseo.com — GBP Audit & Maps Audit](https://aipageseo.com/)
- [aiwebpageseo.co.uk — AEO Checker & E-E-A-T Checker](https://aiwebpageseo.co.uk/)
- [aiwebpageseo.website — GDPR Audit & GBP Audit](https://aiwebpageseo.website/)
### Schema Tools

- [AI Schema Generator](https://aiwebpageseo.com/schema-tools.html#ai-schema)
- [LLMs.txt Generator](https://aiwebpageseo.com/content-tools.html#llms)
- [Schema Debugger](https://aiwebpageseo.com/schema-tools.html#schema-debugger)
- [Schema Builder](https://aiwebpageseo.com/schema-tools.html#schema-builder)
- [Rich Snippets Tester](https://aiwebpageseo.com/schema-tools.html#rich-snippets)
- [OG Tag Generator](https://aiwebpageseo.com/schema-tools.html#og-generator)
- [SERP Preview](https://aiwebpageseo.com/schema-tools.html#serp-preview)
### SEO Tools

- [Site Audit](https://aiwebpageseo.com/audit-tools.html#site-audit)
- [Local SEO Checker](https://aiwebpageseo.com/audit-tools.html#local-seo)
- [AEO Checker](https://aiwebpageseo.com/content-tools.html#aeo)
- [E-E-A-T Checker](https://aiwebpageseo.com/content-tools.html#eeat)
- [Core Web Vitals](https://aiwebpageseo.com/audit-tools.html#cwv)
- [Maps Audit](https://aiwebpageseo.com/content-tools.html#maps-audit)
### Company

- [Pricing](https://aiwebpageseo.com/pricing.html)
- [Blog](https://aiwebpageseo.com/blog.html)
- [About](https://aiwebpageseo.com/about.html)
- [Demo Pages](https://aiwebpageseo.com/aipageseo-demo-pages/)
- [Contact](https://aiwebpageseo.com/contact.html)
- [Facebook](https://www.facebook.com/Aipageseo)
- [X (Twitter)](https://x.com/AiPageSeo)
- [Instagram](https://www.instagram.com/aipageseo/)
- [YouTube](https://www.youtube.com/@AdvicePageSeo)
- [Privacy Policy](https://aiwebpageseo.com/seo-auth/privacy.html)
- [Terms of Service](https://aiwebpageseo.com/seo-auth/terms.html)
### About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.

Find us on

Share this page

[X](https://twitter.com/intent/tweet?url=https%3A%2F%2Faiwebpageseo.com%2F&text=Schema%20%26%20AEO%20generator%20%E2%80%94%20JSON-LD%20for%20up%20to%201%2C000%20items%20plus%20AEO-ready%20llms.txt) [Facebook](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Faiwebpageseo.com%2F) [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Faiwebpageseo.com%2F) [Reddit](https://www.reddit.com/submit?url=https%3A%2F%2Faiwebpageseo.com%2F&title=Schema%20%26%20AEO%20generator%20%E2%80%94%20JSON-LD%20for%20up%20to%201%2C000%20items%20plus%20AEO-ready%20llms.txt) [WhatsApp](https://api.whatsapp.com/send?text=Schema%20%26%20AEO%20generator%20%E2%80%94%20JSON-LD%20for%20up%20to%201%2C000%20items%20plus%20AEO-ready%20llms.txt%20https%3A%2F%2Faiwebpageseo.com%2F) [Email](mailto:?subject=Schema%20%26%20AEO%20generator%20%E2%80%94%20JSON-LD%20for%20up%20to%201%2C000%20items%20plus%20AEO-ready%20llms.txt&body=https%3A%2F%2Faiwebpageseo.com%2F) Copy link

© 2026 aiwebpageseo · [advice@aiwebpageseo.com](mailto:advice@aiwebpageseo.com) · [v2.8.0](/changelog.html)

[Virtual Office](https://aiwebpageseo.com/support.html), Chesterfield, S42 6BT