Complete hreflang declarations disagree across methods
In the reportHreflang differs across HTML, headers, and sitemap
hreflang_cross_method_conflict · Issue
This appears when a page lists its language versions in more than one place — its HTML, an HTTP Link header or your sitemap — and the lists differ. You are then maintaining several lists that no longer say the same thing. Keep one method, or make every list identical.
Severity: Medium. The lists state different sets of versions for one page; fix them when you next update your language versions.
Why it matters
Google's guide to localized versions calls its three methods — HTML, HTTP headers and sitemaps — equivalent, and says that using several brings no benefit in Search and is harder to manage than picking one.
What to do
- Look at the finding: it shows the list from each place that declared one.
- Choose one method, usually the one your site generates automatically, and remove the others.
- Or, if you keep several, make every list name the same languages and addresses.
What we read
We read the three places where a page can list its language versions: <link rel="alternate" hreflang> tags anywhere in its HTML, an hreflang Link header in its response, and the xhtml:link entries for its address in your sitemaps, each sitemap file on its own. This rule makes no additional request and does not run JavaScript.
The page is judged only when all three were read in full, and reported when at least two of them carry hreflang and their sets of language and address pairs differ; order and repeats do not matter, and a list that leaves out a version counts as different. Each sitemap file is compared on its own.
A page is marked as not checked when one of the three could not be read in full: HTML with unsupported SVG markup, <noscript>, <select> or <math> element anywhere, a page that did not answer 200 or is over 2 MiB, a Link header with a relation we cannot parse, such as one written as an address, or a sitemap file that could not be read in full, which blocks every page. An annotation with an empty, relative or non-web address blocks the page too, until it is fixed.
Example & evidence
Illustrative example — one page listed in two places, not a live audit.
https://bakery.example/en/ has in its HTML:
<link rel="alternate" hreflang="en" href="https://bakery.example/en/">
<link rel="alternate" hreflang="fr" href="https://bakery.example/fr/">and its entry in the sitemap lists:
<xhtml:link rel="alternate" hreflang="en" href="https://bakery.example/en/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://bakery.example/de/"/>The two lists name different versions, so the page is reported with both.
A possible correction: keep hreflang in one place, or list English, French and German in both.
Confirm & check again
Check for yourself: compare the hreflang tags in the page source with the Link header of its response and with its <url> entry in your sitemap.
Check again: Full audit — run a new audit of the site. The finding closes when the page is crawled again, the places this check reads are read in full, and the lists that remain agree, or only one place carries hreflang. Removing the page's hreflang also closes it; a page that cannot be read, or answers 404, keeps the finding open.
Limits & sources
The check shows that the lists differ, not which one is right or which one Google uses. It needs all three read in full, so a difference between the HTML and the header is not reported while a sitemap cannot be read.
Confidence: High because the lists are read directly.
Sources
- Google, Tell Google about localized versions of your page — calls the three methods equivalent and says using several brings no benefit in Search and is harder to manage than picking one. Checked 28 September 2026.
Editorial review: 29 September 2026