Hreflang Validator

Check the hreflang set on a live page: self-reference, codes, duplicates and x-default.

Any page in the language cluster.

20 runs left today · sign up for more

About this tool

Reads every hreflang annotation on a page — from the HTML and from the HTTP Link header — and checks the things that make a set silently worthless: a missing self-reference, two URLs claiming one code, a country code used where a language code belongs, and relative URLs.

One caveat, stated plainly: this checks a single page. A cluster is valid only when every page in it points back at every other, and confirming that means fetching all of them. A clean report here does not prove a clean cluster.

Common questions

What is a return tag?

If page A declares B as its German version, B must declare A back. Without that return link the pair is not confirmed and the annotation is discarded. It is the most common hreflang failure by a wide margin.

Why does the self-reference matter?

It is what tells a search engine which member of the set this page is. Without it the page cannot be placed in the cluster, so every other annotation on it is ignored too.

Is "uk" wrong for a British page?

Yes — "uk" is Ukrainian. But it is a real language code, so a site serving Ukrainian is using it correctly. This tool raises it as a question rather than an error, and only calls a code wrong when it is not a language at all, like "gb" or "jp".

Can hreflang and canonical conflict?

Yes, and it is a classic mistake: every language version canonicalising to the English page. The canonical says "index that one instead", which removes every translation from search.

Does this check the other pages in the set?

No. It reads one URL. Checking return tags means fetching every page in the cluster, which is a crawl rather than a single request — run this on each page to compare the sets by hand.