Hreflang

No Comments
Hreflang

Hreflang is an annotation that tells search engines which language — and optionally which region — a specific URL is meant for, so users in each market get served their own version. If you publish the same content in English, French, and German, hreflang is how Google knows the French page belongs to French searchers instead of guessing from the URL or the text.

The stakes are concrete: without correct hreflang, Google routinely ranks your US page in the UK, your Spanish (Spain) page in Mexico, or — the expensive one — your English page in a market where you paid for a full translation that never surfaces. Users land on the wrong version, bounce, and the localized pages you built sit invisible. On multi-market sites, misrouted language versions are one of the most common reasons international traffic underperforms the investment.

Hreflang is a signal, not a directive

This distinction gets glossed over constantly and it changes how you debug. A directive (like noindex) is obeyed. Hreflang is a clustering signal: Google uses it to group your alternate URLs into a set and then chooses which member of the set to show for a given user. It can, and does, ignore your annotations when other signals disagree — when two "alternates" aren't actually equivalent content, when canonicals point elsewhere, or when return tags are missing and the cluster never forms.

Practical consequence: when hreflang "doesn't work," the fix is almost never to add more hreflang. It's to find the conflicting signal that's breaking the cluster — usually a canonical tag, a redirect, or a missing return reference.

A working example

Say you run example.com with a generic English version, a UK English version, and a French version. Every one of the three pages carries the identical block — each URL references every alternate including itself, plus an x-default for everyone else:

<link rel="alternate" hreflang="en" href="https://example.com/pricing/" />
<link rel="alternate" hreflang="en-gb" href="https://example.com/uk/pricing/" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/tarifs/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/pricing/" />

Two rules make or break this. First, return tags: if /pricing/ declares /fr/tarifs/ as its French alternate, then /fr/tarifs/ must declare /pricing/ back, or Google discards the relationship in both directions. Second, the self-referencing entry: each page lists itself in its own set. The codes are ISO 639-1 for language and ISO 3166-1 Alpha 2 for region — and region alone is never valid. There is no hreflang="gb"; there is en-gb.

Three ways to implement it — pick exactly one

Google accepts three placement methods. Any single one works. What does not work is mixing them: two methods emitting slightly different sets (one includes x-default, one doesn't; one has a stale URL) creates conflicting signals, and since hreflang is only a signal, conflicts get resolved by ignoring you. Choose one method and delete the others.

MethodWhere it livesBest forWatch out for
HTML <head> link elementsOn every page, in the headSmall-to-mid sites, CMS-driven sites where a plugin or template can output the blockBloats every page's head on sites with many locales (20 languages = 21 lines on every page × every page); tags injected by JavaScript after render are unreliable
HTTP header (Link:)Server response headersNon-HTML documents — PDFs and other files that have no head to put tags inInvisible in view-source, so it's the method auditors miss; needs server-config access most content teams don't have
XML sitemap<xhtml:link> entries per URL in the sitemapLarge sites and big locale counts — keeps pages clean, centralizes management in one fileEvery alternate must appear as its own <url> entry with the full reciprocal set; sitemap generators that only list one direction silently break return tags

For most sites past a handful of locales, the sitemap method wins on maintainability alone. The full decision walkthrough is in the hreflang and international SEO implementation guide.

How to check it on your own site

  1. Crawl the site in Screaming Frog with hreflang extraction enabled (Config → Spider → Crawl → Hreflang), then open the Hreflang tab. The filters do the diagnosis for you: "Missing Return Links," "Inconsistent Language & Region Return Links," "Non-Canonical Return Links," "Not Using Canonical."
  2. Spot-check individual URL sets with the hreflang validator — paste a URL and it fetches the cluster, verifies reciprocity, and flags invalid codes.
  3. Curl a few pages per template and confirm only one method is emitting tags: check the head, the response headers, and the sitemap. If two of the three carry hreflang, that's a finding.
  4. In Search Console, check the International Targeting-style errors surfaced under page indexing, and compare per-country queries in Performance: if your UK URL gets impressions in the US and vice versa, the cluster isn't being honored.
  5. Verify that every URL referenced in an hreflang set returns a clean 200 — not a redirect, not a 404, not a noindexed page.

Common mistakes

  • Missing return tags. The number-one finding in every international audit. The homepage set is perfect; the templates deeper in never got the reciprocal tags. Fix: generate sets programmatically from a single source of truth, never hand-maintain them per page.
  • Invented codes. en-uk instead of en-gb, en-eu for "Europe" (regions like the EU aren't valid targets), se for Swedish (that's the country code; the language is sv). Invalid codes are silently dropped.
  • Hreflang pointing at redirected or canonicalized-away URLs. Every member of a cluster must be an indexable, self-canonical 200. Point at /fr/tarifs/ while its canonical points to /fr/pricing/ and the cluster falls apart.
  • Two implementation methods running at once. Usually a plugin writing head tags while an old sitemap still carries xhtml:link entries from a previous setup. They drift, they conflict, Google shrugs. Kill one.
  • No x-default. Not fatal, but you're leaving the "everyone else" routing decision entirely to Google. Add one line and control it. If you're seeing "unsupported or misconfigured hreflang" style flags, the dedicated fix guide walks through remediation case by case.

FAQ

Does hreflang boost rankings?

No. It's a routing signal, not a ranking signal. It decides which of your equivalent pages shows for a given user — it doesn't make any of them rank higher. The ranking benefit is indirect: right page, right user, better engagement.

Do I need hreflang between en-us and en-gb if the content is nearly identical?

Yes — that's actually the strongest use case. Same-language regional variants are exactly where Google struggles most to pick the right URL on its own, and where duplicate-content clustering picks a winner for you if you don't annotate.

Does hreflang replace canonical tags?

No, they work together and must agree. Each language version is self-canonical and carries the hreflang set. Canonicalizing all versions to one URL while declaring them as alternates is a contradiction, and canonical usually wins.

Can I use hreflang across different domains?

Yes. Clusters can span example.com, example.fr, and example.de without issue, as long as return tags are reciprocal across all of them. More setups and edge cases are covered in the hreflang and international SEO FAQ.

How long until fixes show up?

Google has to recrawl every member of a cluster before it re-forms. On large sites, expect weeks, not days — and crawl frequency of your deep alternate URLs is the bottleneck.

Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.

About SEO ProCheck

Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.

Work With Me

Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.

Subscribe to our newsletter!

More from our blog