ISO 639-1 vs 639-2: which language code set hreflang accepts
A niche but consequential comparison: hreflang expects ISO 639-1 two-letter codes, yet ISO 639-2/3 three-letter codes exist and tempt people for languages that seem to lack short codes.
What the data and spec say:
— Use the two-letter 639-1 code whenever one exists: en, de, fr, ja. This is the overwhelming majority of cases.
— Three-letter 639-2 codes are valid in BCP 47 (which Google follows) only for languages with no two-letter equivalent — e.g. fil for Filipino, where no 639-1 code exists. Here the three-letter form is correct, not a fallback.
— Mixing — using 'eng' instead of 'en' for English — is invalid and silently ignored, the same quiet failure mode as 'en-UK'.
The nuance: this matters for sites targeting languages outside the common two-letter set. Teams either wrongly force a two-letter code that does not exist, or wrongly use three letters where two exist.
Our tactic: default to two-letter, and only reach for three-letter codes when you have confirmed no 639-1 code is defined for that language. Limitation — coverage of rarer languages in Google's parser is poorly documented; for anything beyond the top fifty languages, validate behavior in Search Console rather than assuming.
Hreflang Lab
@HreflangLab
ISO 639-1 vs 639-2: which language code set hreflang accepts
Этот пост опубликован в Telegram-канале Hreflang Lab. Подписаться можно по ссылке: @HreflangLab.