Skip to content
Free tool

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.

hreflang.check

The checks

What the checker looks for

✕ en_US

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.

! no self-reference

Self-reference

Every page must list itself in its own hreflang set. Miss it and Google ignores the entire set on that page.

! no x-default

x-default

The fallback for searchers whose language matches none of your versions. Not required, but you almost always want it.

✕ href="/uk/page"

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?

<head>

Right for most sites

Link tags on every page, which is what the generator above builds. Simple to ship, easy to audit.

sitemap.xml

Very large sites

Thousands of pages in many languages, where a full tag block on every page adds real weight.

HTTP header

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.

Common questions

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 us
What 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.