Senior technical SEO consultant specializing in international SEO. When Google shows the wrong language or region version of your pages, or treats your localized URLs as competing duplicates, I find the exact cause, fix it reversibly (sitemap first, never a rebuild), and verify it where it counts: the URL Google actually serves each locale. Below is also one of the most thorough, honestly sourced guides you will find for diagnosing and fixing hreflang yourself, on WordPress, Shopify, Next.js, or custom code.
By Harsh Talreja, senior technical SEO consultant (LinkedIn). I build SEO tools, including a Hreflang Checker that flags broken return tags, canonical conflicts, and invalid codes across a site, and I work the technical layer for international B2B SaaS and content sites where rankings move revenue.
TL;DR: Hreflang is a signal Google may use, not a directive, and not a ranking boost. It tells Google which localized URL to show which searcher. Most hreflang failures are systematic, not random: one template error silently breaks reciprocity across thousands of URLs. The dominant causes are missing return tags, a canonical that fights the hreflang, and invalid language or region codes. Google retired its only first-party hreflang report (International Targeting) in 2022, so you now diagnose with a crawler and confirm in the field by the URL Google actually serves. Fix the canonical first, deploy hreflang reversibly by sitemap, then verify per locale. This page shows exactly how, per platform, with the checks and risks for each fix.
Send me your URL and the locales you run. Before we talk, I will crawl a sample and tell you the single cluster most likely being shown to the wrong users. No pitch, no obligation.
Most hreflang problems are not random. They are systematic: one wrong line in a template, one canonical pointing the wrong way, and the same fault repeats across every localized URL the template renders. The job is not to hand you a checklist of forty tags. It is to find the one systematic fault, prove how far it reaches, and fix it without splitting your rankings. The method is four steps, and it is the spine of every engagement and of this guide.
Paste a domain and it crawls the hreflang clusters and flags the faults that actually break them: missing return tags, self-reference gaps, canonical conflicts, invalid language or region codes, and targets that are noindexed or redirecting. It is the same first pass I run before any engagement.
Get your broken clusters →[TODO: point this button at the live Hreflang Checker URL once the tool is deployed.]I find the cluster Google is getting wrong, fix it reversibly, and prove it on the URL Google actually serves your users. I fix the canonical before the hreflang, deploy additively by sitemap so a regression is a one-step rollback, and confirm the result in the field, not just in a crawl.
My promise: reversible, sitemap first, no rebuild. I deploy hreflang additively (XML sitemap first, proof of concept on a sample set), so a regression is a one-step undo, not a crisis. I fix the self-canonical before the hreflang, because a canonical conflict silently kills a cluster. I confirm each fix in a crawl and then in the field, by the URL Google serves each locale. What I will not promise is a ranking jump, because hreflang does not give one. It serves the right version to the right user. That is the win, and it is the honest one.
| Engagement | What it is | Starts at |
|---|---|---|
| Hreflang diagnostic | Full crawl plus field check, the exact broken clusters named, prioritized fix plan | $285 |
| Implementation sprint | Diagnosis plus implemented, reversible hreflang (sitemap first), codes and canonicals fixed, validated | from $690 |
| Retained monitoring | Ongoing crawl and field watch, alerts on regressions from a deploy or a new locale | $270 / mo |
The sprint scales with the work that actually drives it: locale count times template count, the same n by m that decides how many return-tag relationships have to stay in sync. Launch pricing, roughly 40 percent under the going rate for comparable work, while I publish more named results. No lock-in. For context, almost no hreflang service page publishes a price at all, which is the first thing I would fix about this market.
Prefer to do it yourself? The complete, current guide for diagnosing and fixing hreflang, per platform, is below.
Hreflang tells Google that several URLs are localized versions of the same content, so it can show the right one to the right searcher. In Google's words, it helps Search "point users to the most appropriate version of your page by language or region." That is the whole job. Two things follow that most pages get wrong:
Disclaimer, stated once and meant throughout: hreflang is for serving the correct localized URL and reducing same-language cross-region cannibalization. It is not a ranking lever, it is not the fix for a duplicate-content problem (there is no penalty for legitimate localized pages, and consolidation is the canonical tag's job, not hreflang's), and a perfect hreflang setup will not lift a page that does not already rank. Fix it so the right users land on the right page. That is a real user and revenue win on its own.
What a broken cluster actually costs. Hreflang will not raise your rankings, but a broken one quietly taxes the international traffic you already paid for. When the cluster fails, Google falls back to guessing, and every failure mode costs money:
en-gb and en-us pages compete for the same query, so Google serves the wrong country the wrong page and conversion drops.None of this shows up as a ranking drop, which is why it goes unnoticed. It shows up as international pages that get impressions but do not convert. The gap between the markets you paid to enter and the version Google actually serves them is exactly what fixing hreflang recovers.
There are three ways to declare hreflang, and Google states they are equivalent. Choose by your scale and what you can maintain.
| Method | Best for | The trade-off |
|---|---|---|
HTML <link> in <head> | A few versions on a platform whose head is easy to template | Every page carries the full cluster, so the tags add weight and every version must be edited when a locale is added. Breaks down at scale. |
XML sitemap (xhtml:link) | Large or multi-language sites. The recommended method at scale. | Centralized in one file, out of the page HTML, easy to audit and update in bulk. You must list a full block for every URL, and a hreflang-annotated sitemap hits the 50MB byte cap long before the 50,000-URL cap. |
HTTP Link header | Non-HTML files such as PDFs | The only option where there is no head to edit. Harder to see and to validate, so rarely the right choice for HTML pages. |
The scale math nobody shows you. With m versions, every page must carry m hreflang entries, one per version including itself. Across n templated URLs, that is n times m annotations to keep reciprocal. Ten locales on ten thousand URLs is a hundred thousand tags that all have to agree. Add one language and every other version has to be updated or its return links break. This is why the in-head method quietly fails on big sites and the sitemap method wins: one file to keep in sync instead of every page.
Absolute URLs, always. Google is explicit: alternate URLs "must be fully-qualified, including the transport method (http/https)." Use https://example.com/foo, never //example.com/foo or /foo.
The format is a language code, optionally followed by a region code. Google only accepts language codes from ISO 639-1 and region codes from ISO 3166-1 Alpha-2. The classic mistakes:
en-uk is wrong. Use en-gb. Invalid UK is a reserved code, so Google ignores that part of the annotation and your UK targeting silently disappears. The ISO region code for the United Kingdom is GB.nl-be, fr-be, or de-be, never be alone. (And be is the language code for Belarusian, not a region for Belgium.)en-gb, de-be, zh-Hant.de, en) when the content is generic across regions of that language. Add a region (en-gb, de-ch) only when currency, shipping, legal, or spelling actually changes. A region code with no regional difference is noise.These are the faults I find most often, in the order I check them. Note that almost none of them throw a visible error. The cluster just stops working, and Google falls back to guessing.
en-gb page canonicalizes to en-us, you have told Google the British page is not the real page, and Google trusts the canonical over the hreflang, so the whole cluster collapses with no error shown. Check every localized template's canonical first. This is the single most common silent killer, and the reason I fix the canonical before touching hreflang.noindex on a hreflang target wins over the hreflang every time, so the version drops out. Audit that every href resolves to a live, indexable, canonical URL.https URLs that exactly match the indexable version. An href that points at the non-www, http, or trailing-slash variant lands on a redirect, which collapses into the case above.x-default. Current The reserved x-default value is shown "when no other language/region matches the user's browser setting." Recommended, and it matters most on language-selector and global landing pages. Point it at a neutral selector or your default version, not at your highest-revenue locale.<head> or injected by JavaScript into the body. Current In-head tags only count inside a valid head; a malformed earlier element can close the head early and push them out, where they are ignored. Tags a framework injects client-side into the body may never be seen. Prefer server-rendered head tags or the sitemap method.content-language meta tag and the HTML lang attribute and treats hreflang as a much weaker signal, so set those correctly too if Bing matters to you. (Yandex does use hreflang.)Here is the same cluster wrong and right, the in-head method, three locales:
// BROKEN: en-uk is reserved (ignored), missing self-reference, relative URL <link rel="alternate" hreflang="en-uk" href="https://example.com/uk/" /> <link rel="alternate" hreflang="de-de" href="/de/" /> // FIXED: real ISO codes, absolute URLs, self-reference + x-default, all reciprocal <link rel="alternate" hreflang="en-gb" href="https://example.com/uk/" /> <link rel="alternate" hreflang="de-de" href="https://example.com/de/" /> <link rel="alternate" hreflang="en-gb" href="https://example.com/uk/" /> // self, on the en-gb page <link rel="alternate" hreflang="x-default" href="https://example.com/" />
Every other version (de-de, etc.) must carry the matching full set, including its own self-reference. That reciprocity is what makes the cluster valid.
hrefs absolute and self-canonical.Link header only for non-HTML files like PDFs.Google removed the Search Console International Targeting report, the only first-party place that surfaced hreflang errors, in 2022, and did not replace it. Anyone still telling you to "open the International Targeting report" is describing a tool that has not existed for years. Here is how diagnosis actually works now.
| Tool | Lab or Field | Use it for |
|---|---|---|
| Screaming Frog, hreflang tab | Lab (crawl) | The workhorse. Filters for Missing Return Links, Inconsistent Language and Region Return Links, Non-Canonical Return Links, Noindex Return Links, Missing Self Reference, Incorrect Language and Region Codes, Missing X-Default, and tags Outside <head>. |
| Ahrefs / Sitebulb / OnCrawl Site Audit | Lab (crawl) | Managed, at-scale checks: missing reciprocal hreflang, invalid codes, hreflang to a broken page, multiple pages for one language. |
| Merkle hreflang Tags Testing Tool | Lab | Single-URL validator that reads HTML, HTTP headers, and sitemap implementations. Good for spot checks. |
| Search Console, URL Inspection | Field | The verdict. Shows the Google-selected canonical, which reveals how Google actually clustered and canonicalized the page. |
| The live SERP per locale | Field | Check what URL a US, UK, or DE searcher is actually served. This is the only true test that hreflang is doing its job. |
Why both: a crawler proves your tags are syntactically valid and reciprocal. It cannot prove Google is honoring them, because hreflang is a signal, not a directive. Only the field check (the Google-selected canonical and the served SERP) tells you the user is actually landing on the right version.
No. Hreflang does not raise your rankings, and any consultant who says it does is selling something Google says does not exist. Google's Gary Illyes put it plainly in a 2019 AMA: "you will NOT receive a ranking benefit per se," and "what you will receive is more targeted traffic." John Mueller has said the same, that hreflang "does not change ranking."
What it actually does is decide which version is shown. Illyes described the mechanism: Google retrieves the page with the stronger signals, then, if it sees a better sibling for that user's language or region, serves the sibling instead. Ranking is decided on the strongest page's own merits; hreflang only swaps the displayed URL. So the real payoff is:
One claim to be careful with: some popular guides say hreflang "shares" or "consolidates" ranking signals across a cluster. Google's own representatives describe the opposite, ranking on the strongest page's signals and swapping the served URL, so I do not make that claim. The defensible, honest line is the one above: hreflang routes the right version to the right user, it does not pool authority.
As promised up top: every change is reversible, no rebuild, and I confirm the result in the field, not just in a crawl. The one thing I will not promise is a ranking jump, because hreflang does not give one.
en-uk typo). Use the sections above. You may not need me.If anyone guarantees a ranking jump from hreflang, walk away. That is not an honest promise.
I read the hreflang consultant and service pages ranking on Google. Two patterns stood out, and both are reasons to be careful who you hire.
First, stale audits. A widely cited hreflang guide, last updated in March 2025, still tells you to open the International Targeting report in Google Search Console. Google removed that report in 2022. If a 2025 page is still pointing you at a tool that has not existed for three years, ask what else on it is out of date.
Second, the ranking overclaim. Several service pages sell hreflang as a way to "boost your rankings." It is not. Google has said plainly you will not receive a ranking benefit per se, and that hreflang does not change ranking. What it changes is which version is shown. A page that sells you a ranking lift from hreflang is selling something Google says does not exist.
Almost none of them publish a price, show a real before-and-after, or promise the work is reversible. That is the whole reason this page does all three.
What does a hreflang consultant do?
A hreflang consultant diagnoses why Google is serving the wrong language or region version of your pages, or treating your localized URLs as competing duplicates, then implements and verifies the fix. The good ones start from the URL Google actually serves, name the specific systematic fault (usually a canonical conflict, a missing return tag, or a bad code), and ship reversible changes rather than a generic checklist.
Why is Google showing the wrong country version of my page in search?
Usually because the hreflang cluster is broken, so Google is falling back to its own guess. The common causes are a canonical that points the localized page at a different version, a missing return link so the annotation is ignored, an invalid code such as en-uk, or a target that is noindexed or redirecting. Until the cluster is valid, Google decides for you.
Do I need hreflang if it is the same language in different countries, like en-US and en-GB?
Often yes. Even with near-identical content, hreflang stops a UK searcher being shown your dollar-priced US page and tells Google these regional pages are legitimate alternates, not duplicates. It does not consolidate them (that is the canonical tag's job), and each regional page should self-canonicalize.
Does hreflang help my rankings?
No. It is a signal Google may use, not a ranking factor. Google has said you do not receive a ranking benefit from it. What you get is the right version shown to the right user and less same-language cannibalization, which is a real traffic and revenue win, just not a ranking one.
How do I audit hreflang now that the Search Console International Targeting report is gone?
Google removed that report in 2022 and did not replace it, so there is no first-party hreflang validator anymore. Crawl with Screaming Frog (or Ahrefs, Sitebulb) for reciprocity, codes, and canonicals, spot-check single URLs with the Merkle tester, then confirm in the field with URL Inspection's Google-selected canonical and the live SERP per locale.
What is the most common hreflang mistake?
At scale, missing return links: one template missing one locale breaks reciprocity across thousands of URLs, and Google ignores the unpaired annotations. The most damaging single mistake is a canonical conflict, where the localized page canonicalizes to a different version, because it silently kills the whole cluster with no error shown.
HTML tags or XML sitemap, which should I use?
Google treats them as equivalent, so pick by scale. A handful of locales on an easily-templated site can use in-head tags. Anything larger should use the XML sitemap method, which keeps the annotations in one auditable file instead of on every page, where they drift out of sync. Do not use both.
Can you guarantee Google will show the right version?
No honest consultant guarantees that, because hreflang is a signal Google may use, not a directive it must obey. What I can do is make the cluster valid and reciprocal, fix the canonicals underneath it, and show you in the field that Google is serving the right version. If your setup cannot realistically work (for example, the locales are not genuinely distinct), I will tell you that before you spend money.
Every fact on this page is from Google's own documentation or a named, on-the-record source, not opinion:
Send me your URL and the locales you run. Before we talk, I will crawl a sample and find the cluster most likely being shown to the wrong users. The call is the verdict, not discovery. You leave knowing the one thing to fix, even if you never hire me.