SEO glossary

Hreflang

Definition

Hreflang is an annotation telling Google which language or country version of a page to show a given searcher. It uses ISO codes — en-IN for English in India, en-AE for English in the UAE. Every page in the set must link to every other page including itself, or Google discards the whole set.

Updated 26 July 2026 · Written by the Last Agency team · See what SEO actually costs

The short version

  • Language code first, region second, both from ISO standards. en-IN is valid. en-india and en-uk are not.
  • Reciprocity is not optional. If page B doesn't point back at page A, Google ignores the annotation on both.
  • Hreflang swaps which URL is shown. It doesn't lift rankings, and it doesn't merge authority across your regional pages.
  • Search Console retired the International Targeting report in 2022. Nothing in the interface validates this for you any more.

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-IN alongside en-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.

Related questions.

Do I need hreflang if all my pages are in English?

Only if you run separate pages per country — different currency, pricing, legal terms or stock. Same language, different regional versions is exactly what `en-IN`, `en-AE` and `en-US` are for. One English page serving everyone needs nothing.

What is the correct hreflang code for India?

`en-IN` for English targeted at India, `hi-IN` for Hindi, `ta-IN` for Tamil, and so on. Language first, region second, both ISO codes, separated by a hyphen. `in`, `en-india` and `IN` are all invalid.

Does hreflang help my site rank in other countries?

No. It controls which of your existing pages gets shown to which searcher. Ranking in a new market still needs local relevance and links from that market. Hreflang stops the wrong page appearing; it doesn't put you on page one.

What happens if hreflang tags aren't reciprocal?

Google may ignore the annotation altogether. It verifies the return link before trusting the claim, because otherwise anyone could annotate someone else's pages. Non-reciprocal sets fail silently — no warning, no error, just the wrong page served.

Should hreflang go in the head or the sitemap?

Head tags are easier to read and fine up to three or four locales. Past that, use the XML sitemap — the annotations live in one generated file rather than scattered across templates, which makes reciprocity far easier to keep intact. Use one method, not both.

How do I check hreflang errors without Search Console?

You need a crawler. Search Console removed the International Targeting report in 2022 and never replaced it. Screaming Frog, Sitebulb and Ahrefs all validate reciprocity and code syntax — run one after every template change, not once at launch.

Last slot's open

Make this the last growth call you book.

Grab the free strategy call and walk away with a 90-day growth plan — hired or not. Or just text us. Either way, you'll know exactly how we'd win.

Guaranteed or it's free · No lock-in · Free strategy call