Validate the hreflang on every crawled page

Crawl Audit checks each page's hreflang annotations for valid tags, self-reference, x-default, reciprocity, canonical and language agreement and consistency across the set, with per-page errors and warnings and the exact alternate at fault.

Crawl Audit now validates the link rel="alternate" hreflang annotations in every crawled page's HTML, not just whether their targets exist. Each language tag is checked for a form Google accepts (en, en-GB, zh-Hant-TW, x-default; an underscore or a bare region is named as such), every href must be an absolute URL, the page must list itself, a set naming two or more languages should carry an x-default, and no language may point at two different URLs. Between the pages of your site it checks that each pair links back, that the target's canonical is the URL that was linked, that both pages agree on the language of each URL, and that every member of a set declares the same list. Each problem names the alternate, the tag in its canonical form, the href and the target path, so you can go straight to the line that needs fixing. Search-bot activity on each affected page shows which locale pages Google is actually reading.

Errors are annotations Google will likely ignore for that page or pair: an invalid tag, a missing self-reference, a relative href, a duplicated language, a target that does not link back or returns an error. Warnings are documented recommendations or conflicts that commonly cause the wrong page to be shown: no x-default, a noindex page with alternates, a target whose canonical is elsewhere, a language the target disagrees with, or a set that differs within its cluster. Pages with errors are counted; pages with warnings only are still listed so one finding shows the whole picture. Nothing here claims to know which page a search engine will select for a locale.

The check reads the original HTML head only. Alternates added by JavaScript are not seen, HTTP Link headers and sitemap hreflang are reported as unchecked, and nothing is fetched beyond the crawl, so a target outside the crawl or on another host is listed as unchecked rather than broken. The existing Hreflang problems finding is unchanged as the legacy existence check used by crawl comparison. Start a new Salience crawl to collect the evidence; crawls captured before this release show the check as unavailable.

See Crawl Audit help for the full list of problem codes, what each severity means and the fix for each.

← Find missing image descriptions and broken image referencesFind pages that nearly repeat each other →
← All changelog entries