Hreflang and International SEO: Complete Implementation Guide

By Kavi, SEO Consultant · Last updated: 3 September 2026

Hreflang annotations tell Google which language and regional version of a page to show to which users. They are a signal for selecting between alternates, not a ranking factor, and they must be reciprocal: every page in a set must reference every other page including itself. A one-way hreflang reference is ignored.

What is hreflang?

Hreflang is an annotation that connects pages serving equivalent content in different languages or for different regions. It does not make a page rank; it helps Google show the right version of a page that would already rank.

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

Hreflang is the most error-prone annotation in technical SEO. The rules are strict, the failures are silent, and a broken implementation is not merely useless, it can cause Google to show the wrong regional page to your customers.

Quick facts

Item Detail
Purpose Selects between alternates; does not boost rankings
Reciprocity Required. Every page references every other, including itself.
Language codes ISO 639-1, two letters, e.g. en, fr, hi
Region codes ISO 3166-1 Alpha-2, e.g. GB, US, IN. Optional.
Order Language first, then region: en-gb, never gb-en
x-default Fallback for unmatched users. Strongly recommended.
Implementation options HTML head, HTTP header, or XML sitemap
Used by Google and Yandex. Bing uses content-language instead.

When do you need hreflang?

You need it when you have substantially equivalent content at more than one URL for different audiences:

  • Same language, different regions: English for the UK, US, and India. This is the most common case and the one most often neglected.
  • Different languages, same content: an English and a Hindi version of the same page.
  • Regional pricing, currency, or legal terms on otherwise identical pages.

You do not need it when you have one site for one audience, when pages differ substantively in content rather than in language or region, or when you have only translated part of a page.

Expert tip: the most valuable use of hreflang is the least glamorous one. Same-language regional variants, en-gb against en-us, look like duplicate content to Google without it. Adding hreflang here prevents your UK page competing with your US page and stops Google picking the wrong one for each market. That is a real commercial problem, and it is entirely solvable with correct annotations.

How hreflang works

  1. Google discovers the annotations on each page in the set.
  2. It verifies reciprocity. If page A points to B but B does not point back to A, the annotation is discarded.
  3. It groups the confirmed set as alternates of one another.
  4. At query time it selects the version matching the user’s language setting and location.
  5. If no version matches, it uses the x-default page.

Note step two carefully. Reciprocity is not a best practice, it is a validation requirement, and one missing back-reference silently invalidates that pairing.

Implementation methods

Method Where Best for Drawback
HTML link elements In <head> Small to medium sites Page weight grows with the number of alternates
HTTP Link header Response headers PDFs and non-HTML files Harder to inspect and debug
XML sitemap Sitemap file Large sites, many alternates Verbose; must stay in sync with the site

Pick exactly one method and use it consistently. Mixing methods is a frequent source of contradictory annotations. For large sites, the sitemap approach keeps page weight down and centralises the mapping; see the XML sitemap guide.

How to implement hreflang, step by step

Step 1: Map your alternates

Build a spreadsheet: one row per piece of content, one column per language or region variant, with the exact canonical URL in each cell. Blank cells mean that variant does not exist and must not be referenced.

Step 2: Choose your codes correctly

Language is ISO 639-1, region is ISO 3166-1 Alpha-2, and language comes first. Region alone is invalid: hreflang="in" means the Indonesian language, not India. Use hi-in or en-in.

Step 3: Include a self-reference

Every page in the set must reference itself as well as the others. Omitting the self-reference is the single most common implementation error.

Step 4: Add x-default

Point it at your global or language-selector page. It is the fallback for every user whose language and region match nothing in your set.

Step 5: Point at canonical URLs only

Use absolute URLs. Every hreflang target must return 200, be indexable, and be self-canonical. An hreflang pointing at a redirect or a page that canonicalises elsewhere conflicts with itself and is discarded.

Step 6: Validate

Crawl the site with hreflang extraction enabled and check for missing return links, invalid codes, and non-200 targets. Machine validation is essential here; visual inspection of a large set will not catch reciprocity errors.

Complete example

Three variants, correctly cross-referenced. Each of the three pages carries all four lines, identically:

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

URL structure options for international sites

Structure Example Geo-targeting strength Cost and effort
ccTLD example.in Strongest Highest: separate domains and authority
Subdirectory example.com/in/ Good, set in Search Console Lowest; keeps authority consolidated
Subdomain in.example.com Good, set in Search Console Medium; signals partly separated
Parameter example.com?loc=in Not recommended Low effort, poor results

