---
title: "Free Hreflang Checker — Validate Tags Against Spec"
description: "Free hreflang validator. Scans any page for hreflang tags, flags invalid language codes, missing self-refs, x-default, duplicates, http/https mismatch. No…"
canonical: "https://lemwatch.com/tools/hreflang-checker"
source: "https://lemwatch.com"
---

# hreflang checker

> Scan any URL for hreflang tags and validate them against the spec. Catches missing self-references, missing x-default, invalid language codes, duplicate targets, and protocol mismatches.

## What this tool checks

- Every <link rel="alternate" hreflang="…"> tag in the HTML head
- BCP-47 validity of each hreflang value
- Self-reference (the page must list itself)
- Presence of x-default for global / language-picker pages
- Duplicate hreflang values pointing at different URLs
- Mixed http: / https: targets across the cluster
- Total tag count and per-language coverage

## Why it matters

 Hreflang is the single most error-prone signal in international SEO. A broken cluster sends Spanish visitors the English page and vice versa, splits ranking signals across duplicate URLs, and triggers Search Console warnings that take weeks to clear. Google estimates over 60% of multi-region sites have hreflang errors. This tool catches every error class on one page in one click.

## How to fix what it finds

- Add a self-referencing hreflang on every page in the cluster
- Fix any invalid language codes to standard BCP-47 (e.g. "en-US", not "en_us")
- Pick one canonical target per (language, region) and update all duplicates
- Add an x-default if you have a global / language-picker landing page
- Normalise every target to https — never mix protocols
- Re-run the test on at least three pages in the cluster (some / each language) to confirm symmetry

## Methodology

 We issue a single HTTPS GET against the URL you enter (following redirects, 10-second timeout, 600 KB body cap) and scan the raw HTML for every <link rel="alternate" hreflang="…"> tag. We do not execute JavaScript — hreflang must be present in the server-rendered HTML to be discoverable, and any tags injected client-side will not be seen by Google either. Each tag is validated against a light BCP-47 regex covering the patterns Google documents: 2- or 3-letter language, optional script, optional region. We then cross-check the set: self-reference, duplicates, x-default, and protocol mix. The score deducts 25 per error and 8 per warning, capped at 0–100.

## Frequently asked questions

### What is hreflang and why does it matter?

 Hreflang is an HTML tag that tells Google "this page has equivalent versions in other languages or regions at these URLs." It prevents duplicate-content penalties, ensures the right version ranks for the right user, and consolidates link equity across language variants.

### Why is my self-reference missing?

 Most CMSs generate hreflang for sister pages but forget the current page. Google requires every page in a cluster to list itself. Without it, the cluster is treated as broken and Google falls back to its own guess at which version to show.

### Do I need x-default?

 Only if you have a generic landing page (e.g. example.com/ that auto-detects language) or a language-picker page. x-default tells Google "show this version when the user's language does not match any of the others."

### Does hreflang work with canonical tags?

 Yes — they coexist. Each hreflang variant should canonicalise to itself, not to a single master version. Self-canonical + hreflang cluster = the correct setup.

### Why are my hreflang tags being ignored?

 Three common causes: (1) tags injected by JavaScript only — Google's crawler may not see them; (2) tags reference URLs that 404 or redirect; (3) the cluster is missing reciprocal references on the linked pages. Fix all three.

### Can I use hreflang in the sitemap instead?

 Yes — hreflang can live in HTML <link> tags, HTTP headers, or sitemap.xml. Pick one method; mixing them causes Google to use the most recently parsed signal and is a common source of bugs.


## Related

- [All free tools](https://lemwatch.com/tools)
- [noindex checker](https://lemwatch.com/tools/indexability-checker)
- [canonical tag checker](https://lemwatch.com/tools/canonical-checker)
- [Sitemap Checker](https://lemwatch.com/tools/sitemap-checker)
- [domain age checker](https://lemwatch.com/tools/domain-age-checker)
- [Lemwatch pricing](https://lemwatch.com/pricing)
- [All monitoring checks](https://lemwatch.com/features)
- [HTML Validator](https://lemwatch.com/tools/html-validator)
