Yandex reads hreflang alternate links — and it opens with a deprecation worth acting on: the sitemap file is no longer supported for language versions. Markup on the page is the supported method.
When alternate links apply
- Pages differing only in interface language — a blog whose posts are untranslated but whose navigation, header and footer change.
- Pages in the same language with minor differences — separate versions for the USA, Ireland and Australia.
- Full, accurate translations of the same page.
- Pages where language is chosen by the
Accept-Languageheader, by IP, or manually — this case needshreflang="x-default".
The markup
<link rel="alternate" hreflang="ru" href="http://ru.example.com/" />
<link rel="alternate" hreflang="en-us" href="http://en.example.com/" />
<link rel="alternate" hreflang="tr-tr" href="http://example.com.tr/" />Language codes from ISO 639-1, region codes from ISO 3166-1 alpha-2. Every version must carry links to all the others, including itself — a partial set is the most common implementation error.
Two facts that widen what is possible
- Structure does not matter. Versions may sit on different subdomains, different domains entirely, or simply in different directories —
/o-kompanii/,/company/about/,/firma-hakkinda— and the attribute works the same way. - Automatic language detection is supported through
x-default, which is the honest declaration for a site that redirects by IP. It does not fix the underlying problem — the robot still sees only one version — but it tells Yandex what the entry point is.
Supported languages
Forty-four, including Turkish, English, Russian, German, Spanish, French, Kazakh, Tatar, Azerbaijani and Arabic. A long list of encodings is supported too, though UTF-8 is the sane choice for anything new.
Where this connects
Yandex’s guidance on redirects warns that IP-based language redirection means the robot only ever sees one version. Alternate links are how you declare the relationship instead — and the pairing of a visible language switch with correct hreflang is the arrangement that actually gets every version indexed.
How we apply this
The two errors we find on every multilingual site are an incomplete link set — each page listing the others but not itself — and hreflang maintained in the sitemap, which Yandex no longer reads. Both are invisible without checking the rendered head of each version. We pair the markup with a real language switch rather than an IP redirect, for the reason Yandex gives elsewhere: the robot arrives from one place and sees one version.
Related services