Skip to main content
All fixes

SEO, schema, meta tags

Fix Missing Hreflang: Add Language and Region Annotations

Multilingual sites without hreflang let Google pick which variant to surface, often wrong. Add hreflang annotations on every translated or localized page.

What's happening

When a site has multiple language or regional variants of the same content — /en-US/page, /es-ES/page, /fr-FR/page — Google needs hreflang annotations to know which variant to show to which audience. Without hreflang, Google treats the variants as near-duplicates and picks one canonical to rank globally, usually the variant with the most internal links and external authority.

The result is that localized content gets less reach. A French user searching in French may be served the English version because /en-US/page has more links and Google has no signal to prefer the French variant. Conversion drops on the right audience and bounce climbs because the language is wrong.

Hreflang is also the mechanism for region-targeting — distinguishing en-US from en-GB, es-ES from es-MX. Without it, Google may serve the wrong currency, the wrong product availability, or the wrong shipping policy in the SERP snippet, leading to checkout abandonment.

Why it matters

Wrong-language traffic to localized pages. Localized investment is wasted because the right audience never sees the translated version. Conversion rates on /es-ES/page can run 50-80% below /en-US/page solely because of audience mismatch.

Duplicate-content consolidation. Without hreflang, Google treats variants as duplicates and consolidates ranking signals to one canonical. The non-canonical variants drop out of the index, so even users who click through to /es-ES/page in social or email may land on a deindexed URL.

Lost regional CTR. en-GB users seeing en-US prices in dollars and US-only product availability click through less often. Even small regional misalignments compound across an entire international catalog.

Common causes

  • Site has translations but no hreflang declarations.
  • Translations exist on subdomains (en.example.com, es.example.com) but each subdomain treats itself as the only canonical.
  • Translations exist on country TLDs (.com,.co.uk,.es) without cross-references.
  • Translations are gated behind detection (auto-redirect by IP) which hides them from Googlebot.
  • Hreflang only declared on landing pages, not on inner content pages.
  • CMS does not have a translation linking model (each language treated as a separate site).

Detect this on your site

Run a quick scan with the SEO Auditor. The tool surfaces this exact issue with the records and context needed to apply the fix below.

Open SEO Auditor

How to fix it

  1. 1

    Inventory all language and regional variants

    Map every page that has a translation or localization to its variants. The simplest model is one canonical URL per language-region pair: /en-US/page, /es-ES/page, /fr-FR/page. Subdomain or country-TLD variants follow the same logic.

  2. 2

    Add hreflang to every variant

    Each variant page needs a for itself and every other variant. The simplest correct rule: declare ALL variants on every page in the set. Reciprocation is mandatory.

  3. 3

    Use ISO 639-1 + ISO 3166-1 codes

    Format is language-region: en-US, en-GB, es-ES, es-MX, fr-FR, fr-CA, de-DE, de-AT, pt-BR, pt-PT, zh-CN, zh-TW. Region is optional for language-only targeting (en alone targets all English-speaking regions), but explicit region codes give better targeting.

  4. 4

    Add x-default for fallback

    tells Google what to show users who do not match any declared language-region. Common targets: the English version, or a generic /en/ or /global/ landing page.

  5. 5

    Pick a declaration mechanism that scales

    Three options: tags, HTTP Link header, or XML sitemap. Sitemap is the only mechanism that scales gracefully past 50 language variants without bloating every page's HTML. Pick one — mixing them causes conflicts.

  6. 6

    Verify in Search Console

    Search Console > Legacy Tools > International Targeting > Language report shows detected hreflang per URL. Submit each language version's sitemap separately for cleaner reporting. Fix any 'No return tags' or '404' errors that appear.

Example

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/en-US/blog/article</loc>
    <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/en-US/blog/article" />
    <xhtml:link rel="alternate" hreflang="es-ES" href="https://example.com/es-ES/blog/article" />
    <xhtml:link rel="alternate" hreflang="fr-FR" href="https://example.com/fr-FR/blog/article" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en-US/blog/article" />
  </url>
</urlset>

Hreflang declared in XML sitemap for clean scaling

Frequently asked

No hreflang is only needed when you have multiple language or regional variants of the same content. If your site is English-only and globally targeted hreflang adds no value.

Yes. Each variant should self-canonicalize and declare hreflang for all variants. If /es-ES/page canonicalizes to /en-US/page hreflang signals are ignored — Google treats /en-US as the only canonical. Use canonicalization within a language-region not across.

x-default specifies the fallback URL for users not in any of your declared language-region pairs. Usually the English version or a global landing page. It is recommended for any multilingual setup to give Google a default target.

Related fixes