hreflang on a multilingual site, and what AI crawlers do with it
On a multilingual site, hreflang is how you tell a machine which version of a page to read for
a given audience. AI assistants treat it the same way search engines do: it disambiguates two
pages that look nearly identical, and it prevents the English answer from being quoted to a
French reader (or the reverse).
A correct hreflang set is small and boring. Most failures come from three mistakes.
1. The cluster is not reciprocal
Every page in the group must list every other page, including itself. If /fr/ points to
/en/ but /en/ does not point back, the pair is unreliable and often ignored.
for u in https://example.com/ https://example.com/fr/ https://example.com/de/; do
printf "%s\n" "$u"
curl -sS "$u" | grep -o 'hreflang="[^"]*" href="[^"]*"'
done
Each output should name all three URLs. If one page lists fewer, that is the bug.
2. x-default is missing
x-default names the fallback for readers whose language is not in the cluster. Without it, a
machine has to choose, and it may choose the wrong one.
3. The languages do not match the content
hreflang="fr" on a page that is 90% English makes the whole set untrustworthy. If a translation
is partial, say so in the page — do not claim the language.
Where the real cost shows up
Alternate languages are part of check C2 (cross-page consistency) and feed into C1 (title and description): a language cluster whose titles are copy-pasted across locales looks like one page repeated, and an assistant has nothing to choose between. Give each locale its own title and summary — not a translation of the English one, a description of what that page answers.
Practical order of work
- Fix reciprocity first — it is a template change, not a content change.
- Add
x-default. - Make each locale's title and description specific.
- Re-check the cluster with the command above; the output should be identical from every URL.
Multilingual setups rarely fail because of exotic edge cases. They fail because the template lists the alternates in one place and the fallback in another, and the two drifted.