Free hreflang validator
Hreflang tells Google which language or country version of a page to show. Get one code wrong
— en-uk instead of en-gb, or no self-reference — and Google drops the
whole set silently. Your German page starts outranking your English one in London, and nothing
in Search Console tells you why. Paste a URL and see every hreflang tag, validated. No signup.
Set-level checks
Hreflang annotations
Showing the first 300 annotations.
| Status | hreflang | Target URL | Source |
|---|
Hreflang is easy to set once and forget — then a redeploy drops a tag and the wrong country version ranks for months. LinkGuard monitors the pages your backlinks live on and flags when their crawlability and indexing signals change.
What this tool checks
It fetches the URL you enter and reads every hreflang annotation from the two places Google
actually looks — the HTML <link rel="alternate" hreflang> tags in the
<head> and the HTTP Link header. Then it runs two passes: one on
each individual tag, one on the set as a whole.
- Code validity. Each value has to be a real ISO 639-1 language
(
de), optionally with an ISO 3166-1 region (de-AT), an ISO 15924 script (zh-Hant), or the literalx-default. The classic miss —en-uk— gets flagged, because the country code for the UK isgb. - A self-referencing entry. The set should include a tag pointing at the page you're checking. Google treats a set with no self-reference as suspect.
- Duplicates and conflicts: the same hreflang declared twice is noise; the same hreflang pointing at two different URLs is a real error: Google can't pick, so it drops the pair.
- Relative hrefs and a missing
x-defaultround out the checks — the first is a warning (use absolute URLs), the second just an FYI, since x-default is optional.
What it deliberately doesn't do: crawl each alternate to confirm the return tag points back. That's the one check you can't make from a single page, and it's a crawl-level job — more on that below.
How to use it
- Paste one variant's URL. Not the domain root — the actual page, e.g.
https://example.com/de/pricing. Hreflang is per-page, so the tag set lives on each variant. - Read the verdict and the set-level checks first. The per-tag table is useful, but most hreflang bugs are set-level — a missing self-reference or a duplicated code will break the whole cluster even when every individual tag looks fine.
- Fix the source, then re-check. Hreflang is one of those things where you change a template partial and it either fixes every page or breaks every page. So verify on a couple of variants, not just one.
Why hreflang is worth getting right
Hreflang doesn't lift rankings. What it does is make sure the user who searches in French lands on your French page, not the English one that happens to rank. Get it wrong and you don't get an error — you get the quiet version of failure: the wrong-language page shows in the wrong market, bounce rates climb, and conversions leak for months before anyone connects it to a stray tag.
Return tags: the check this tool can't do alone
The rule Google cares about most is reciprocity. If your English page declares a German alternate, the German page has to declare the English one back. Miss the return tag and Google ignores the relationship entirely. Verifying it means fetching every alternate and reading its tags — which is why a single-page tool (this one, and most free ones) can't confirm it. It can tell you your tags are well-formed; it can't tell you the page on the other end agrees. A crawler or ongoing monitoring is what closes that gap.
Hreflang vs canonical: the conflict that kills clusters
This is the mistake that burns people. They add hreflang to link their language variants, then canonicalize all of them to the English URL — usually because a plugin set a site-wide canonical. Now they're telling Google two contradictory things: "these are separate pages for separate audiences" (hreflang) and "these are all duplicates of the English one" (canonical). Canonical wins, the variants drop out of the index, and the hreflang set dies with them. Each variant should canonical to itself. Check that with the canonical tag checker.
x-default, in plain terms
x-default is the catch-all: the page Google serves when the user's language and region don't match anything in your set. A language-picker homepage is the typical target. It's optional — if you skip it, Google just guesses the nearest match, so this tool flags a missing one as information, not an error. Don't bolt one on just to silence a checker if you don't actually have a sensible fallback page.
Frequently asked questions
What is hreflang?
Hreflang is an annotation that tells Google which language and regional version of a page to serve to which users. You declare it as a set of link tags, one per language or region variant, plus an optional x-default for everyone else. It doesn't change rankings on its own — it swaps in the right variant for the right user so a French searcher gets the French page instead of the English one. The variants in a set are supposed to point at each other (return tags).
What does this tool check?
It fetches the page and reads every hreflang annotation from both sources Google honors: the HTML link rel=alternate hreflang tags and the HTTP Link header. For each one it checks the code is a valid ISO 639-1 language, optionally followed by an ISO 3166-1 region (or x-default), and whether the href is absolute. Across the set it checks that a self-referencing entry is present, that no hreflang value is duplicated or points to conflicting URLs, and whether an x-default exists. It does not crawl each alternate to verify return tags — that is a separate, crawl-level check.
What is the difference between hreflang and canonical?
They solve different problems and they can fight each other. Canonical says which URL is the master copy when several are duplicates. Hreflang says which of several genuinely different language or region variants to show. The common mistake is canonicalizing all your language variants to the English page — that tells Google the others are duplicates and should not be indexed, which kills the hreflang set. Each language variant should canonical to itself, then hreflang links the variants together.
Do I need an x-default?
It's optional, not required. x-default tells Google which page to serve when none of your listed languages or regions match the user — typically a language selector or your main international page. If you don't set one, Google just picks the closest match it can. For a site that targets a few specific markets it is good practice; for a fully localized site with a sensible fallback it matters less. This tool flags a missing x-default as informational, not an error.
Why is my hreflang being ignored?
The usual reasons: an invalid code (en-UK instead of en-GB, or a language code that doesn't exist), a missing self-referencing entry, return tags that don't point back (page A links to B but B doesn't link to A), or the variants being canonicalized to a single URL. Google validates the whole set and quietly drops it if the annotations are inconsistent — there is no hard error in Search Console, just the International Targeting report showing no return tags. This tool catches the code and structure problems you can see from a single page.
Does this tool check return tags (reciprocity)?
Not in this free version. Return-tag verification means fetching each alternate URL in the set and confirming it links back to this page with the right hreflang. That is one extra request per alternate, which becomes slow and easy to abuse on an anonymous tool, so it is a crawl-level job rather than a single-page check. This tool validates everything you can see from the page itself: the codes, the self-reference, duplicates, and x-default. If you want continuous reciprocity monitoring across a site, that is what a dedicated international-SEO crawler is for.
Should hreflang go in the HTML, the HTTP header, or the sitemap?
Any of the three works, and you should pick one and use it consistently. HTML link tags in the head are the most common and the easiest to inspect. The HTTP Link header is the option for non-HTML files like PDFs. The XML sitemap (xhtml:link) is the most scalable for large sites because it keeps the annotations out of the page. Don't mix methods for the same set — it makes debugging painful and risks conflicting signals. This tool reads the HTML tags and the HTTP header.
Last updated: 2026-05-28