<b>hreflang vs the content-language meta tag vs HTML lang</b>
Three language signals, frequently conflated, with very different scopes. Clarifying which does what resolves a surprising number of audit findings.
The three:
— <code>hreflang</code>: a <i>between-page</i> signal. It says "these distinct URLs are localized equivalents; serve the right one per user." It does nothing for a single standalone page.
— HTML <code>lang</code> attribute (<code><html lang="de"></code>): a <i>within-page</i> signal, primarily for accessibility (screen-reader pronunciation) and browser behavior. Google largely ignores it for ranking/serving but it's correct practice and cheap.
— <code>content-language</code> meta / HTTP header: a legacy within-page signal. Google has stated it doesn't use it for language determination. Harmless but not load-bearing.
The practical hierarchy: hreflang does the international serving work. The <code>lang</code> attribute is good hygiene for accessibility and won't hurt. <code>content-language</code> is optional and inert for Google.
Where confusion causes harm: teams set <code>content-language</code> meticulously, skip hreflang, and wonder why localized serving doesn't happen. The meta tag was never going to do that job — it has no cross-URL knowledge.
A subtlety: Google actually determines a page's language from its visible content, not from any of these tags. So all three are declarations, not commands — and hreflang is the only one that operates across the cluster.
Caveat: this is Google-specific. Other search engines (notably Yandex) weight these signals differently, so the inert-for-Google verdict isn't universal.
Hreflang Lab
@HreflangLab
<b>hreflang vs the content-language meta tag vs HTML lang</b>
Этот пост опубликован в Telegram-канале Hreflang Lab. Подписаться можно по ссылке: @HreflangLab.