I am writing this for owners of multilingual and multi-regional websites, content managers, and SEOs who care not about likes but about organic traffic and conversion. In this article, I will break down how hreflang and alternate attributes save your traffic and reduce the percentage of non-targeted impressions. The way it should work is this: a user from Ukraine sees the Ukrainian or a version relevant to them without any unnecessary hassle. Simply put, you will stop cannibalizing search results and start ranking where you intended.
Quick answer
Hreflang tells search engines which language or regional version of a page to show to a user. The working scheme is simple: mutual rel=”alternate” hreflang tags between equivalent pages plus a proper canonical within each version. I don’t believe in feelings – I believe in data. After implementation, we look at the share of sessions by target countries and the drop in impressions from non-target ones.
Quick instructions:
- Create a URL mapping for all languages and regions
- Choose the hreflang implementation method: head, sitemap, or HTTP headers
- Add mutual rel=”alternate” hreflang links between equivalent pages, add x-default for the selector
- Check that the canonical inside each version points to itself
- Validate using a crawler and URL inspection tool, fix 4xx errors and mismatches
- Track metrics in GA4 and Search Console by country and page
What is the hreflang attribute
Hreflang is an instruction for search engines that links equivalent pages in different languages and for different regions. The formula is simple: metrics first, emotions second – the goal is to reduce non-targeted impressions and deliver the relevant version to the right audience. The attribute works together with rel=”alternate” and does not replace canonical – it helps with ranking without duplicates. We don’t look at likes but at numbers – the share of target traffic by country should grow by at least 10-20 percent after proper implementation.
If you want this to work without surprises – create a page mapping in advance.
What hreflang looks like
A basic line in the head looks like this: <link rel=”alternate” href=”https://example.com/ua/product” hreflang=”uk-UA”>. For the English version for Ukraine: <link rel=”alternate” href=”https://example.com/en-ua/product” hreflang=”en-UA”>, for the default selector page: <link rel=”alternate” href=”https://example.com/lang” hreflang=”x-default”>. You can also duplicate it in the sitemap: <xhtml:link rel=”alternate” hreflang=”uk-UA” href=”https://example.com/ua/product”/> inside each <url>. Don’t overcomplicate what can be done in an hour – the format is the same, the main thing is to ensure mutual links between versions.
Simply put, your bottleneck is here – there is no backlink from each version to every other version.
Hreflang and alternate attributes – why and how to use them for SEO
The goal is to tell Google the correct version of a page for a specific locale and stop competing with yourself. This is not theory but a working pattern: set mutual rel=”alternate” hreflang between equivalent pages and keep self-canonical within each locale. On my marketplace project with uk-UA, ru-UA, and en-UA, this gave +12-18 percent organic traffic from Ukraine and a minus 35 percent drop in impressions of the wrong locale pages within 28 days. This might sound harsh, but honestly – if less than 90 percent of your pages have valid hreflang according to your mapping, you are losing traffic for no reason.
Ready to implement? First, run your URL map through a validator and a logical reciprocity test.
| Scenario | Correct | Incorrect | Why |
|---|---|---|---|
| Ukrainian and English versions of the same product card | uk-UA and en-UA link to each other, self-canonical in each version | Both versions canonicalize to a single English page | Canonical breaks the locale signal and consolidates versions into one cluster |
| There is a language selector page | x-default points to the selector, all locales point to x-default | x-default points to the main uk-UA page, no reciprocity | The selector must be neutral, otherwise traffic aggregation goes to a single locale |
| Using only the country code | hreflang=”uk-UA” for Ukrainian language in Ukraine | hreflang=”UA” without language | Requires language code, region optional – a region without language is invalid |
| PDF price lists by locale | Alternatives in HTTP Link headers with hreflang | Hreflang only in HTML head, PDF has no head | For binary files, use headers, otherwise the signal is not read |
| Partially translated content | Link only truly equivalent pages | Linked different pages just for the sake of having the tag | The algorithm detects the mismatch and ignores the signal, soft duplicates increase |
When not to use the hreflang attribute
If you have one language and one target country – extra tags just add noise to the markup. Do not link pages that are not equivalent in meaning, even if they show the same product – different configurations or prices break expectations. When you intentionally want to canonicalize to one version for weight consolidation, hreflang gets in the way and creates a signal conflict. First, clean up the noise in analytics, then draw conclusions – if non-targeted impressions are below 3 percent and CTR for the target country is above 4 percent, the benefits of implementation may be lower than the costs.
If in doubt – prioritize canonical and leave multilingual aspects for the next sprint.
Checklist: Testing hreflang on your site
Now follow the steps without chaos: check reciprocity, locale consistency, canonical, status codes, and only then push to production. In Search Console, go to Indexing – URL Inspection – View crawled page and verify the found alternatives. In GA4, go to Reports – Acquisition – Traffic – By country and interface language, look at the target country share and anomalies. If the numbers don’t move, you didn’t implement – you just read about it. Expectation minus reality often comes down to the URL mapping.
Do this today – it’s basic hygiene for multilingual projects.
- You have a URL mapping for all locales without gaps
- Each locale links to all other equivalent versions and back
- Each version has a self-canonical, no cross-canonical to another locale
- x-default is specified for the selector page or a neutral version
- No 4xx or 5xx errors on alternative links
- Hreflang is duplicated in the sitemap for each URL if using the sitemap method
- For PDF and other files, the Link HTTP header is set
- All locale codes use ISO 639-1 for language and ISO 3166-1 for region
- In GA4, the target country accounts for at least 80 percent of impressions for the target locale
- No spike in duplicate pages in Search Console after release
Hreflang and alternate attributes – why and how to use them for multi-regional sites
Multi-regional means you target multiple countries, often with different currencies and conditions. The way it should work is this: you either use subdirectories like /ua, /pl, /de, or subdomains like ua.example.com, and each regional version is linked with hreflang according to its locale. If you have ccTLDs like example.ua and example.pl, it is especially important to link equivalent pages to avoid mutual cannibalization of brand queries. This is where most people fail – they mix geo and language, use en-UA instead of uk-UA, and lose CTR.
Choose your architecture in advance – the table below will help you decide without arguments.
| Method | Where it is set | When to choose | Risks |
|---|---|---|---|
| Head tags | HTML templates | Small sites up to 50k URLs, fast deployment | Risk of desynchronization between versions during partial releases |
| Sitemap with xhtml:link | Sitemap.xml file | Large sites, easier to generate in batches | Any broken link in the map breaks connectivity in batches |
| HTTP Link headers | Web server, CDN | PDFs, images, dynamic pages without a head | Harder to debug, requires logging and response inspection |
| Country subdirectories | example.com/ua, /pl | Single domain, consolidated link equity, centralized SEO | Need to clearly separate currencies and content, otherwise duplicates |
Relevant headline, not just a summary – final points on hreflang
The conclusion is simple: you have already seen why and how to use hreflang and alternate attributes above – now either you implement them, or you pay with reach. My methodology is this: first measure the baseline, set thresholds, then roll out the release on 10 percent of URLs and watch the dynamics by target country. Critical: the share of pages with valid hreflang should be 95 percent+, non-targeted impressions on product pages below 5 percent, CTR for the target country growing by at least 0.5-1.5 points. If you see the opposite – roll back the release, check the bot request log, verify your mapping and canonicals.
The formula is simple – metrics first, emotions second.
FAQ: What to do if there are many languages and some pages are missing
Only link truly existing equivalents, do not point to empty or future URLs. Use the minimum viable set principle and scale as you go.
FAQ: Is hreflang needed for locales within the same country, e.g., uk-UA and ru-UA
Yes, if you actually support both language versions for Ukraine. Ensure accurate locale encoding and mutual linking.
FAQ: Does hreflang conflict with canonical
No, if each locale has a self-canonical. The conflict starts when canonical points to another locale and nullifies the hreflang signal.
FAQ: What to look at in Search Console after implementation
Check Indexing – Pages and canonical URL selection, and use URL Inspection to inspect alternatives. Monitor impressions and CTR by country in Performance – Search results – Pages – Countries.
Case study: how it looked on my real project
An e-commerce site with uk-UA, ru-UA, and en-UA, 42k pages, subdirectory architecture. After re-releasing with a correct hreflang mapping and self-canonical in each locale, we gained +12-18 percent organic traffic from Ukraine, -35 percent impressions from non-target countries, and a 1.1 point increase in CTR for brand queries in 28 days – either you do this, or you pay with reach.
Methodology and thresholds I look at
Metrics: share of valid hreflang links according to the map – 95 percent+, non-targeted impressions on key templates below 5 percent, share of sessions from target country growing by 10 percent+, stable canonical URL without drama. Simply put, your bottleneck is here – no reciprocity or canonical pointing to the wrong place.
Where to read official documentation without myths
Google Search Central: localized versions and consolidation of duplicates and canonical. This is the foundation I rely on in audits.
Glossary
- Hreflang – attribute for specifying language and regional alternatives of a page
- rel=”alternate” – link type that links equivalent versions of pages
- x-default – hreflang value for a neutral page, usually the language selector
- Canonical – tag that specifies the canonical version within a duplicate cluster
- Locale – combination of language and country in the format language-REGION, e.g., uk-UA
- Equivalent pages – pages with the same user intent and structure, but different locale
- HTTP Link header – a way to set hreflang for files without a head, e.g., PDFs
- Sitemap xhtml:link – format for specifying alternative versions in a sitemap
- Multi-regional – targeting multiple countries with possible differences in terms
- Multilingual – support for multiple languages for one or different countries