Notes from the work

Hreflang for casino sites: the implementation guide, including what only goes wrong in iGaming

Hreflang for casino sites fails in predictable ways: geo-blocks that hit Googlebot, licence domains, mirrored markets. How to implement and test it now.

John KyprianouJohn Kyprianou14 min readUpdated

The most common hreflang failure we see on casino sites has nothing to do with the tags. It is a geo-block that hands Googlebot a 403 on the .com because Googlebot crawls from the United States, and every cluster that includes that domain quietly falls apart.

Hreflang for casino sites is the standard specification plus a set of problems that only regulated, multi-licence operators have. This guide covers both, with the code, and with what to test against now that Search Console no longer reports hreflang errors at all.

What hreflang does, and what it will not do

Hreflang tells Google which of your URLs is the right version for a given language and region. It is a signal, not a directive. John Mueller confirmed in May 2025 that hreflang does not guarantee indexing, and that where two variants are the same (his example was fr-fr and fr-be) it is common for Google to pick one as canonical (Search Engine Journal).

Gary Illyes went further in August 2026: hreflang alternates are not indexed "in the proper sense". Google indexes the canonical and stores the alternates as alternate names of it, which it can then swap in when the query and location warrant (Search Engine Roundtable).

Two other facts shape everything below. Google decides a page's language from its visible content, not from lang attributes or the URL. And Google recommends separate URLs per language version over cookies, browser settings or automatic redirects (Google Search Central).

So hreflang does not make a page rank. It makes sure that when a page in the cluster ranks, the version served matches the searcher, which for a casino means the UKGC site appears in Britain and the MGA site appears in Ireland. That is a compliance outcome as much as a traffic one.

Language codes, region codes and the en-gb question

The format is an ISO 639-1 language code, optionally followed by an ISO 3166-1 alpha-2 region code. You cannot specify a region on its own. Codes reserved for other purposes, including EU, UN and UK, are ignored by Google (Google Search Central).

Market Correct Seen in the wild and wrong
Great Britain en-GB en-UK, en-uk, gb
Ireland en-IE en-EU
Germany de-DE de-EU, ger
Austria de-AT de (if a separate DE site also exists)
Brazil pt-BR pt (when Portugal is a separate site)
Canada, French fr-CA fr-QC
Latin America, Spanish es-MX, es-AR (per market) es-LATAM, es-419
Any English speaker not covered en en-WW, en-INT

Case does not matter to Google (en-GB and en-gb are equivalent), but pick one so your crawler reports stay clean.

The en versus en-GB decision is where casino sites go wrong most. The pattern that works: the site licensed for Great Britain gets en-GB, and the global English site gets plain en. The language-only en then acts as the fallback for English speakers in Canada, Ireland, New Zealand and anywhere else you have not given a regional version. If you only have one English site and it is the UKGC one, tag it en-GB and let x-default do the fallback work, but do not pretend a UK-compliant page is your global English page.

Licence-specific domains

Anyone providing facilities for remote gambling to consumers in Great Britain needs a Gambling Commission licence, wherever the business is based (Gambling Commission). The usual response is a separate British site, typically brand.co.uk, with UKGC-specific terms, a UKGC footer, GamStop integration and British payment methods, alongside a brand.com under a Malta or other licence for the rest of the world.

Hreflang works across domains. Google's own examples use different hosts for each version. The cross-domain cluster for a slots category page looks like this:

<link rel="alternate" hreflang="en-GB" href="https://www.brand.co.uk/slots/" />
<link rel="alternate" hreflang="en" href="https://www.brand.com/slots/" />
<link rel="alternate" hreflang="de-DE" href="https://www.brand.com/de/spielautomaten/" />
<link rel="alternate" hreflang="sv-SE" href="https://www.brand.se/slots/" />
<link rel="alternate" hreflang="x-default" href="https://www.brand.com/slots/" />

That block must appear, identically, on all four URLs. The .co.uk page has to list the .com and .se, and they have to list it back. If the two domains are run by different teams on different platforms, this is where the return links go missing, and Google's documentation is explicit that annotations without return links may be ignored.

Two casino-specific consequences. First, the British and global English pages will often be near-identical apart from compliance blocks. That is fine for hreflang, but Google may still fold them into one canonical if the content is the same, so make the differences real: currency, payment methods, bonus terms, licence text, support details. Second, do not point x-default at the .co.uk. A UKGC page with British bonus terms is not the right fallback for someone in Australia.