For most businesses, subdirectories are the right answer. They keep link authority on one domain, they are cheap to run, and they can still be geo-targeted. ccTLDs make sense when local trust genuinely drives conversion or when legal requirements demand it.

Common hreflang mistakes

Mistake Consequence Fix
Missing return links The whole pairing is ignored Every page references every other
No self-reference Set treated as invalid Include the page itself
Region code used alone Wrong language targeted, or invalid Always language, optionally plus region
Reversed order (gb-en) Invalid, ignored Language first
Relative URLs Frequently misresolved Absolute URLs
hreflang pointing at a redirect Annotation discarded Point at the final URL
hreflang conflicting with canonical Contradictory signals Each page self-canonical
hreflang on noindexed pages Ignored entirely Targets must be indexable
Invalid codes such as en-uk Ignored (the code is GB, not UK) Use ISO 3166-1: gb
Missing x-default Unmatched users get an arbitrary version Add a fallback
Mixing HTML and sitemap methods Conflicting annotations Choose one method
Auto-redirecting by IP Blocks Googlebot from seeing other versions Offer a banner or selector instead

Decision guide

  • One country, one language: you do not need hreflang at all.
  • Same language, several countries: hreflang is essential to prevent self-competition.
  • Several languages, one country: hreflang by language code alone, no region needed.
  • Partially translated site: annotate only the pages that genuinely have equivalents.
  • Under ten pages per language: HTML head implementation.
  • Thousands of pages: sitemap implementation.

Hreflang checklist

  • Every page in a set references every other page, including itself
  • x-default present and pointing at a sensible fallback
  • Language codes are valid ISO 639-1
  • Region codes are valid ISO 3166-1 Alpha-2, and gb is used rather than uk
  • Order is language then region
  • All URLs absolute
  • All targets return 200, are indexable, and are self-canonical
  • No hreflang target is a redirect
  • One implementation method only
  • No automatic IP-based redirects
  • Geo-targeting set in Search Console for subdirectories or subdomains
  • Validated by a crawler, not by eye

Frequently asked questions

Does hreflang improve rankings?

No. It helps Google choose which of your existing pages to show to a given user. It resolves duplication between regional variants, which can prevent losses, but it does not create ranking gains on its own.

Is hreflang required if all my pages are in English?

Only if you have separate English pages for separate countries. One English site for a global audience needs nothing.

What happens if hreflang is wrong?

Google ignores the broken annotations and falls back to its own judgement. Users may then see the wrong regional version, which is a conversion problem rather than a ranking penalty.

Should I use en-uk?

No. The ISO 3166-1 code for the United Kingdom is GB, so the correct value is en-gb. en-uk is invalid and ignored.

Do I need x-default?

It is not mandatory but it is strongly recommended. Without it, users whose language and region match none of your variants get an arbitrary choice.

Does Bing use hreflang?

Bing has stated it relies primarily on the content-language meta tag rather than hreflang. If Bing matters to your market, implement both.

Should I auto-redirect users by their IP address?

No. Googlebot typically crawls from a limited set of locations, so IP redirection can prevent it from ever seeing your other versions. Suggest the local version with a banner and let the user choose.

Key takeaways

  • Hreflang selects between alternates; it is not a ranking factor.
  • Reciprocity is a validation requirement, not a nicety.
  • Always include a self-reference and an x-default.
  • Language first, region second; gb not uk.
  • Targets must be absolute, 200-status, indexable, and self-canonical.
  • Use one implementation method consistently.
  • Subdirectories are the right default structure for most international sites.

Conclusion

Hreflang rewards precision and punishes approximation. Build the mapping spreadsheet first, generate the annotations from it programmatically, and validate with a crawler rather than by inspection. If you only take one thing from this: same-language regional variants without hreflang are competing with each other, and that is the case worth fixing first.

Related articles

External references

Author

  • Portrait of Kavinder Singh, digital marketing and SEO practitioner

    Kavi (Kavinder Singh) is an SEO specialist and digital marketing consultant with hands-on experience in technical SEO, local SEO, content strategy, Google Analytics, Google Ads, Meta Ads, and AI-driven search. He also writes travel guides drawn from first-hand experience across Uttarakhand and the wider Indian Himalaya, including his home region around Munsiyari. Through DigiABC Compass he shares practical, tested strategies and honest travel notes to help readers improve their online visibility and plan better trips.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *