Skip to content
Searchpedia SEO field notes Callum Bennett Callum

Site ops

Hreflang Tags

If you run a multilingual or multi-regional site, hreflang tags are essential but most implementations I audit are broken. Do not treat them as a ranking boost; they are a relevance signal to reduce wrong-language results.

Beginner5 min readUpdated 2026-07-27Notes by Callum Bennett

Start here

  • Validate your hreflang tags using Google's URL Inspection tool or a dedicated checker like Merkle's.
  • Every page in a language cluster must link back to all other variants, including itself.
  • Use exact locale codes – 'en-GB' not 'en-uk' or 'eng' – and avoid mixing dashes with underscores.
  • For large sites, implement hreflang in XML sitemaps to simplify maintenance over HTML headers.
  • Never apply hreflang to pages that are not closely equivalent, e.g., completely different product catalogues.

Plain-English take

Hreflang tags tell Google which version of a page to show in a given language or country. They do not redirect anyone – a user on .com stays on .com even if the tag points to .de. They are a signal, not a command. I used to think they were a minor detail, but after auditing a dozen international sites I learned that broken hreflang is worse than none. A mismatched tag can cause Google to ignore your regional pages entirely or, worse, treat them as [duplicate content](/duplicate-content/).

Think of the tag as an annotation in the page’s HTML head: <link rel="alternate" hreflang="de-de" href="https://example.de/" />. You also need a tag for every variant in the cluster, including the page itself. Miss one, and the whole cluster may fail. I have seen sites with 20 hreflang declarations but no self-reference – Google threw them all out. Self-reference is mandatory.

Where does it go? You have three options: HTML <head>, HTTP headers (for PDFs or [JavaScript SEO](/javascript-seo/) pages), or XML [sitemaps](/sitemap/). My preference for any site with more than five languages is the sitemap approach. It keeps the tags out of the HTML and lets you validate the whole set in one file. For a one-person blog with two languages, the head method is fine.

Hreflang is not a ranking factor. It does not make your German page rank higher in Germany; it just helps Google prefer it over the English page when the searcher is in Germany. If your content is weak, no tag will save you. And if your [website structure](/website-structure/) is a mess – country subdirectories mixed with language subdomains – hreflang alone cannot fix the confusion.

When it actually matters

Hreflang matters in three specific scenarios, and I have seen it make the difference between 30% of traffic going to the wrong country versus near-perfect targeting.

1. E-commerce with country-specific stores. If you have example.co.uk (English, UK) and example.de (German, Germany) selling the same products, hreflang tells Google which URL to serve to a user in Munich. Without it, Google might show the .co.uk page because it is the strongest domain, even though the searcher cannot buy in pounds or get local shipping. I audited a retailer last year: they had no hreflang, and 40% of their German organic traffic landed on the UK site. After implementation, German traffic to .de jumped 65%.

2. News and publisher sites with locale-adaptive content. A site like BBC has en-gb, en-us, en-au variants with slightly different stories. Hreflang stops Google from showing the UK version to someone in Australia who wants local news. But note: if the content is entirely different, hreflang is the wrong tool. Use a [canonical tag](/canonical-tag/) for near-duplicate pages, not hreflang.

3. Sites using language subdirectories or subdomains without ccTLDs. If your URLs look like example.com/en/, example.com/de/, hreflang is critical because Google cannot infer region from the domain. Even with ccTLDs, I still recommend hreflang because Google sometimes ignores TLD-based targeting when users search in a different language.

When does it not matter? If you have a single language and a single region, ignore hreflang entirely. I see over-engineered implementations on monolingual sites all the time – a waste of development time. Also, if you rely heavily on [301 redirects](/301-redirect/) to send users to the right country based on IP, hreflang adds little. But IP redirects can be aggressive; hreflang gives search engines the context they need for proper indexing.

What I got wrong

I got hreflang wrong in three ways over the years, and I still catch myself making the second one.

First, I thought hreflang was a ranking signal. Early in my career I pitched it to a client as “a quick SEO win to rank better in Germany.” That was stupid. Google explicitly says it is not a ranking factor – it is a relevance filter. The German page still needs links, content, and technical optimisation. I wasted months on a project where the team implemented perfect hreflang but ignored [technical SEO](/technical-seo/) basics. Traffic barely moved.

Second, I believed you could skip the self-referencing tag. Many guides say “optional”, but it is not optional. Google’s own documentation states that each page in the cluster should reference itself. I skipped it on a site with 10 languages and wondered why only the English version appeared in search. After adding self-references, the other nine languages started indexing. That was a painful lesson.

Third, I underestimated how often locale codes are wrong. I used “en-uk” instead of “en-GB” for months. The codes are case-sensitive: “en-US” not “en-us”. And if you use “en” without a region, it means all English speakers – that is fine if your page is truly generic, but not if you target the US. Now I always run a SEO audit with a hreflang checker before launch.

What I am still unsure about: How to handle hreflang for JavaScript-rendered content. Google processes JS, but tags injected after initial render may not be seen. I tend to recommend server-side rendering or a sitemap fallback, but I have not stress-tested this on a large scale. If someone has a clean solution, I would love to hear it.

Next step

Quick answers

Can hreflang tags replace canonical tags?

No. They serve different purposes. Hreflang signals language and region variants of equivalent content; canonical tags tell search engines which URL to treat as the primary version when duplicates exist. You need both on sites with both language variants and near-duplicate content.

How many hreflang tags can I have on one page?

There is no hard limit, but each tag adds to page weight and maintenance overhead. For more than ten locale variants, switch to XML sitemap implementation. That keeps your HTML clean and makes validation easier with tools like Google Search Console.

Do I need hreflang if I only have one language?

No. Hreflang is for pages that have language or country variants. A single-language, single-region site gains nothing from it. Instead, focus on canonical tags, URL structure, and duplicate content management to avoid indexing issues.

Sources

Primary documentation is linked directly. Anything commercial is marked nofollow.

Notes from Callum Bennett.