Geo-blocked markets and Googlebot

This is the failure from the first paragraph. Google says the default IP addresses of Googlebot appear to be US-based, that it also crawls from IPs outside the US, and that it sends requests without an Accept-Language header. On blocking, its guidance is direct: treat Googlebot like any other user from that country. If you block US users, block US-based Googlebot (Google Search Central).

Read that from the casino's side. Almost no European operator holds a US licence, so almost every .com blocks the US. If the block is a 403 or a redirect to a "not available in your region" page at the domain level, the crawler that does most of Google's crawling sees exactly that, on every URL, including the ones that carry your hreflang.

The fix is architectural rather than a tag change. Keep marketing and category pages crawlable from anywhere with a compliant notice for blocked regions, and put the geo-block on registration, deposit and the game launcher. That is what you would show a US visitor who is only reading anyway, and it keeps the .com in the index. Serving Googlebot different content from what a US user sees is cloaking under Google's spam policies, so the page a US human sees and the page US Googlebot sees must be the same page.

If legal insists on a hard block, accept that the .com is largely invisible to Google and leave it out of the clusters, so the licensed sites at least form a complete cluster on their own.

Mirrored markets sharing content

Operators routinely run en-GB, en-IE, en-CA and en-NZ off one English template with a currency swap. Google's guidance for similar content in the same language across regions is to pick a preferred version and use rel canonical together with hreflang so that the correct regional URL is served (Google Search Central).

In practice that gives you two choices. Either accept that Google will canonicalise the mirrors to one URL and let hreflang swap the regional address in at serving time, with the reporting consolidated under the canonical (which is what Mueller described for fr-fr and fr-be). Or make the regional pages differ enough that they stand on their own. For a casino the differences are real if you surface them: licence and regulator, payment methods, currency, bonus terms and wagering, responsible gambling tools and helplines, phone support hours.

The mistake is the middle path: identical content, self-referencing canonicals on each mirror, and an expectation that Google will index all four. It usually indexes one.

Choosing between head tags, sitemap and HTTP headers

Google treats the three methods as equivalent. The choice is operational.

Method Best for Casino-specific pitfall
HTML link elements in the head Most page templates Front ends that inject the head via JavaScript; tags that end up outside the head after a plugin adds markup
XML sitemap Large game libraries (thousands of slot pages times many languages), cross-domain clusters managed centrally A game removed in one market for regulatory reasons leaves a dead URL in every other market's cluster
HTTP Link header PDFs such as terms, bonus rules and game rules Nobody remembers the header exists when the CDN config changes

Use one method per page. Two sources disagree eventually, which is why Screaming Frog flags multiple entries as an issue.

The HTML version, for a German-language game page with a British and global English equivalent:

<head>
  <link rel="alternate" hreflang="de-DE" href="https://www.brand.com/de/spiele/book-of-ra/" />
  <link rel="alternate" hreflang="en-GB" href="https://www.brand.co.uk/games/book-of-ra/" />
  <link rel="alternate" hreflang="en" href="https://www.brand.com/games/book-of-ra/" />
  <link rel="alternate" hreflang="x-default" href="https://www.brand.com/games/book-of-ra/" />
</head>

The sitemap version of the same cluster. Each URL gets its own entry, and each entry repeats the full set including itself:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://www.brand.com/de/spiele/book-of-ra/</loc>
    <xhtml:link rel="alternate" hreflang="de-DE" href="https://www.brand.com/de/spiele/book-of-ra/" />
    <xhtml:link rel="alternate" hreflang="en-GB" href="https://www.brand.co.uk/games/book-of-ra/" />
    <xhtml:link rel="alternate" hreflang="en" href="https://www.brand.com/games/book-of-ra/" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://www.brand.com/games/book-of-ra/" />
  </url>
  <url>
    <loc>https://www.brand.co.uk/games/book-of-ra/</loc>
    <xhtml:link rel="alternate" hreflang="de-DE" href="https://www.brand.com/de/spiele/book-of-ra/" />
    <xhtml:link rel="alternate" hreflang="en-GB" href="https://www.brand.co.uk/games/book-of-ra/" />
    <xhtml:link rel="alternate" hreflang="en" href="https://www.brand.com/games/book-of-ra/" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://www.brand.com/games/book-of-ra/" />
  </url>
  <!-- and a third <url> block for https://www.brand.com/games/book-of-ra/ with the same four links -->
</urlset>

The .co.uk entry sits in the .com sitemap here for illustration. In production each host carries its own sitemap listing its own URLs with the full alternate set, referenced from that host's robots.txt.

The HTTP header version, for a bonus terms PDF that exists in British and German versions:

Link: <https://www.brand.co.uk/terms/bonus-terms.pdf>; rel="alternate"; hreflang="en-GB",
      <https://www.brand.com/de/agb/bonusbedingungen.pdf>; rel="alternate"; hreflang="de-DE",
      <https://www.brand.com/terms/bonus-terms.pdf>; rel="alternate"; hreflang="en"

Return tags, self-reference and the promotion problem

Every URL in a cluster must list itself and every other member, with the same set on each. If page X links to page Y and Y does not link back, Google may ignore the annotations (Google Search Central).

Casino sites break return links in three predictable ways. A promotion runs in the UK and Germany but not Sweden, and the template adds the Swedish URL anyway, where it 404s or redirects to the promotions hub. A game is pulled from one regulated market and its page removed, but the other markets keep pointing at it. And a new market launches on a platform whose template lists the other sites, without the other sites being updated to list it.

The rule that prevents all three: a URL only goes into a cluster if it exists, returns 200, is indexable and is canonical to itself. If the Swedish promotion does not exist, the cluster simply has no Swedish URL, and x-default handles Swedish visitors.

Canonical and noindex conflicts

Every hreflang URL must be the canonical. If brand.com/de/slots/ canonicalises to brand.com/slots/, the de-DE annotation points at a page Google will not index, and the cluster is inconsistent. Illyes's August 2026 explanation is the mechanism: the alternates hang off the canonical, so an alternate that is itself canonicalised elsewhere has nowhere to hang.

Where this shows up on casino sites: affiliate landing pages with tracking parameters that are canonicalised to the clean URL but still carry hreflang to the parameterised versions; legacy m. subdomains; staging or CDN hostnames that leaked into the template; and noindexed compliance pages (self-exclusion, complaints procedures) that were bulk-added to the hreflang set because the template applies it to everything. Noindex return links are their own filter in Screaming Frog because they are that common.

Testing in 2026

Search Console's International Targeting report, which used to list hreflang errors and offered site-wide country targeting, was deprecated in 2022. Google's note says it will continue to support and use hreflang, but the reporting is gone (Search Console Help). Nothing inside Search Console has replaced it, so validation now happens in a crawler.

Screaming Frog is the tool we use. Enable hreflang under Config, Spider, Crawl, and configure sitemap discovery and header reading there too if you use those methods. For cross-domain clusters, add the other domains under Config, CDNs, so the spider treats them as internal and follows the return links. The Hreflang tab then filters for non-200 URLs, unlinked URLs, missing return links, inconsistent codes, non-canonical and noindex return links, incorrect codes, multiple entries, missing self-reference, missing x-default and tags outside the head, with bulk exports under Reports, Hreflang (Screaming Frog).

The order we work through:

Check Where What a pass looks like
Raw HTML from a US IP with a Googlebot user agent curl or a VPN 200 and the real page, not a block page
Head tags present in the raw HTML, not only after render View source, or our Chrome SEO audit extension for a quick per-page look Tags inside the head, one set per page
Return links and self-reference Screaming Frog, Hreflang tab Zero in Missing Return Links and Missing Self Reference
Canonical and indexability of every cluster member Screaming Frog, Non-Canonical and Noindex Return Links Zero rows
Which URL Google actually chose Search Console URL Inspection, per market site User-declared canonical matches Google-selected canonical
Which version surfaces per country Search Console Performance, filter by country and page The .co.uk gets the GB impressions, the .com does not

Run the first check before any of the others. If Googlebot in the US cannot see the page, the rest of the report is measuring a page Google does not have.

Where this sits in the wider plan

Hreflang is the plumbing under a multi-market casino, and clean plumbing does not win markets by itself. The market pages still need authority, which is why we wrote about earning links for casino sites, and they increasingly need to be the version an AI answer cites, covered in iGaming SEO for AI search. The same cross-domain and geo-blocking logic applies to crypto exchanges, and if Britain is a core market our UK SEO page covers the regulated-brand side.

