Hreflang validator
This hreflang validator reads the hreflang tags in a page's HTML and checks the things that make Google ignore them: badly formed language codes, duplicates, relative URLs, a missing self-reference and no x-default. Then it fetches up to five of the alternate pages to confirm each one links back.
- Return links
- checked live, up to 5
- Reads
- hreflang tags in the HTML
- Cost
- free, no signup
Issues found
Before a run, these are the checks made. After a run, each row is a real issue on your page
-
Not runReturn link from each alternate—
Why it mattersGoogle's documentation says that if two pages do not both point to each other, the tags will be ignored. A locale migrated separately is the usual cause.
How to fixMake every alternate list every other version, including this one. The validator fetches up to five alternates and reports any whose HTML does not contain this page's URL as an error.
-
Not runSelf-reference—
Why it mattersGoogle requires each language version to list itself as well as all the others. It looks redundant, so it is often left out.
How to fixAdd an hreflang tag pointing at this page's own URL, written exactly as the page is served. A missing self-reference is an error.
-
Not runLanguage and region code format—
Why it mattersGoogle supports only ISO 639-1 language codes, optionally followed by an ISO 3166-1 Alpha 2 region, such as en or en-gb, plus x-default.
How to fixCorrect any value that is not two or three letters with an optional two-letter region. Note the check is on format: it cannot tell that en-uk should be en-gb, so check region codes yourself.
-
Not runNo duplicate values—
Why it mattersTwo tags declaring the same language or region make it unclear which URL to serve.
How to fixKeep one URL per hreflang value. Each duplicate is an error.
-
Not runAbsolute URLs—
Why it mattersGoogle requires fully qualified alternate URLs, including https://. Root-relative paths such as /de/ are not accepted.
How to fixWrite every href as a full URL. Each relative URL is an error.
-
Not runx-default declared—
Why it mattersx-default is the fallback Google uses when no language or region matches a visitor's browser setting.
How to fixAdd hreflang="x-default" pointing at your language selector or main version. A missing x-default is a warning, not an error.
Annotations and return links
Every hreflang tag on the page, and what each alternate returned
Nothing to show yet. After a check, this lists every hreflang value and URL found in the HTML, then the result of fetching up to five alternates: links back, no return link, or unreachable.
Errors, warnings and the score
Every issue the validator finds is an error or a warning. The score starts at 100 and loses 20 points per error and 8 per warning, down to 0. A page with no hreflang tags at all scores 0.
| Issue | Severity | Points |
|---|---|---|
| No hreflang tags in the HTML | Error | score 0 |
| Missing self-reference | Error | −20 |
| Missing return link from an alternate | Error, per alternate | −20 |
| Code not in language or language-region format | Error, per tag | −20 |
| Duplicate hreflang value | Error, per duplicate | −20 |
| Relative URL | Error, per tag | −20 |
| No x-default | Warning | −8 |
Self-referencing, reciprocal for the alternates checked, correctly formed.
Often only a missing x-default, which still leaves matched locales working.
No annotations, or several errors such as missing return links.
The validator reads <link rel="alternate" hreflang> tags in the HTML only. If you declare hreflang in HTTP headers or an XML sitemap, which Google treats as equivalent, it reports no annotations even though your setup may be correct. The return-link test looks for this page's URL anywhere in each alternate's HTML, and alternates that cannot be fetched are listed as unreachable without costing points. Rules are from Google's guide to localised versions of your pages.
How to check an hreflang cluster
Run it on one page from each locale. A clean result on one page does not prove the whole cluster is clean.
-
Step 1
Enter one page from the cluster
Use the exact URL the page lists for itself, including https:// and the trailing slash if you use one. The self-reference check compares URLs as written.
-
Step 2
Read the issue list
Each row is one error or warning. If there are none, you see a single pass row with the number of tags found.
-
Step 3
Check the annotations table
The details list every hreflang value and URL on the page. Look for wrong region codes, such as en-uk instead of en-gb, which the format check cannot catch.
-
Step 4
Fix missing return links
For each alternate marked No return link, add the full set of hreflang tags, including one pointing back to the page you checked.
-
Step 5
Repeat from another locale
The validator checks up to five alternates from one page. Run it from a second locale to cover larger clusters and confirm reciprocity both ways.
Why hreflang breaks, and what it will not fix
hreflang fails silently and the rules are strict. Google's guide says each language version must list itself as well as all other versions, and if two pages do not both point to each other, the tags are ignored. Codes must be ISO 639-1 languages with optional ISO 3166-1 Alpha 2 regions: the United Kingdom is gb, so en-gb is correct and en-uk has no effect. Alternate URLs must be fully qualified, including the protocol.
Each page should also canonicalise to itself. Pointing a locale's canonical at a different locale tells Google to drop it, which defeats the cluster.
hreflang solves the wrong-version problem, not the ranking problem. It tells Google which existing version to show to which audience, such as stopping a UK visitor landing on the US page with the wrong currency. It does not make a page rank in a new market; that takes local authority and demand. Our international SEO work covers both.
What the validator does
- Reads hreflang link tags in the page HTML
- Checks code format, duplicates and absolute URLs
- Confirms the page references itself and declares x-default
- Fetches up to five alternates to test return links
What it does not do
- Read hreflang in HTTP headers or XML sitemaps
- Validate codes against the full ISO lists (en-uk passes the format check)
- Check canonical tags on each alternate
- Fetch more than five alternates per run
- Judge whether the content is a true equivalent
Need help checking your language-page cluster?
Review reciprocal links, language targets and canonical relationships across the full page cluster.
hreflang, answered plainly
Short, standalone answers. Email editorial@moxseo.com if any of them is wrong.
What does the Hreflang Validator check?
It fetches a page, reads the hreflang link tags in its HTML and checks for badly formed codes, duplicate values, relative URLs, a missing self-reference and a missing x-default. It then fetches up to five alternate pages and reports an error for any whose HTML does not contain the original page's URL. It scores the page out of 100.
Does one missing return link break the whole cluster?
Google's guide says that if two pages do not both point to each other, the tags will be ignored. At minimum that pair stops working, and a locale missing its return links weakens the signals for every page that points to it. The validator treats every missing return link as an error.
Do I need x-default?
It is not required, but it is recommended. Google uses x-default when no language or region matches the visitor's browser setting. Without it, Google chooses a version for unmatched visitors. The validator reports a missing x-default as a warning.
Should hreflang be in HTML tags, HTTP headers or the sitemap?
Google treats all three methods as equivalent. HTML link tags are the easiest to audit, and they are the only method this validator reads. If you use headers or a sitemap, the validator will report no annotations even if your setup is correct.
Is en-uk a valid hreflang code?
No. Region codes follow ISO 3166-1 Alpha 2, where the United Kingdom is GB, so the correct value is en-gb. Google says UK in hreflang has no effect. The validator only checks the format of codes, so it will not flag en-uk; check region codes by eye.
Should hreflang and canonical point to the same URL?
Each page should canonicalise to itself and reference itself in its hreflang tags. Canonicalising one locale to another tells Google to drop the variant, which defeats the purpose of the cluster.
Why does the validator say the self-reference is missing when it is there?
It compares the URL you entered with each hreflang URL as written, ignoring only a trailing slash. If the page lists itself with a different protocol, host or query string from the one you typed, enter the exact URL from the page's own tag and check again.
Is the validator free, and is my URL stored?
It is free with no signup. Pages are fetched from our server, and it keeps only a short-lived request counter for rate limiting. It does not ask for any personal data.
Run the next check
All 24 free tools- Hreflang Tag GeneratorGenerate checked hreflang tags, sitemap entries or headers.
- On-Page and Indexability AuditCheck each locale's canonical, status and indexability.
- Schema Markup ValidatorValidate the structured data on each language version.
- Meta Tag GeneratorWrite and size titles and descriptions for each locale.
- AI Crawler Access CheckerMake sure every locale's robots.txt lets AI crawlers in.
Correct tags get the right page served.
Authority gets it found.
International SEO usually fails on market-level authority before it fails on tags, but broken tags waste whatever authority you have. Book a free 30-minute call with Sakshi Kumari or Ashish Khan, or see our international SEO services.
A call is not an engagement. We never guarantee rankings or AI citations.




