International SEO
Hreflang is the annotation that tells search engines which language-and-region version of a page serves which searcher — the wiring that stops your en-GB and en-US pages competing and gets the fr-CA visitor the Canadian French page — and it holds a special place in technical SEO folklore as the implementation most often done wrong. The rules are genuinely finicky; they're also finite. Here's hreflang explained completely, with working examples and the validation habit that keeps it honest.
What it does (and its exact scope)
Hreflang declares equivalence-with-audience: "this page has sibling versions; serve each searcher theirs." Effects: the right version surfaces per locale, and — the underrated half — the siblings stop being treated as competitors or duplicates, with signals shared across the cluster. Scope limits worth internalising: it's a hint Google usually honours (not a directive), it doesn't make anything rank (the version shown still ranks on the cluster's merits — authority physics unchanged), and it operates page-to-page, not site-to-site — every page maps to its actual equivalents.
The syntax, with examples
Three delivery methods (pick exactly one per site): head tags — <link rel="alternate" hreflang="en-gb" href="https://example.com/uk/page/" /> per version, on every version; the XML sitemap — xhtml:link entries per URL (the sane method at scale: one generated file instead of tags across thousands of templates); or HTTP headers for non-HTML. The value rules: language alone ("en", "fr" — ISO 639-1) or language-region ("en-gb", "fr-ca" — region is ISO 3166-1, and it's language-REGION, never region alone: "gb" is invalid, "en-uk" is wrong (UK isn't the ISO code — it's GB), and "en-eu" doesn't exist (no continent codes) — three of the classic value errors in one parenthesis. Two special values: x-default — the fallback for unmatched locales (point it at your international selector or primary version — always include one), and self-reference — every page lists itself in its own set.
The two laws that decide success
- Reciprocity (return links): if page A declares B as its French sibling, B must declare A back — one-directional annotations are ignored entirely, and missing return links are the number-one implementation failure (usually one template updated, its siblings forgotten). The set is all-or-nothing per page cluster.
- Target integrity: every declared URL must be the live, indexable, canonical version — hreflang pointing at redirects, 404s or canonicalised-away URLs breaks the chain (and hreflang + canonical must agree: each version self-canonicals and hreflangs to siblings; canonicalising all versions to one while hreflanging them apart is contradictory instruction, resolved unpredictably).
The operating habit
Generate, never hand-write, at any scale (CMS plugins and the sitemap method exist because hand-maintained tag sets rot with every new page); validate on ship and quarterly per the checklist — a crawler's hreflang report for reciprocity and target integrity, Search Console's international targeting signals for what Google actually parsed; and treat every new market as a cluster-wide edit — adding de-DE means every existing sibling's set grows by one entry, which is exactly the maintenance the sitemap method centralises.
Frequently asked questions
Do I need hreflang for one language in one country?
No — hreflang exists for versions; a single-version site has nothing to declare. It arrives with your second language or market, per the matrix planning.
Same language, different countries — is hreflang really necessary?
It's most necessary there: en-US vs en-GB pages are near-duplicates Google will otherwise fold or mis-serve (the cross-market duplication problem — hreflang is its primary solution). Different languages barely compete; same-language variants absolutely do.
How long until hreflang takes effect?
On recrawl of the cluster — weeks for the pattern to settle, visible as the right versions surfacing in each market's results and duplicate-flavoured reports draining. No movement after a couple of months means a broken implementation (the two laws, audited), not a waiting problem — hreflang that validates works, per the whole series' pattern; the ranking within each market then runs on the usual engines: localised content and market-local authority (our wiring).