What it does, and the promise it doesn't make
You sell to India, the Gulf and the US, and you keep three versions of your pricing page because the currency and plan names differ. Without hreflang, Google picks one and shows it to everyone — usually the one with the most links, usually the US page. Your Bangalore buyer sees dollar pricing and bounces.
Hreflang fixes precisely that. It tells Google the three pages are regional alternates and which searcher belongs to which, and Google swaps in the right URL.
What it doesn't do catches people out: it won't improve rankings. If your /ae/ pages don't rank in the UAE, hreflang won't make them. It doesn't pool authority either — three regional pages are three pages, each earning links on its own. It's a labelling system that explains duplication rather than removing it.
And if you have one page, in one language, selling to everyone, you don't need hreflang. It's for sites with genuinely parallel versions, not for sites that would like more international traffic.
A working set for India, the Gulf and the US
Say a Bangalore SaaS company runs /in/pricing, /ae/pricing and /us/pricing. All three carry the same block of four link elements in <head> — identical, including the self-reference.
<link rel="alternate" hreflang="en-IN" href="https://example.com/in/pricing" /><link rel="alternate" hreflang="en-AE" href="https://example.com/ae/pricing" /><link rel="alternate" hreflang="en-US" href="https://example.com/us/pricing" /><link rel="alternate" hreflang="x-default" href="https://example.com/pricing" />
Getting the codes right
- Language is ISO 639-1 (two letters):
en,hi,ta,ar. Region is ISO 3166-1 Alpha-2:IN,AE,US,GB. - Language alone is valid. Region alone is not.
hreflang="en"works;hreflang="IN"is invalid and ignored. - `en-uk` is the commonest error here. The country code for the United Kingdom is
GB. - `en-india`, `en_IN`, `english-india` — all invalid. Two letters, hyphen, two letters.
- Adding Hindi later means
hi-INalongsideen-IN, and every page gains a fifth line. The set grows as a whole or not at all.
x-default, and when it earns its place
x-default is the fallback for searchers matching none of your targeted regions. A user in Nairobi matches none of en-IN, en-AE or en-US, so they get the x-default page.
Point it at your genuine global default — the language-neutral landing page, the selector, or whichever version you'd want a stranger to see. Omitting it means Google guesses for everyone outside your list, which is where you started.
The reciprocity rule, and how it fails silently
The rule that breaks most implementations: every page in a set must reference every other page in the set, including itself. If /in/pricing claims /us/pricing as its US alternate but /us/pricing says nothing back, Google treats the claim as unverified and may ignore the annotation entirely.
That's deliberate — without it, anyone could point hreflang at a competitor's page. The cost is that a three-page set has nine link elements to keep in sync, and a five-language site with 200 pages has five thousand. This is a template job, generated from data, never maintained by hand.
The failure has no error state. Nothing goes red. Your pages stay indexed and keep ranking; they just get served to the wrong country, and you find out from a support ticket asking why the site quoted rupees to someone in Dallas.
Where to put it, and how to check it now
Three implementation methods, and you pick exactly one. Mixing them is how sets fall out of sync.
HTML `<head>` link elements — readable, fine up to a few languages. XML sitemap `xhtml:link` entries — the right choice past three or four locales, since the annotations live in one generated file rather than scattered across templates. HTTP `Link:` headers — for non-HTML files like PDFs. Whichever you choose, use absolute URLs; relative hrefs are invalid and silently dropped.
Now the uncomfortable part. Google retired the International Targeting report in Search Console in 2022 and nothing replaced it. No part of the interface tells you your hreflang is broken any more. You validate with a crawler — Screaming Frog, Sitebulb, Ahrefs — set to check reciprocity and code validity, re-run after every template change. Spot-check by hand and you'll miss the page that quietly stopped pointing back.
For an Indian company selling into the Gulf, the UK or the US, this is the plumbing that decides whether your regional pages get seen at all. It's a fixed part of any international SEO build, and the wider market shape is in Indian agencies serving global clients.