Skip to content

Set up hreflang for multilingual and multi-regional sites

Tell search engines which language or regional version of a page to show, with valid codes, self-references and reciprocal links.

Advanced 45 minutes By WebGrowthEngine team · Updated Oct 14, 2026

The problem

hreflang annotations use invalid codes, or a page does not include an entry for itself.

How to spot it

  • Visitors land on the wrong language version from search.
  • The audit lists pages with invalid codes or missing self-references.

Why it matters

hreflang helps search engines show the right version to each audience. Mistakes are common, and incorrect annotations are typically ignored.

What happens if you leave it

Visitors see a language they cannot read and leave.

How to fix it

  1. For each page, list every language or region version of it, including itself:

    <link rel="alternate" hreflang="en-gb" href="https://example.com/uk/pricing/">
    <link rel="alternate" hreflang="bn-bd" href="https://example.com/bd/pricing/">
    <link rel="alternate" hreflang="x-default" href="https://example.com/pricing/">
    
  2. Use ISO 639-1 language codes, optionally followed by an ISO 3166-1 region code (en, en-gb, bn-bd). uk is Ukrainian, not the United Kingdom; use en-gb.

  3. Make the annotations reciprocal: if page A lists B, page B must list A.

  4. Use absolute, canonical, live URLs.

  5. Add x-default for a language picker or fallback page.

Common mistakes

  • Pointing hreflang at redirected or noindex URLs.
  • Using country codes alone (hreflang="bd").
  • Different canonical and hreflang targets.

How to check the fix worked

View the source of each language version and confirm that all versions list each other and themselves. Re-run the audit to confirm.

References and further reading

Was this guide helpful?

Are you sure?