Trusting a validator that only checks syntax, not the round trip
A methodological failure that makes broken clusters look healthy: validating hreflang with tools that test the wrong thing.
Many popular checkers parse a single page's tags and report "valid" if the codes are well-formed and the URLs resolve. That's necessary but nowhere near sufficient. hreflang correctness is a graph property, not a per-page one — and the failures that actually demote pages live in the graph.
What single-page syntax checks miss:
— Return-tag reciprocity: A references B, but B never references A. Looks fine from A's page alone
— Canonical conflicts: the page is self-canonical or not — a separate signal the hreflang linter often ignores
— Indexability of targets: a referenced URL that's noindex or robots-blocked still has valid syntax
— Content-language mismatch: fr declared on an English page passes every code check
A more rigorous methodology:
— Crawl the whole cluster, follow every hreflang href, and assert bidirectional links across the entire set
— Cross-check each member's canonical against itself
— Verify each target returns 200 and is indexable
— Spot-check declared language against detected content language
Use Search Console's International Targeting / hreflang reporting as the ground-truth signal of what Google actually parsed — but treat its lag as real and confirm against the live source.
Limitation, stated plainly: no tool fully reproduces Google's internal handling, so all validation is a proxy. A graph-level crawl is a much better proxy than a syntax linter — but "validates clean" should never be mistaken for "works." The map is not the territory.
Hreflang Lab
@HreflangLab
Trusting a validator that only checks syntax, not the round trip
Этот пост опубликован в Telegram-канале Hreflang Lab. Подписаться можно по ссылке: @HreflangLab.