301→302301→302
A temporary redirect where a permanent one belongs.
Found by Redirect checker →
redirect loopredirect loop
The URL redirects back to itself and never settles.
Found by Redirect checker →
Audit

Hreflang checker

Validate hreflang on a single URL or across a crawl: language and region codes, return links, self references, x-default and alternates that redirect or are noindex.

Hreflang checker

Across the whole set

Return-link and confirmation checks need the whole crawl, so they run on the graph rather than one page.

Hreflang checker

Single URL

hreflang-check inspects one page and its declared alternates.

How it works

Three steps, one saved scan

  1. Check one URL live

    hreflang-check fetches the page, follows redirects and reads the alternate links in its HTML. It checks codes, self-reference, duplicates and x-default.

  2. Check the set across a crawl

    Return links, broken or redirecting targets and noindex targets need every page in the set. These run on the crawl graph, not on one page.

  3. Fix the pairs and re-check

    Each finding names the page and the alternate it concerns. Correct the annotation on the site, then run the check again.

What it checks

Checks in this feature

CheckWhat it meansSeverityEvidence
HREFLANG_MISSING_RETURN_LINKAnother page names this URL in its hreflang, but this page does not point backImportantSource page and the alternate that lacks the reciprocal link (crawl)
HREFLANG_BROKEN_TARGETAn alternate URL answers with a 3xx, 4xx or 5xx statusImportantTarget URL and its status code (crawl)
HREFLANG_NOINDEX_TARGETAn alternate URL carries a noindex directiveImportantTarget URL and the noindex signal (crawl)
HREFLANG_INVALID_CODEA language or region value is not a valid ISO 639-1, ISO 15924 or ISO 3166-1 code, for example en-UKImportantThe raw hreflang value and the page it sits on (single URL: 'malformed hreflang code')
HREFLANG_MISSING_SELF_REFERENCEThe page has alternates but none of them is its own URLImportantThe page URL and its alternate list (single URL: 'page does not self-reference')
HREFLANG_MULTIPLE_ENTRIESThe same language and region value appears more than once on one pageImportantThe repeated value and its hrefs (single URL: 'duplicate hreflang')
HREFLANG_MISSING_XDEFAULTThe set has no x-default fallback for users whose language matches no alternateTipThe page and its alternate list (single URL: 'no x-default alternate')
How to run it

One command

bash
seohead hreflang-check --url https://example.com/en/

Install first: installation guide. Every command also runs as an MCP tool for AI agents.

Related checks

From the check registry

HREFLANG_ERRORHREFLANG_MISSING_RETURN_LINKHREFLANG_INVALID_CODEHREFLANG_MISSING_XDEFAULTHREFLANG_BROKEN_TARGET
FAQ

Questions

Hreflang checker
No. It reads the page's own alternate links and checks their codes, duplicates, x-default and the page's self-reference. It does not request each alternate, so broken, redirecting or noindex targets and missing return links need a crawl.
No. The check sends read-only GET requests. Nothing is written to the site.
A language code from ISO 639-1, optionally followed by a script from ISO 15924, then a region from ISO 3166-1 alpha-2 or UN M.49. Codes are case-insensitive, so en-us and en-US are the same value.
The single-URL check reads only the link elements in the HTML response. Hreflang declared in a sitemap or an HTTP Link header is not read by this command.
The check reports the HTTP status and says there were no annotations to check. A 4xx or 5xx page never shows as a clean result.

Check your redirects locally