Hreflang tags tell Google which version of your page to show to users in different countries and languages. Get them wrong and Google may show the wrong language version to the wrong users — or ignore your international pages entirely.
🌍 Check Hreflang Tags All Audit Tools →You need hreflang tags if your site has pages in more than one language, or if you have separate versions of pages targeting users in different countries — for example a .com targeting the US and a .co.uk targeting the UK. Without hreflang, Google may choose the wrong page to serve to international users, or may treat your translated pages as duplicate content.
Every page referenced in a hreflang set must include hreflang tags pointing back to all other pages in the set. If your English page references your French page but your French page does not reference your English page, Google ignores the entire set.
Hreflang uses ISO 639-1 language codes (en, fr, de) and ISO 3166-1 region codes (GB, US, FR). Common mistakes include using EN instead of en, UK instead of GB, or using full language names instead of codes.
Every hreflang implementation needs an x-default value specifying the fallback page for users whose language and region are not explicitly targeted.
Hreflang is one of the most misunderstood tags in SEO, and almost all of the confusion comes from a single false belief: that it is a ranking signal. It is not.
Hreflang does not make any page rank higher. It does not consolidate authority between versions. It does not tell Google that your French page is important. It does exactly one thing: it tells Google that a set of pages are translations or regional variants of one another, so that when Google has already decided to rank one of them, it can swap in the right version for the user.
Two consequences follow, and both are routinely missed.
First, if your French page does not rank, hreflang will not rescue it. The page must earn its position on its own merits — content, links, relevance in that language. Hreflang only changes which version is served once a ranking has been earned.
Second, hreflang is a hint, not a directive. Google frequently ignores it, particularly when the signals conflict — when the canonical points elsewhere, when the return tags are missing, or when the pages are too similar to be plausible translations. An hreflang set that is 95% correct is not 95% effective; a single broken link in the set can cause Google to discard the whole thing.
Every page in an hreflang set must reference every other page in the set, including itself. This is the rule that most implementations get wrong, and the failure is total rather than partial: if the return tags are missing, Google discards the set entirely rather than using the half that works.
A three-language set therefore requires three tags on every page — English, French and German each listing all three. Not two. Three, because the self-referencing tag is required and is the one most frequently omitted.
The reason for the rule is straightforward once stated: hreflang is an assertion about a relationship between pages, and Google will not accept a one-sided claim. Anyone could add a tag claiming a competitor's page is the French version of theirs. Requiring both ends to agree makes the claim verifiable.
In practice this is why hreflang implementations decay. Someone adds a Spanish version and updates the Spanish page's tags, but not the English, French and German pages that must now reference it. The Spanish page points at everyone; nobody points back; the set is invalid. Nothing appears broken — the pages all load, the tags are all present — and the entire configuration is being ignored.
The value must be a valid ISO language code, optionally followed by a valid ISO region code. Get either wrong and the tag is ignored — silently, with no error anywhere.
en-GB is English as used in the United Kingdom. GB-en is nothing at all. This inversion is a common error and it invalidates the tag completely.
en-UK is invalid. The ISO country code for the United Kingdom is GB. This single mistake appears on a very large number of British sites, and every tag carrying it is being discarded.
hreflang="fr" targets French speakers everywhere. hreflang="fr-CA" targets French speakers in Canada only — and a French speaker in France will not be served that page. Adding a region code narrows the audience, and it should only be used when you genuinely have a page for that region specifically. Most sites that add region codes do not need them and are cutting off users by accident.
There is no way to say "this page is for Germany" without also saying which language it is in. hreflang="DE" is invalid; hreflang="de-DE" is what you meant.
x-default specifies the page to serve when no other version matches the user. It is not a fallback for "English" and it is not optional in any meaningful sense — without it, a user whose language is not in your set gets whichever page Google guesses at.
The correct target is usually a language selector, or the version most likely to be useful to an unmatched visitor. If you have English, French and German pages and a Japanese user arrives, x-default decides what they see.
The common mistake is pointing x-default at the English page and also declaring the English page as en. That is not wrong exactly, but it means an unmatched user is silently treated as an English speaker, which may not be what you want — and it means you have no genuine default at all.
This is the most damaging error in the entire subject, and it is subtle enough that it survives review.
Every page in an hreflang set must have a self-referencing canonical. The French page's canonical must point at the French page. If the French page's canonical points at the English page — which happens constantly, because someone reasoned that English is the "original" — then you have told Google two contradictory things: that the French page is a distinct regional variant worth serving to French users, and that the French page is a duplicate of the English one and should not be indexed at all.
Google resolves the contradiction by believing the canonical. The French page is dropped from the index, and the hreflang set collapses.
The rule is simple and absolute: canonical points at itself; hreflang points at the alternates. They are answering different questions and must never be crossed.
There are three valid locations, and the choice is mostly practical.
The usual method. Every page carries a link element for every page in the set, itself included. It is easy to inspect and easy to debug, and it is impractical at scale: a site with 10,000 pages in six languages is carrying 60,000 tags, and the head of every page becomes enormous.
The right answer for large sites. The relationships are declared once, centrally, in a file you can generate programmatically. No page weight cost, and — importantly — the reciprocity is far easier to keep correct, because the whole set is defined in one place rather than scattered across thousands of templates.
For non-HTML resources — PDFs, primarily. Rarely needed otherwise.
Pick one and use it consistently. Declaring hreflang in both the head and the sitemap is not twice as strong; it is two sources that will eventually disagree, and the disagreement will be invisible until something stops working.
A great deal of hreflang work is done by sites that do not need it, and the tags then become a source of errors without ever having offered a benefit.
The test is whether you have genuinely distinct pages that a user in a different place or language should see instead of the one that ranked. If not, hreflang has no work to do.
Hreflang fails silently. Nothing breaks, no error appears, the pages all load — and the tags are being discarded. That means the only way to know whether an implementation works is to check it deliberately, and most sites never do.
Pick any page in the set and list every alternate it declares. Then visit each of those alternates and confirm it declares the original in return, and itself. One missing reciprocal link invalidates the entire set — not just that pairing.
Every page in the set must canonicalise to itself. If any page canonicalises to another language, that page is being told it is a duplicate, and it will leave the index. This is the fastest thing to check and the most likely thing to be wrong.
Scan every hreflang value for the classic invalidators: en-UK instead of en-GB, a region code in the language position, a country code with no language. A single malformed value does not fail the whole set, but it does mean that audience is not being served.
An hreflang pointing at a URL that 404s, redirects, or is blocked by robots.txt is a broken member of the set. Redirects are the insidious case: the tag points at the http version, which redirects to https, and Google treats the declared URL and the final URL as different pages.
Detecting a visitor's country and forcibly redirecting them to that version is the most damaging pattern in international SEO. Googlebot crawls predominantly from US IP addresses. If your site force-redirects US IPs to the American version, Googlebot may never see any other version of your site, and none of them will be indexed.
Offer the alternative — a banner, a suggestion, a selector. Do not enforce it. A user who was linked to your French page and is bounced to the English one is also, incidentally, being denied the page someone chose to send them.
Identical English pages on a .com, .co.uk and .com.au, differentiated only by currency, are not really alternates and Google frequently declines to treat them as such. If the pages are meaningfully identical, one page is usually the better answer than three competing for the same rankings.
Any of the three works. Using all three at once — /fr/ for French, de.example.com for German, and example.co.uk for Britain — produces a configuration that is difficult to reason about, difficult to keep reciprocal, and easy to break. Pick one architecture and hold to it.
No. It is not a ranking signal. It tells Google which version of an already-ranking page to serve to which user. If a page does not rank, hreflang will not rescue it.
Most commonly, missing return tags — every page in a set must reference every other page including itself, or Google discards the whole set. After that: invalid language or region codes, and cross-language canonicals contradicting the hreflang.
No. The ISO country code for the United Kingdom is GB. en-GB is correct; en-UK is silently ignored.
Never. Each page's canonical must point at itself. A cross-language canonical tells Google the page is a duplicate that should not be indexed, which drops it from the index and collapses the hreflang set. This is the most common cause of translated pages disappearing.
Sitemap for anything large. The relationships are declared once, centrally, which makes reciprocity far easier to keep correct — and it avoids adding thousands of tags to every page head. Use one method, not both.
Run the Hreflang Checker and get actionable results in minutes. Pay as you go — no subscription needed.
Check Hreflang Tags →aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical website tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.