Hreflang Checker & Generator
Paste a URL. We fetch the live page, read the hreflang tags out of its head, and flag invalid codes, a missing x-default, or a missing self-reference. Or switch to the generator and build a correct set for your language versions. Free, no signup.
The checks
What the checker looks for
Valid codes
hreflang takes language[-script][-region] with hyphens. en-GB works, en_GB does not. And watch the classic trap: “uk” is Ukrainian, not the United Kingdom.
Self-reference
Every page must list itself in its own hreflang set. Miss it and Google ignores the entire set on that page.
x-default
The fallback for searchers whose language matches none of your versions. Not required, but you almost always want it.
Absolute URLs & duplicates
Relative hrefs and the same code declared twice with different URLs both break the set.
One thing no single-page checker can prove: reciprocity. Each alternate URL must point back with the same set, so run your other language versions through the checker too.
Symptom and cause
Hreflang not working? What you see, and what usually causes it
- The wrong country version shows in search.
- Each version canonicals to the “main” page, so Google ignores the alternates.
- Hreflang works on some pages and not others.
- The other versions do not list this page back. Return tags are missing.
- Google ignores the whole set on a page.
- The page does not list itself, or one of the URLs is relative.
- UK searchers never see the UK page.
- “uk” was used for the United Kingdom. It means Ukrainian. Use en-GB.
Placement
Where do hreflang tags go?
Right for most sites
Link tags on every page, which is what the generator above builds. Simple to ship, easy to audit.
Very large sites
Thousands of pages in many languages, where a full tag block on every page adds real weight.
Non-HTML files
PDFs and other documents that have no <head> to put a link tag in.
Pick one and stick to it. Mixing placements is how sets end up contradicting each other, and a contradiction reads as no hreflang at all.
Before you tag
Do you need hreflang at all?
Add it when
- The same content exists in more than one language
- Same language, different countries: en-US, en-GB, en-AU
- Prices, currency, or stock differ by region
Skip it when
- One language serving the whole world
- Only one version of each page exists
- Nobody will maintain the URL map. Half-done hreflang is worse than none
And keep canonicals out of the fight: each language version must canonical to itself, never to the “main” version. A canonical pointing at the English page tells Google to ignore the alternates the hreflang set just declared. In our experience that one conflict explains most “hreflang not working” complaints. The cause is a technical SEO problem underneath, not a tagging one.
Hreflang questions we keep answering
The short versions of what clients and readers ask about hreflang, checked against how Google actually handles the tags.
Still have a question? Contact usWhat does an hreflang tag actually do?
It tells search engines which language or country version of a page to show each searcher. It does not improve rankings by itself. It routes the ranking you already have to the right version, so a UK searcher lands on the UK page.
Why is my hreflang not working?
Usually one of two causes. The sets are not reciprocal (every version must list every version, including itself), or the canonical tag points at the “main” page and tells Google to ignore the alternates. Check the canonical first. In our experience it explains most complaints.
Does this checker verify return tags on other pages?
No. It reads one page at a time, and no single-page check can prove reciprocity. Run each of your language versions through the checker and confirm they all return the same set. Tags served via HTTP headers or the sitemap are not visible to it either.
Is x-default compulsory?
No, Google treats it as optional. But without it, searchers whose language matches none of your versions get whichever page Google guesses. Point x-default at your main or language-selector page and the guess disappears.
Can hreflang fix duplicate content between country sites?
It groups the versions so they stop competing, which is what you actually want: each country keeps its own page in its own market. It does not merge signals the way a canonical does, so do not use it as a duplicate-content patch on pages that are genuinely the same.
