International SEO and hreflang

Country and language targeting, correct hreflang syntax and return links, choosing between ccTLD, subfolder and subdomain, and the failures that silently disable the whole cluster.

Language and country codes

hreflang uses ISO 639-1 for language and optional ISO 3166-1 alpha-2 for region. It tells an engine which version of a page to serve to which audience; it does not translate anything and it is not a substitute for localised content.

<link rel="alternate" hreflang="en" href="https://example.com/guides/dns/ttl" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/guides/dns/ttl" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/guides/dns/ttl" />
<link rel="alternate" hreflang="de-DE" href="https://example.com/de/guides/dns/ttl" />
<link rel="alternate" hreflang="x-default" href="https://example.com/guides/dns/ttl" />
  • Every page in the cluster lists every page in the cluster, including itself. Missing return links is the most common reason hreflang is ignored entirely.
  • x-default belongs on the version served when no other match exists - usually the language-selector page or the global English page.
  • Use en for an undifferentiated English page and en-GB or en-US for region variants. Do not mix en and en-US for the same page.
  • Language and region codes go in the URL only if you commit to it: a /en-gb/ path that later becomes /uk/ costs a redirect on every page.

Choosing a structure

OptionExampleProsCons
ccTLDexample.deStrongest local signal, unambiguousOne domain to build authority for, per country cost
Subfolderexample.com/de/All authority accumulates on one domainShared hosting and infra decisions across markets
Subdomainde.example.comIndependent deployment and teamsAuthority is split; needs its own reputation
Parametersexample.com?lang=deTrivial to implementWeak signal, messy URLs, hard to manage
Recommendation order for most teams
  1. subfolder        - simplest to run, one domain, one certificate, one CDN
  2. ccTLD            - when local trust or legal presence demands it
  3. subdomain        - only when markets genuinely need separate infrastructure
  never: parameters   - the effort saved is repaid many times over

Whatever you choose, the localised page must be genuinely localised. Machine-translated pages with prices in the wrong currency, an unchanged phone number or untranslated navigation are what turn a multi-language site into a set of near-duplicate pages.

The failures that disable it all

  1. Self-reference missing. A page that lists the other versions but not itself invalidates the cluster.
  2. Non-return links. A to B, but B does not link to A - the relationship is dropped.
  3. Wrong codes. en-UK is not a valid region; the correct code is en-GB.
  4. Conflicting signals. A canonical pointing to the x-default version from a localised page tells an engine to ignore the localisation.
  5. URLs that redirect. hreflang must point at the final URL, not a redirect source.
  6. Both headers and HTML carrying different sets. Use one mechanism, consistently.
CheckHow to verifyExpected
Self referenceSearch the page source for its own URLPresent, with the right code
ReciprocityPick any pair and confirm both directionsMutual links in both files
Valid codesValidate against the ISO listsNo invented regions
Canonical alignmentCompare canonical and hreflang setsCanonical points within the same locale
Final URLsCurl each hreflang URL200, no redirect
⚠️
If three pages point at an English page and the English page does not list them back, an engine resolves the conflict by choosing one version for all of them. The result looks like a duplicate-content problem but the cause is an incomplete hreflang cluster - always check reciprocity before editing content.

FAQ

Do I need hreflang if I only have one language?
No. hreflang exists to describe relationships between language and region variants. A single-language site gains nothing from it and can create confusing signals if it is added carelessly.
Does hreflang replace localised content?
No. It routes the right version to the right user; the version itself still has to be worth serving. Translated without localising is a common and expensive mistake.

Site architecture, URLs and internal linking Site migrations, redirects and recovery

Last refreshed 2026-09-18.