Hreflang Lab
Hreflang Lab
@HreflangLab

<b>When hreflang and canonical fight, hreflang loses</b>

<b>When hreflang and canonical fight, hreflang loses</b>

A conflict pattern worth understanding precisely, because it silently deletes pages from international results.

The scenario: /fr/ and /fr-ca/ are near-identical. To manage duplicate content, someone sets a canonical on /fr-ca/ pointing to /fr/. Simultaneously, the hreflang cluster lists both as distinct alternates.

What happens: the canonical wins. By declaring /fr-ca/ a duplicate of /fr/, you've told Google /fr-ca/ should not be indexed as itself. Its hreflang annotation now points to a URL Google has been instructed to ignore. The Canadian-French targeting evaporates.

The rule that resolves it: every page in an hreflang cluster must be self-canonical. Canonical and hreflang must agree. Cross-canonicalizing between language or region variants is almost always a mistake — they are not duplicates in Google's international model; they are alternates.

The legitimate exception: if /fr/ and /fr-ca/ truly are identical with nothing region-specific, the correct fix is to delete /fr-ca/ entirely and let <code>fr</code> serve both, not to keep two URLs glued by a canonical.

Diagnostic: for each cluster member, confirm <code>rel=canonical</code> is self-referential. Any cross-pointing canonical inside an hreflang set is the bug.

Caveat we flag: parameter-based duplicates (sort, session) should still canonicalize to the clean URL — that's orthogonal to the language cluster and not what this warning is about.
Этот пост опубликован в Telegram-канале Hreflang Lab. Подписаться можно по ссылке: @HreflangLab.
start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @dumay. Быстрый тест: $20 за канал, $1000 за пакет по сети.