Free tool, no signup
Hreflang checker
Hreflang is unforgiving in a particular way: it is either completely right or completely ignored, and nothing tells you which. One invalid code or one missing self-reference and the cluster stops working.
Paste a page. This reads its annotations from the HTML and the Link header, validates every code, and checks the parts people forget.
What a working set looks like
Three pages, three languages, each page naming all three and itself, plus a fallback:
<link rel="alternate" hreflang="en" href="https://example.com/page" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/page" />
<link rel="alternate" hreflang="de-CH" href="https://example.com/de-ch/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page" />That same block, byte for byte, goes on all three pages. Annotations can also travel in an HTTP Link header, which is how non-HTML files such as PDFs do it, and this checker reads both.
The four ways it breaks
An invalid code. en-uk, en-eu, a UN region number such as 419. The entry is dropped, and with it the link between two pages.
No self-reference. The page lists its alternates but not itself, so the set never closes.
No return link. The English page names the French one, and the French page says nothing. Confirmation has to be mutual.
A canonical pointing somewhere else. Each page in a cluster must be canonical to itself. A canonical aimed at the English version from the French page tells search engines the French page should not be indexed at all, which cancels the hreflang.
Checking the other half
Return links are the half a single page cannot prove. Confirming them means fetching every alternate and reading its annotations too.
A crawl of the site collects every page's annotations in one pass, and the downloadable database lets you join the declarations against each other in a few lines of SQL, which is the only comfortable way to audit a large cluster.
Also worth pairing with the canonical checker, since the two interact more than anything else on this list.
Questions people ask
- What does hreflang actually do?
- It tells search engines that several pages are the same content for different audiences, so the right one is shown to each. It does not make a page rank; it stops the wrong version outranking the right one in a given country, and stops the versions being treated as duplicates of each other.
- Why is en-uk wrong?
- Because the country part must be an ISO 3166-1 Alpha 2 code, and the United Kingdom is GB. UK is the one everybody writes and it is silently ignored. The language part is ISO 639-1, so Hebrew is
herather than the oldiw, and Indonesian isidrather thanin. - Does every page have to list itself?
- Yes, and it is the most common failure. Each page in a cluster must name every version including its own, and every page named must name the others back. A one-way annotation is discarded.
- What is x-default for?
- The page to show somebody whose language and country match none of your versions: usually a language selector or your main international version. It is optional, and most multi-region sites want one.
Other free tools here
- Title and meta description length checker — Measure a page’s title and meta description in characters and in pixels, and say what a result will show.
- Canonical tag checker — Find the canonical a page declares, in the HTML and the headers, and check it against the URL that served it.
- Image alt text auditor — List every image on a page with its alt text, and pick out the ones that are missing, empty or useless.
- All the free tools — one page each, no account on any of them.
- Download a whole crawl as SQLite — when one page is not enough and you want the data itself.