How to Do International SEO with Hreflang

TL;DR

Hreflang tags tell Google which language or regional version of a page to show users in different countries or language settings. Without hreflang, Google guesses which version to show, often showing US English pages to UK searchers or Spanish pages to Mexican searchers when region-specific versions exist. Common mistakes include missing return tags, wrong country/language codes, and inconsistent implementation. Hreflang is technically complex, and errors are common. But for sites with international audiences or multiple language versions, proper implementation prevents duplicate content issues and ensures the right users see the right content.


Do This Today (3 Quick Checks)

  1. Check for hreflang errors in GSC: Search Console → International Targeting report or URL Inspection shows hreflang errors. “No return tag” and “unknown language code” are most common.
  1. Validate your implementation: Use a tool like Ahrefs Site Audit, Screaming Frog, or hreflang.org validator to scan for errors across your site.
  1. Search from target country: Use Google’s country-specific domain (google.co.uk, google.de) and search your target keywords. Is the correct regional version appearing?

Hreflang Testing and Validation Tools

Free validators:

  • Hreflang Tags Testing Tool: technicalseo.com/tools/hreflang/ (check individual URLs)
  • Aleyda Solis Hreflang Generator: aleydasolis.com/english/international-seo-tools/hreflang-tags-generator/ (create correct tags)
  • Merkle Hreflang Tag Testing: technicalseo.com/tools/hreflang/ (validate implementation)

Crawl-based audits:

  • Screaming Frog: Crawl site, check hreflang tab for errors, missing return tags, conflicts
  • Sitebulb: Visual hreflang cluster mapping, error identification
  • Ahrefs Site Audit: Hreflang-specific checks in technical audit

