writing · .0003 · 2026
two languages, one canonical, and a site quietly competing against itself.
a bilingual manufacturer with french and english versions of every page, and rankings that would not hold. pages appeared and disappeared. the wrong language surfaced for the wrong region. nothing was technically broken in a way that threw an error.
canonical tags pointing across languages. when the french page declares the english page canonical, you have told the crawler the french page is a duplicate and should not be indexed on its own. every french url then competes with an english one it has been told it is a copy of.
each language version is canonical to itself, and the relationship between them is declared with hreflang rather than with canonical. canonical says this is the same page. hreflang says these are the same content for different audiences. they are not interchangeable and using the first where you meant the second de-indexes half your site.
the return tags have to be reciprocal. if the english page points at the french as an alternate, the french has to point back. a one way declaration is ignored, and being ignored looks identical to working.