hreflang
Tool
An attribute telling search engines that language versions of the same content are counterparts, and which language each one is for.
Why it exists
Publishing one piece of content in two languages creates two problems on the search engine's side. The first is that it doesn't see them as counterparts and treats them as competing pages. The text is nearly identical, so it picks one as the representative and sets the other aside.
The second is showing the wrong one. Someone searching in Korean from Korea who lands on the English version usually goes straight back. The page they wanted exists; they just never reached it. Traffic arrives and bounces, which reads like a content problem rather than a routing one.
So an attribute appeared that records, on each page, its own language and the addresses of its counterparts.
What it solves
Three things.
- It pairs the versions. Every page lists the address and language of every version, including itself. If the Korean page points at the English one but the English page doesn't point back, the search engine ignores the declaration entirely. Reciprocity is the only verification this attribute has.
- It separates language from region. The value carries a language code alone, or a language and a region together. When there's no reason to split by region, the language code is enough.
- It sets a fallback for people whose language isn't listed. A separate value names the page to serve them. Leave it out and the search engine guesses.
There are three places to put it: a tag in the page head, an HTTP response header, or the sitemap. With two languages and twenty pages the tag is easiest; with five languages and thousands of pages the sitemap is easier to maintain. And if the page can't get past crawling in the first place, the attribute never gets read at all.
Four mistakes recur: omitting the reciprocal reference, leaving the page itself off its own list, using a country code where a language code belongs (kr is a country; the language is ko), and pointing at a counterpart address that redirects or no longer exists.
How it sounds at work
"The English page has no declaration pointing back at the Korean one. That makes it inert."
Without the reciprocal reference the attribute doesn't work at all.
"At five languages this isn't maintainable as tags. Let's move it to the sitemap."
Match where you put it to the page count and the language count.
"I searched from Korea and got the English page. Check the hreflang."
Start with this attribute when the wrong language version is surfacing.
Pagedeck did this work while publishing its help documentation in English alongside Korean. Ravi watched Korean traffic to those docs fall for two months, checked the search results, and found more than thirty topics where only the English version appeared. Theo added reciprocal references to both versions and set English as the fallback. Adjusting the wording for each language — localization — was the next quarter's work.
Where to go next
- Technical SEO
see which of the six groups this attribute belongs to
- Crawling
see the step that has to pass before any of this gets read
- Localization
see what changes in each language once the pairing is in place
Last updated 2026-09-16