What to check:

  • [ ] All hreflang tags use lowercase language/country codes
  • [ ] Every page includes self-referencing hreflang
  • [ ] Return tags exist on all referenced pages
  • [ ] x-default is present
  • [ ] No conflicts between hreflang and canonical
  • [ ] All URLs are absolute (include https://)
  • [ ] No mixed http/https protocols

Google Search Console International Targeting

For each regional property:

  1. Add separate properties: Each domain/subdomain needs its own GSC property
  • example.com
  • example.co.uk
  • example.de
  1. Set geographic target (for gTLDs):
  • GSC → Settings → International Targeting
  • ccTLDs (.co.uk, .de) auto-target their countries
  • gTLDs (.com) need manual targeting if targeting specific country
  • Subdirectories can’t be targeted separately in GSC
  1. Monitor hreflang errors:
  • GSC → URL Inspection → Check hreflang status
  • Look for “alternate page with proper canonical tag”
  • Errors indicate implementation problems
  1. Submit sitemaps for each property:
  • Each regional site should have its own sitemap
  • Or use one sitemap with full hreflang annotations

Domain Structure Decision Framework

Structure Best For SEO Pros SEO Cons
<strong>ccTLDs</strong> (.de, .co.uk) Strong country commitment, local trust important Clearest geo signal, local user trust Split domain authority, more management
<strong>Subdirectories</strong> (/de/, /uk/) Most businesses, consolidated authority preferred Single domain authority, easier management Weaker geo signal than ccTLD
<strong>Subdomains</strong> (de.example.com) Franchises, semi-independent regions Clearer separation than subdirectory Split authority like ccTLDs

Decision questions:

  1. Do you need local trust signals? (Banking, legal = ccTLD helps)
  2. Do you have resources to manage multiple domains?
  3. Is domain authority consolidation important?
  4. Are regions truly independent or centrally managed?

Most businesses: Subdirectories offer the best balance of geo-targeting and authority consolidation.


Hreflang Basics

What hreflang does:

  • Tells Google which page version to show users based on language and/or country
  • Prevents duplicate content issues across regional variations
  • Ensures French users see French pages, German users see German pages

What hreflang doesn’t do:

  • Automatically translate content
  • Guarantee ranking in other countries
  • Replace country-specific SEO strategy

Format:

<link rel="alternate" hreflang="en-us" href="https://example.com/page/" />
<link rel="alternate" hreflang="en-gb" href="https://example.co.uk/page/" />
<link rel="alternate" hreflang="de" href="https://example.de/page/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page/" />

Code structure:

  • Language only: hreflang="de" (German speakers anywhere)
  • Language + country: hreflang="en-gb" (English speakers in UK)
  • x-default: Fallback for users not matching any specified version

Common Hreflang Configurations

Scenario 1: Same language, different countries
US English, UK English, Australian English

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

Scenario 2: Different languages, same country
US English, US Spanish

<link rel="alternate" hreflang="en-us" href="https://example.com/page/" />
<link rel="alternate" hreflang="es-us" href="https://example.com/es/page/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page/" />

Scenario 3: Multiple languages, multiple countries
Full international site

<link rel="alternate" hreflang="en-us" href="https://example.com/page/" />
<link rel="alternate" hreflang="en-gb" href="https://example.co.uk/page/" />
<link rel="alternate" hreflang="de-de" href="https://example.de/page/" />
<link rel="alternate" hreflang="de-at" href="https://example.at/page/" />
<link rel="alternate" hreflang="fr" href="https://example.fr/page/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page/" />

The Conversation

Sandra, e-commerce director at a fashion retailer, sells to US, UK, Canada, and Germany, separate sites for each market but hreflang never implemented properly, seeing duplicate content issues and wrong versions ranking, intermediate technical knowledge: We have four sites: .com for US, .co.uk for UK, .ca for Canada, and .de for Germany. Prices are in local currency, some products differ by market, but most content is similar. Google keeps showing our US site to UK searchers, and our UK site sometimes outranks the US version for American queries. We tried hreflang but something’s not working.

SDC SEO Brain: Hreflang implementation issues are extremely common. The specification requires perfect bidirectional confirmation, and any inconsistency breaks the system. Let’s diagnose. Where did you implement hreflang? In the HTML head, HTTP headers, or sitemap?

Sandra: In the HTML head of each page.

SDC SEO Brain: That’s fine. Show me what the hreflang tags look like on your US homepage.

Sandra: Let me check the source… We have:

<link rel="alternate" hreflang="en-US" href="https://example.com/" />
<link rel="alternate" hreflang="en-GB" href="https://example.co.uk/" />
<link rel="alternate" hreflang="en-CA" href="https://example.ca/" />
<link rel="alternate" hreflang="de-DE" href="https://example.de/" />

SDC SEO Brain: I see two immediate problems. First, you’re using uppercase country codes “US” and “GB”. Hreflang requires lowercase: “en-us” and “en-gb”. This might be causing Google to not recognize the tags at all.

Sandra: That’s an easy fix. What’s the second problem?

SDC SEO Brain: You’re missing x-default. The x-default tag tells Google what to show users who don’t match any specified language/region. Without it, Google has to guess for users in countries you haven’t specified, like Australia or non-German European countries.

Sandra: What should x-default point to?

SDC SEO Brain: Usually your primary site, often the US English version, or whichever is your default/fallback. Add:

<link rel="alternate" hreflang="x-default" href="https://example.com/" />

Sandra: Okay. What else should we check?

SDC SEO Brain: The critical requirement is return tags. Every page listed in hreflang on one site must include hreflang tags pointing back to all variations, including itself. Does your UK homepage include identical hreflang tags pointing to all four versions plus itself?

Sandra: Let me check the UK site… It has hreflang tags but they’re different. It only points to the UK and US versions, not Canada and Germany.

SDC SEO Brain: That’s a major problem. Hreflang requires complete bidirectional confirmation. If Page A says “my German version is Page B” but Page B doesn’t say “my US version is Page A,” Google ignores the tag. All four sites need identical hreflang tag sets on corresponding pages, each pointing to all four versions.

Sandra: So every page on every site needs to list all four versions?

SDC SEO Brain: Every page that has versions across markets, yes. If your US homepage has UK, CA, and DE equivalents, all four homepages need identical hreflang blocks listing all four URLs. If a product only exists on US and UK (not CA or DE), then only those two pages need hreflang for that product, but they must both include tags pointing to each other.

Sandra: That sounds like a maintenance nightmare with thousands of products.

SDC SEO Brain: It is. That’s why many large sites use XML sitemap implementation instead of HTML head tags. With sitemap implementation, you manage hreflang in one place rather than on every page. Have you considered that approach?

Sandra: How does sitemap hreflang work?

SDC SEO Brain: Instead of tags in HTML, you add hreflang annotations to your XML sitemap:

<url>
  <loc>https://example.com/product-1/</loc>
  <xhtml:link rel="alternate" hreflang="en-us" href="https://example.com/product-1/" />
  <xhtml:link rel="alternate" hreflang="en-gb" href="https://example.co.uk/product-1/" />
  <xhtml:link rel="alternate" hreflang="en-ca" href="https://example.ca/product-1/" />
  <xhtml:link rel="alternate" hreflang="de-de" href="https://example.de/product-1/" />
  <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/product-1/" />
</url>

This centralizes management and is easier to generate programmatically.

Sandra: Do we need sitemaps for all four sites with matching hreflang?

SDC SEO Brain: Each sitemap only needs to include its own URLs with the full hreflang annotation set. Google reads all sitemaps and matches them up. But you could also create one master sitemap containing all URLs from all sites with full annotations. Either works.

Sandra: Let’s say we fix the implementation. How long until Google reflects the changes?

SDC SEO Brain: Weeks to months, depending on crawl frequency. Google needs to recrawl all affected pages, process the hreflang annotations, and update its understanding of the relationships. For a large e-commerce site, full processing might take 2-3 months. You can accelerate by submitting updated sitemaps in Search Console for each property.

Sandra: We have Search Console set up for each domain. What should we check there?

SDC SEO Brain: In each Search Console property, look for the International Targeting report if available, and use URL Inspection on key pages. Check for hreflang errors like “no return tag” or “unknown language code.” Also verify that each property has the correct country targeting set if you’re using ccTLDs like .co.uk and .de, which usually auto-target, but .com/.ca might need manual setting.

Sandra: What about products that only exist in some markets? We have US-only products.

SDC SEO Brain: US-only products shouldn’t have hreflang at all, since there are no alternate versions. But make sure the US-only product page doesn’t appear in UK/CA/DE navigation or internal links, which could create confusion. If you must link to it from other regions, consider adding hreflang=”en-us” pointing to itself plus x-default to indicate it’s the only version.

Sandra: What about price differences? Same product, same URL structure, but prices differ.

SDC SEO Brain: That’s exactly what hreflang is for. Same product page content, localized for each market (currency, pricing, availability), each with hreflang telling Google which version serves which audience. Users see their local price, Google shows the appropriate version in search results.

Sandra: Any other common mistakes we should avoid?

SDC SEO Brain: Several:

Canonicals conflicting with hreflang: If your UK page has a canonical pointing to the US page, that conflicts with hreflang. Each regional page should self-canonicalize.

Mixed protocols: All hreflang URLs must use the same protocol (https). Mixing http and https causes mismatches.

Trailing slash inconsistency: /page/ and /page are different URLs. Be consistent across all hreflang tags.

Wrong language codes: “en-UK” is wrong (UK isn’t an ISO code). It’s “en-gb” (Great Britain). Use ISO 639-1 for language, ISO 3166-1 Alpha 2 for country.

Not including self: Each page must include an hreflang tag pointing to itself, not just alternates.


FAQ

Q: What’s the difference between hreflang and canonical tags?
A: Different purposes. Canonical tags tell Google which URL is the “primary” version when duplicate content exists. Hreflang tells Google which regional/language version to show different users. They work together: each regional page should self-canonicalize while hreflang indicates alternate regional versions.

Q: Do I need hreflang for English US vs English UK?
A: Yes, if you have separate pages for each. Even though both are English, different spelling, pricing, and terminology make them distinct versions. Without hreflang, Google might show the wrong version or see them as duplicates.

Q: Can I use hreflang for different languages on the same domain?
A: Yes. Subdirectory structures like example.com/en/, example.com/de/, example.com/fr/ work fine with hreflang. The tags point to different paths on the same domain.

Q: Why isn’t Google showing my regional version to users in that country?
A: Common causes: hreflang errors (missing return tags, wrong codes), the regional page has lower quality/authority than other versions, or geo-targeting settings conflict with hreflang. Check Search Console for errors and validate implementation with a tool.

Q: Should I use country code top-level domains (.de, .co.uk) or subdirectories?
A: Both work. ccTLDs have strongest geo-signal but require separate domain management. Subdirectories (example.com/de/) consolidate authority on one domain. Subdomains (de.example.com) are middle ground. Choice depends on business needs, not just SEO.


Summary

Hreflang tells Google which page version to show users based on language and country. Without it, Google guesses, often incorrectly. Users see wrong currencies, wrong languages, or wrong regional content.

Implementation requires perfect bidirectional confirmation. If Page A says Page B is the German version, Page B must say Page A is the US version. Missing return tags cause hreflang to fail silently.

Common errors that break hreflang:

  • Wrong case (en-US should be en-us)
  • Missing x-default tag
  • Missing return tags on alternate versions
  • Wrong language/country codes
  • Canonical tags pointing to a different version
  • Mixed http/https protocols
  • Trailing slash inconsistency

Implementation options:

  • HTML head: <link rel="alternate"> tags on each page
  • XML sitemap: Centralized annotations, easier for large sites
  • HTTP headers: For non-HTML files like PDFs

Each regional page should self-canonicalize. Don’t point UK canonical to US. Each regional version is the canonical for its market.

Use correct ISO codes:

  • Language: ISO 639-1 (en, de, fr, es)
  • Country: ISO 3166-1 Alpha 2 (us, gb, de, fr)
  • Combined: language-country (en-us, en-gb, de-de)

Validate before and after implementation. Tools like Screaming Frog, Ahrefs, and hreflang.org validator catch errors that cause silent failures. Check Search Console for international targeting errors.

Changes take time to process. Expect weeks to months for Google to fully recrawl and update regional targeting, especially for large sites.


Sources