If your clusters are throwing errors you cannot trace, or you are about to split a .com into licensed domains, that is what our iGaming SEO and international SEO teams do, and a free SEO review will tell you which of the checks above you are currently failing.

Frequently asked questions

Should a casino use en or en-GB in hreflang?

Use en-GB for a site that is specifically for Great Britain, typically the UKGC-licensed .co.uk, and plain en for an English site meant for everyone else. Language-only codes act as the fallback for English speakers in regions you have not listed. Never use en-UK: UK is not a valid ISO 3166-1 region code and Google ignores it.

Does geo-blocking a country break hreflang?

It can. Googlebot crawls mainly from US IP addresses, and Google says to treat it like any other user from that country. If your .com blocks the US at the HTTP level, Googlebot sees the block page instead of your content, and every hreflang cluster that includes the .com loses its return link. Block registration, not marketing pages.

How do I check hreflang now that Search Console's International Targeting report is gone?

Crawl the site with Screaming Frog with hreflang enabled and review its hreflang filters and the Reports menu exports for missing return links, non-canonical and noindex return links. Use Search Console's URL Inspection to confirm which URL Google chose as canonical, and the Performance report filtered by country to confirm the right version is surfacing.

Can hreflang point across different domains?

Yes. Google supports hreflang between separate domains, which is how a UKGC-licensed .co.uk and an MGA-licensed .com are linked. Each page must list itself and all alternates with fully qualified URLs, and the return links must exist on the other domain. In Screaming Frog, add the other domains under Config, CDNs, so they are treated as internal.

More on technical seo
John Kyprianou

John Kyprianou

Founder & SEO Strategist

John brings over a decade of experience in SEO and digital marketing. With expertise in technical SEO, content strategy, and data analytics, he helps businesses achieve sustainable growth through search.

Keep reading

More to think about.

All insights
Numbered image SEO checklist with found by Google, fast and sized right, and worth showing as the first three checks, and alt text as the fourth

Technical SEO

Image SEO: the checks that actually move something

Open the image audit on almost any site and the findings repeat: the hero is lazy-loaded, the gallery is a CSS background, every photo is stock, and the alt text is fine. Here is the order we would put the checks in, and why the camera makes original photos worth more than they were.

October 15, 2026
Diagram of a paginated product category where page 1 is crawlable and pages 2 to 6 are cut off, leaving their product pages without internal links, by SEO Turtle

Technical SEO

Pagination SEO: what to index, what to block, and what to fix

A category with six pages where everything past page 1 is invisible quietly orphans every product on pages 2 to 6. Most pagination advice was written for million-page retailers and makes this worse on a 400-page site. Here is what Google actually asks for, the mistake that causes most of it, and an afternoon audit to find out whether you have it.

October 13, 2026
Diagram of a website sending Google contradictory canonical signals from internal links, sitemap and redirects, with Google selecting a different URL, by SEO Turtle

Technical SEO

Why Google ignores your canonical tag, and how to fix each case

The ticket usually says the canonical is correct and Google is still indexing the wrong URL. Most of the time the tag is fine and the rest of the site is arguing with it. Here is how to find out which URL Google actually picked, what each Search Console status really means, and which contradictions to go and remove.

October 7, 2026
Diagram of a small website's internal links showing an orphan page, a service page buried several clicks deep and a link pointing at a redirect, by SEO Turtle

Technical SEO

Internal linking audit: orphan pages, click depth and wasted links

Most internal linking advice is written for six-figure e-commerce sites and does nothing for a 200-page business site. The problems there are smaller and more specific: orphan pages, money pages buried five clicks deep, navigation anchors that all say the same thing, and links still pointing at old URLs. Here is how we find each one and what we fix first.

September 24, 2026
Diagram of an ecommerce filter sidebar producing hundreds of URL combinations, with a small set marked index and the rest marked block, by SEO Turtle

Technical SEO

Faceted navigation SEO: which filter pages to index and which to block

A filter sidebar can generate more URLs than your store has products, and the two standard answers (index everything, block everything) are both wrong. Here is how to decide facet by facet, why rel=canonical does not fix the crawl problem, and what to check in Search Console after you ship the change.

September 22, 2026