Hreflang Checker

Loading tool…

About Hreflang Checker

Paste a public URL and click Analyze. We read link rel=alternate with hreflang in the HTML. Language codes are checked against ISO 639-1, optional regions against ISO 3166-1, plus x-default. Invalid codes, a missing self-reference, a missing x-default, and a non-http href are flagged. This is one URL at a time; return tags on the other locale are not fetched.

Generator mode builds a link block. Default rows are en and x-default pointing at https://example.com/. Add or remove rows, then Copy. Load into generator copies the tags we found on the page into that form. Sitemap hreflang and HTTP Link alternates are not parsed.

When to use it

Use it after you launch a second locale or change locale URLs, when Search Console starts listing hreflang errors, or before you ship a language-picker that still points at example.com placeholders.

Use the generator when you need a starting link block. It is not a sitemap xhtml:link reader and it does not fetch the other locale for a return tag.

How to use Hreflang Checker

  1. 1Paste a page URL, or skip to the generator. Analyze needs a public page. The generator works with no fetch.
  2. 2Review each hreflang. Valid and Invalid chips sit on the list. Codes follow ISO 639-1 and optional ISO 3166-1.
  3. 3Check the other locale separately. Return tags are not fetched from this URL alone.
  4. 4Copy generated tags if you are starting fresh. Replace the example.com hrefs before you paste into production.

Checker and generator

The checker only sees HTML on the URL you paste. Reciprocal hreflang on the other language URL is a separate run. x-default is recommended when you have a language-picker fallback; it is a notice if missing, not a hard fail.

The generator emits one link rel=alternate per row. It does not deploy files and it does not rewrite your CMS. After you paste the block, re-run Analyze on each locale URL.

How to read the results

Count boxes are Tags, Invalid, Self, x-default, and Relative. Invalid codes are critical (en-UK is the usual example; the region is GB). Missing self-reference is a warning. Missing x-default and a single-language page with no tags are notices. The table columns are the language code, href, and Valid or Invalid.

apple.com returned 137 valid tags, a Self hit on en-US, and No x-default. example.com is No hreflang tags, which is fine for one language. Load into generator copies the last check into the form (default rows are en and x-default at https://example.com/). Copy emits the link block.

Why this matters

Each locale URL is supposed to name every sibling, including itself. If the French page does not point back at the English URL, the cluster is one-way. Engines then have no reliable pair and may ignore the annotations on both sides.

This checker cannot prove the return because it does not fetch the other href. That is why you run Analyze again on the sibling. A bad code such as en-UK is dropped entirely, so the rest of a large set can look healthy while that locale is invisible.

Limits and privacy

Analyze fetches one public URL. Loopback and reserved IPs are rejected. The generator never uploads. About 20 Analyze runs per minute on your network. Sibling locales are a separate run. No login.

Common mistakes

Treating 137 valid tags on one URL as a finished cluster. Return tags live on the other locales. Click each sibling.

Shipping the generator defaults. en and x-default still say https://example.com/ until you edit them.

Reading No hreflang tags as a defect on a single-language site. It is a notice. Add tags only when real locale variants exist.

FAQs

Does this check return tags?
No. Google wants reciprocal hreflang. Run Analyze on the other locale URL as well.
Is sitemap hreflang included?
No. HTML link tags only. Sitemap xhtml:link annotations are not parsed.
Why is en-UK invalid?
The region code for the United Kingdom is GB. Use en-GB.
Is x-default required?
It is recommended when you have a fallback locale. Missing x-default is a notice here.
What does Load into generator do?
It copies the hreflang rows from the last check into the form so you can edit and copy a cleaned block.
Why did apple.com still show a notice?
137 tags parsed and every code was Valid, including a self en-US row. The notice is No x-default. That is recommended for a language-picker fallback, not a critical. example.com is the empty-tag notice instead.
Does Analyze fetch the other locale?
No. Return tags are not requested. Google wants each sibling to name the others. Run Analyze on the French or German URL as a second job. Sitemap xhtml:link rows are not read either.
What does the Relative count mean?
How many hrefs are not absolute http or https. Those are easier to resolve against the wrong base. The table still lists them. Invalid is a different counter: the language or region code failed ISO 639-1 or ISO 3166-1.