International SEO & Hreflang: Implementation Guide
Hreflang errors are common, and they can send searchers to the wrong version of your site. Here's how to implement it correctly so each market sees the right page.
TL;DR
- Hreflang tells Google which language/region version to show users--without it, searchers may land on the wrong version
- Choose URL structure carefully: ccTLDs (.co.uk) give the strongest country signal but cost more; subdirectories (/uk/) are easiest
- Implement hreflang in HTML <head>, HTTP headers, or XML sitemap--pick one method and be consistent
- Always include self-referencing hreflang (page must reference itself) and x-default for unmatched regions
- Use valid language-region codes: en-us, fr-ca, en-gb (not en-uk)--hyphen, not underscore
- Test with Google Search Console and hreflang validator tools--errors are common
Why International SEO Matters
Many sites target one country and ignore the rest of the global internet, even when they could serve more markets.
- Many shoppers prefer content in their own language, and they often convert better on local-language pages
- Most of the world's internet users do not speak English as a first language, so one English site leaves audiences untouched
- Correct hreflang helps Google match the right version to the right user
- Wrong hreflang can show the wrong language, price, or currency, which costs conversions
Why It Pays:
When each market has a properly tagged version, Google can show every audience the right page--local language, currency, and shipping. It is one of the simplest ways to stop mismatched results from reaching the wrong audience.
What is Hreflang? (The Basics)
Hreflang is an HTML attribute that tells Google which language and geographical region your content targets.
The Problem It Solves:
- You have example.com/uk/ (UK English) and example.com/us/ (US English)
- Google sees two near-identical pages and thinks it's duplicate content
- Without hreflang: Google shows UK version to US users (wrong prices, shipping, etc.)
- With hreflang: Google shows US version to US users, UK version to UK users
Hreflang is NOT for translation widgets. It's for sites with separate URLs for different languages/regions.
Step 1: Choose Your URL Structure
Before implementing hreflang, decide how to structure international URLs. Each has pros and cons:
Option 1: Country Code Top-Level Domains (ccTLDs)
example.com (US)
example.co.uk (UK)
example.de (Germany)
example.fr (France)
Pros:
- ✅ Strongest geographical signal to Google
- ✅ Users often trust local domains more
- ✅ Can host each in local data centers (faster)
Cons:
- ❌ Expensive (register + renew multiple domains)
- ❌ Harder to manage (separate sites)
- ❌ Domain authority doesn't transfer between ccTLDs
Best for: Enterprise companies with localized teams and big budgets
Option 2: Subdomains with gTLD
example.com (US)
uk.example.com (UK)
de.example.com (Germany)
fr.example.com (France)
Pros:
- ✅ Easy to set up (one domain)
- ✅ Can host in different locations
- ✅ Clear geographical separation
Cons:
- ❌ Subdomains can be treated more like separate sites, so authority may not carry over as easily
- ❌ Requires geo-targeting in Google Search Console
- ❌ More complex SSL certificate management
Best for: Mid-size companies wanting geographical separation without ccTLD costs
Option 3: Subdirectories with gTLD (Recommended)
example.com (default)
example.com/uk/ (UK)
example.com/de/ (Germany)
example.com/fr/ (France)
Pros:
- ✅ Easiest to implement and maintain
- ✅ Authority is shared across all subdirectories of one domain
- ✅ One domain, one hosting account, one SSL certificate
- ✅ Clear structure for users and Google
Cons:
- ❌ Weaker geographical signal than ccTLDs
- ❌ All hosted in same location (unless using CDN)
Best for: Most businesses--a good balance of cost, simplicity, and SEO benefit
Recommendation:
Start with subdirectories (/uk/, /de/, /fr/). If you later expand to 10+ countries with localized teams, then consider ccTLDs. Don't overcomplicate early.
Step 2: Implement Hreflang Tags
You have three options for implementing hreflang. Pick one method only--mixing methods causes errors.
Method 1: HTML <head> Tags (Easiest)
Add hreflang tags to the <head> section of each page:
<!-- On example.com/product/ (default US English) -->
<link rel="alternate" hreflang="en-us" href="https://example.com/product/" />
<link rel="alternate" hreflang="en-gb" href="https://example.com/uk/product/" />
<link rel="alternate" hreflang="de-de" href="https://example.com/de/product/" />
<link rel="alternate" hreflang="fr-fr" href="https://example.com/fr/product/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/product/" />
<!-- CRITICAL: Each URL must include ALL hreflang tags, including self-reference -->
<!-- So example.com/uk/product/ must have the SAME 5 tags above -->
Key Rules:
- Every page must include all hreflang tags for all language/region versions
- Pages must include self-referencing hreflang (page must reference itself)
- Include x-default for users from unspecified regions
- Use absolute URLs (https://...), not relative (/product/)
- Hreflang must be bidirectional (if page A links to page B, page B must link to page A)
Method 2: HTTP Headers (For Non-HTML Files)
Use HTTP headers for PDFs, images, or other non-HTML content:
Link: <https://example.com/product.pdf>; rel="alternate"; hreflang="en-us",
<https://example.com/uk/product.pdf>; rel="alternate"; hreflang="en-gb",
<https://example.com/de/product.pdf>; rel="alternate"; hreflang="de-de",
<https://example.com/product.pdf>; rel="alternate"; hreflang="x-default"
Method 3: XML Sitemap (For Large Sites)
For large sites, managing HTML hreflang tags page by page becomes impractical. Use an XML sitemap instead:
<?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/product/</loc>
<xhtml:link rel="alternate" hreflang="en-us" href="https://example.com/product/" />
<xhtml:link rel="alternate" hreflang="en-gb" href="https://example.com/uk/product/" />
<xhtml:link rel="alternate" hreflang="de-de" href="https://example.com/de/product/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/product/" />
</url>
<url>
<loc>https://example.com/uk/product/</loc>
<xhtml:link rel="alternate" hreflang="en-us" href="https://example.com/product/" />
<xhtml:link rel="alternate" hreflang="en-gb" href="https://example.com/uk/product/" />
<xhtml:link rel="alternate" hreflang="de-de" href="https://example.com/de/product/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/product/" />
</url>
</urlset>
Step 3: Use Correct Language and Region Codes
Hreflang uses ISO 639-1 language codes and ISO 3166-1 Alpha 2 region codes. Codes are case-insensitive, but the format matters.
❌ Common Errors:
- • en-uk (wrong--the ISO code for the United Kingdom is gb)
- • us-en (wrong--language comes first, then region)
- • en_us (wrong--must use hyphen, not underscore)
- • english-us (wrong--must use ISO codes)
✅ Correct Format:
- • en-us (US English)
- • en-gb (UK English)
- • en-ca (Canadian English)
- • en-au (Australian English)
- • fr-fr (French - France)
- • fr-ca (French - Canada)
- • de-de (German - Germany)
- • de-at (German - Austria)
- • es-es (Spanish - Spain)
- • es-mx (Spanish - Mexico)
- • pt-br (Portuguese - Brazil)
- • pt-pt (Portuguese - Portugal)
Language-only vs. Language-Region:
hreflang="en"targets all English speakers globally (not recommended--too broad)hreflang="en-us"targets English speakers in the US (recommended)- Always use language-region codes unless you have one version for all speakers of that language
Step 4: Implement x-default for Unmatched Regions
x-default tells Google which version to show users from regions you don't target.
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
Example Scenario:
- You have versions for en-us, en-gb, fr-fr, de-de
- A user from Australia (en-au) visits--no matching hreflang
- Google shows the x-default version (usually your primary market)
Best Practice:
Set x-default to your primary market (en-us for most US companies). This ensures users from unspecified regions see your main site, not a random localized version.
The 7 Most Common Hreflang Mistakes
1. Missing Self-Referencing Hreflang
Error: Page doesn't include hreflang tag pointing to itself.
Impact: Google may ignore the hreflang annotations on the page.
Fix: Every page must reference itself. If example.com/uk/ has hreflang tags, one must be hreflang="en-gb" href="https://example.com/uk/"
2. Non-Bidirectional Hreflang
Error: Page A links to Page B, but Page B doesn't link back to Page A.
Impact: Google needs confirmation from both pages, so it may ignore the hreflang.
Fix: If /us/product/ has hreflang="en-gb" href="/uk/product/", then /uk/product/ MUST have hreflang="en-us" href="/us/product/"
3. Wrong Language/Region Code Format
Error: Using en-uk instead of en-gb, or en_us instead of en-us.
Impact: Google doesn't recognize the code, ignores hreflang.
Fix: Language code first, then region code, joined by a hyphen: en-us, fr-ca, de-de
4. Hreflang Points to Redirected URLs
Error: Hreflang tag points to example.com/uk, which redirects to example.com/uk/
Impact: Redirected URLs weaken hreflang signals, because Google wants the final indexable URL.
Fix: Always use final destination URLs in hreflang tags (including trailing slashes if needed)
5. Relative URLs in Hreflang
Error: Using href="/uk/product/" instead of href="https://example.com/uk/product/"
Impact: Google can't determine the correct URL, ignores hreflang.
Fix: Always use absolute URLs with protocol (https://)
6. Hreflang on Canonicalized Pages
Error: Page A has canonical tag pointing to Page B, but hreflang on Page A.
Impact: Google indexes Page B, ignores hreflang from Page A.
Fix: Put hreflang tags on the canonical version only
7. Missing x-default
Error: No x-default tag for unmatched regions.
Impact: Users from untargeted regions may see a version that does not fit them.
Fix: Always include <link rel="alternate" hreflang="x-default" href="..." />
Testing and Validation Tools
Hreflang errors are easy to make. Test thoroughly before launching:
1. Google Search Console (Free, Official)
- • Use the URL Inspection tool to confirm the page Google indexed is the one you expect
- • Check the rendered HTML for the hreflang tags you added
- • Google's legacy International Targeting report has been retired, so rely on a crawler or validator for hreflang errors
- • Google can take weeks to fully process hreflang changes
2. Hreflang Tags Testing Tool by Merkle (Free)
- • URL: technicalseo.com/tools/hreflang/
- • Paste any URL, tool fetches and validates all hreflang tags
- • Shows bidirectional errors, missing self-references, etc.
- • Visual diagram of hreflang relationships
3. Screaming Frog SEO Spider
- • Crawl entire site, export all hreflang implementations
- • Identifies missing return links, orphaned tags, canonical conflicts
- • Useful for large sites, where manual checks do not scale
4. Ahrefs Site Audit
- • Automated hreflang error detection
- • Shows impact (how many URLs affected)
- • Includes internationalization report
Beyond Hreflang: Complete International SEO
Hreflang is critical, but it's only one part of international SEO success:
1. Content Localization (Not Just Translation)
- Adapt content for cultural context (UK "trainers" vs. US "sneakers")
- Use local examples, case studies, testimonials
- Show prices in local currency
- Display proper date/time formats (DD/MM/YYYY vs. MM/DD/YYYY)
2. International Keyword Research
- Don't translate keywords literally--research each market separately
- US "attorney" = UK "solicitor" = different search intent
- Use Google Keyword Planner with location targeting
3. Geo-Targeting in Google Search Console
- For subdirectories and subdomains, set target country in GSC
- Settings → International Targeting → Country
- Not needed for ccTLDs (Google knows .co.uk = UK)
4. Local Backlinks
- Build links from local domains (.co.uk links for UK version)
- Partner with local businesses, directories, press
5. Hosting and CDN
- Use a CDN (Cloudflare, Fastly) to serve content from local servers
- Page speed matters for users and Core Web Vitals--visitors in Germany shouldn't wait on US servers
How Seology Helps With International SEO
Manually implementing and maintaining hreflang gets hard fast: every page needs a complete, reciprocal set of tags for every language version, and a single error can invalidate a set.
Seology audits it for you:
- Maps your URL structure (subdirectories, subdomains, ccTLDs)
- Flags missing return tags and self-references
- Validates language/region codes (catches en-uk and en_us errors early)
- Checks for x-default and hreflang pointing at redirected or canonicalized URLs
- Delivers fixes as pull requests on GitHub-connected sites
- Re-audits as new pages are added so new errors get caught early
Final Verdict
If you're targeting multiple countries or languages, hreflang is the standard way to tell Google which version belongs to which audience.
Choose a URL structure you can maintain (subdirectories for most sites), implement hreflang with one method, and test thoroughly.
Hreflang errors are easy to make by hand. You can audit it manually, or let Seology find the errors for you.
Audit Your Hreflang
Seology audits hreflang across your international pages and flags broken tags, so errors get fixed early.
Try Seology FreeRelated Posts:
Tags: #InternationalSEO #Hreflang #GlobalSEO #MultilingualSEO #LocalizationSEO
Part of the Technical SEO Guide
Put this into practice with the Seology SEO automation.
Related articles
Lazy Loading SEO: 15 Tactics to Speed Up Sites Without Losing Rankings
15 tactics for SEO-safe lazy loading: native browser lazy loading, Intersection Observer, and patterns that keep content crawlable.
International SEO for Shopify: Multilingual & Hreflang
75% of users prefer to buy in their native language, and 40% won't buy from non-localized sites. Master Shopify Markets, hreflang tags, and international SEO.
JavaScript SEO: The Complete Guide for React, Vue & Angular
JavaScript frameworks break SEO. This guide shows how to make React, Vue, and Angular sites rank perfectly on Google.
Footer Optimization: 17 Tactics to Turn Your Footer Into an SEO Asset
How to organize footer links, add trust signals, handle mobile footers and avoid spammy patterns. 17 footer optimization tactics.
Site Architecture: SEO Best Practices for Crawlability
A practical guide to structuring your site so search engines can crawl and index your pages, with internal linking and URL tips.
301 Redirects: Complete Guide to Preserving SEO Value
Bad redirects destroy 15-30% of your rankings. This guide shows how to implement 301 redirects without losing SEO value.