
Getting your Trinity Audio player ready...
|
Multilingual landing pages matter more than ever in 2025. If you serve both Russian- and English-speaking audiences (RU/EN), the way you structure URLs, declare hreflang
, and set canonicals directly affects which version appears in search, how consistently you’re crawled, and—ultimately—conversions. The rules aren’t complicated, but they must be implemented precisely: clear language URLs, correct reciprocal hreflang
, and self-canonicals per locale. Done right, you reduce bounce from the “wrong” language, improve CTR, and consolidate authority. Google’s own guidance backs this up.
URL architecture for RU/EN
Recommended: language subfolders (/en/
, /ru/
)
For most SMB and mid-market setups, subfolders provide the best mix of SEO momentum and operational simplicity. You keep one domain’s link equity while segmenting content cleanly by language (e.g., example.com/en/…
, example.com/ru/…
). This aligns with Google’s guidance to use different URLs for different languages and avoid dynamic language swapping.
Alternatives: subdomains and ccTLDs
- Subdomains (
en.example.com
,ru.example.com
): viable, but often treated more like separate sites; more overhead for analytics and link equity. - ccTLDs (
example.ru
,example.by
): maximum local trust, but you’ll split authority and operations across multiple sites. Choose ccTLDs only when you have truly country-specific offerings, teams, and budgets.
Google does not require one specific structure; it recommends stable, crawlable, language-specific URLs and discourages content negotiation.
Architecture comparison (RU/EN)
Option | Time-to-launch | Scalability | SEO risk | Analytics & ops |
---|---|---|---|---|
Subfolders /en/ , /ru/ | Fast (1 codebase) | High (add locales as folders) | Low (consolidated authority) | Simple (1 property; easy roll-up) |
Subdomains en. ru. | Medium | Medium | Medium (equity split) | Medium (multiple properties) |
ccTLDs .ru , .by | Slow (legal/hosting) | Medium (per market) | High (authority split per domain) | Complex (separate sites/teams) |

Hreflang best practices
hreflang
tells Google which language/region variant to show and that the pages are alternates of one another. Key rules from Google: use different URLs per language, keep reciprocity (each page lists all alternates and is listed by them), and consider x-default
for language selector pages. (Google for Developers)
Proper locales
- RU:
ru-RU
for Russia-targeted Russian;ru
is acceptable if you don’t target a specific country. - EN: pick one default (
en-US
oren-GB
) based on your primary market. Split later only if you truly localize content (currency, legal, shipping).
Reciprocity + x-default
- Reciprocity: every RU page must link to its EN counterpart(s) and vice versa.
x-default
: use for a language selector or a neutral fallback when no locale matches. It’s designed for selector pages; you can use it elsewhere, but it works best on selectors/home where you route users to the right locale.
HTML <head>
example
<!-- On https://example.com/en/landing/ -->
<link rel="canonical" href="https://example.com/en/landing/">
<link rel="alternate" hreflang="en-US" href="https://example.com/en/landing/">
<link rel="alternate" hreflang="ru-RU" href="https://example.com/ru/landing/">
<link rel="alternate" hreflang="x-default" href="https://example.com/choose-language/">
<!-- On https://example.com/ru/landing/ -->
<link rel="canonical" href="https://example.com/ru/landing/">
<link rel="alternate" hreflang="ru-RU" href="https://example.com/ru/landing/">
<link rel="alternate" hreflang="en-US" href="https://example.com/en/landing/">
<link rel="alternate" hreflang="x-default" href="https://example.com/choose-language/">
(Each page self-canonicals; alternates reference one another and the selector.)
XML sitemap example
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/en/landing/</loc>
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/en/landing/"/>
<xhtml:link rel="alternate" hreflang="ru-RU" href="https://example.com/ru/landing/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/choose-language/"/>
</url>
<url>
<loc>https://example.com/ru/landing/</loc>
<xhtml:link rel="alternate" hreflang="ru-RU" href="https://example.com/ru/landing/"/>
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/en/landing/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/choose-language/"/>
</url>
</urlset>
(HTML or Sitemap or HTTP headers are supported; pick one method you can maintain perfectly.)
Operational rules
- All
hreflang
targets must return 200 and be indexable. - Keep one-to-one RU/EN pairs; don’t point to redirects or non-canonical URLs.
- Update both sides whenever you add or remove a page.
Regional targeting (geotargeting)
What Search Console can/can’t do in 2025
Previously, you could set country targeting in Search Console. This has been deprecated—Google found it had “little value” and removed the feature. Rely on signals like hreflang
, content, and local details instead.
RU/EN strategy: global EN vs split EN-US / EN-GB
- Keep one global EN if your offer, pricing, terms, and messaging are the same.
- Split into EN-US and EN-GB only when content truly differs (currency, phone numbers, legal text, shipping, VAT). Then implement
hreflang
across all variants.
Localize content signals that reinforce targeting
- Currency, units, VAT/tax language; local T&Cs and shipping rules
- Local NAP (address/phone), business hours, and customer support language
- Country-specific trust signals (payment methods, delivery partners)
These are among the signals Google uses, alongsidehreflang
.
Canonical tags
Principles
- Each language page self-canonicals.
- Never canonicalize RU → EN or EN → RU. Those are alternates, not duplicates.
- Use canonical to consolidate URL parameters (e.g., UTMs) and variants within the same locale.
Interplay: canonical vs hreflang
Google expects the canonical to pick the preferred URL within that language, and hreflang
to link across languages/regions. Cross-locale canonicals undermine hreflang
and can cause Google to ignore both signals. Keep them aligned.
Edge cases
- UTMs & filters: canonical to the clean URL (
?utm_source=
etc. should not become canonicals). - Pagination: use rel-prev/next is deprecated; rely on strong internal linking and a canonical to page-specific URLs. (Canonicals still apply.)
Content localization & UX
Translate vs. localize
- Don’t just translate words; localize headlines, proof points, guarantees, pricing, and CTAs for RU vs EN audiences.
- Localize forms (input masks for phone numbers), currency selectors, and policy pages.
Language switcher UX
- Keep the switcher visible (header/footer) and keyboard-accessible.
- Preserve page context: if a user is on
/en/landing/
, switch to/ru/landing/
—not the RU homepage. - The switcher URLs should mirror your
hreflang
alternates. Google advises letting users switch language and avoiding automatic redirects based on guesses.
Structured data & metadata
- Add
inLanguage
(e.g.,"inLanguage": "ru-RU"
or"en-US"
) in relevant schema types, and use language-appropriate<title>
, meta description, and Open Graphog:locale
. (Google relies primarily on page content +hreflang
for language, but correct metadata helps consistency.)
Technical performance for multilingual pages
- Core Web Vitals must stay green per locale—don’t let a RU font or script degrade EN.
- Fonts: preconnect to your font host and serve subsets with
unicode-range
to avoid shipping Cyrillic to EN pages and vice versa. - Critical CSS per locale; cache-bust by language when needed.
- Avoid
Accept-Language
content negotiation or IP-based auto-redirects; use clean, crawlable URLs. Google has long warned locale-adaptive pages can be incompletely indexed, and it recommends separate URLs.
Tracking & reporting
- GA4:
- Create segments by page path (
/ru/
vs/en/
). - Track language switch events (e.g.,
language_switch
, params:from_locale
,to_locale
,page_path
). - Attribute conversions by locale with separate audiences (RU vs EN) to compare funnel performance.
- Create segments by page path (
- Search Console:
- Use the Page indexing and Performance reports filtered by page folder to diagnose RU vs EN.
- Monitor Sitemaps to ensure your hreflang sitemap is fetched without errors.
- Note: the International Targeting report (hreflang error list) was removed—use crawlers and URL Inspection to verify
hreflang
. (Google for Developers, Google Помощь)
Practical value
Pre-launch checklist (multilingual landing pages)
- Decide structure: subfolders
/en/
,/ru/
. - Map one-to-one RU↔EN URL pairs.
- Implement self-canonical per locale.
- Add reciprocal
hreflang
(HTML or XML sitemap). - Ensure all hreflang targets return 200/OK, are indexable, and not canonicalized elsewhere.
- Localize currency, NAP, legal, shipping, and CTAs.
- Add language switcher that preserves context; no auto-redirects.
- Prepare GA4 events for language_switch; build RU/EN segments.
- Validate sitemaps, run a crawl to verify
hreflang
reciprocity.
Post-launch checklist
- Re-crawl key templates; validate
hreflang
pairs and status codes. - Check Search Console Performance by
/ru/
vs/en/
. - Monitor Page indexing for unexpected canonicalization.
- Review CWV per locale; confirm fonts and scripts aren’t bloating one locale.
- QA the language switcher on deep pages and mobile.
Example RU/EN URL mapping table
EN URL | RU URL | Notes |
---|---|---|
/en/ | /ru/ | Root landing pages |
/en/pricing/ | /ru/tseny/ | Currency localized; plan names adapted |
/en/case-studies/ | /ru/keisy/ | Social proof localized |
/en/contact/ | /ru/kontakty/ | RU phone/address |
Code blocks you can copy
HTML (page head)
<link rel="canonical" href="https://{{site}}/en/">
<link rel="alternate" hreflang="en-US" href="https://{{site}}/en/">
<link rel="alternate" hreflang="ru-RU" href="https://{{site}}/ru/">
<link rel="alternate" hreflang="x-default" href="https://{{site}}/choose-language/">
XML sitemap (hreflang)
<url>
<loc>https://{{site}}/en/pricing/</loc>
<xhtml:link rel="alternate" hreflang="en-US" href="https://{{site}}/en/pricing/"/>
<xhtml:link rel="alternate" hreflang="ru-RU" href="https://{{site}}/ru/tseny/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://{{site}}/choose-language/"/>
</url>
(Choose either HTML or Sitemap; both are supported by Google.)
Common mistakes (and quick fixes)
- Cross-locale canonical (RU → EN): remove it; use self-canonicals and
hreflang
for alternates. - No reciprocity (EN lists RU, RU doesn’t list EN): add missing return link(s) in HTML or sitemap.
hreflang
pointing to redirects / 404: fix URLs to 200/OK indexable pages.- Auto-redirects by IP/
Accept-Language
: disable; rely on URLs + switcher. - Mixing
en
anden-US
randomly: standardize your locale set and update all tags. x-default
missing on selector home: add it to your selector page set.
Mini-FAQ (RU/EN multilingual SEO)
1) Should we use IP-based redirects to send RU users to /ru/
?
No. Google advises against automatic redirects based on language/location because they can block crawling and prevent users from viewing all versions. Use explicit URLs and a visible switcher.
2) When should we add x-default
?
On a language selector or neutral page that doesn’t target a specific locale—this acts as a fallback when no other language/region fits.
3) Can a RU page canonicalize to the EN page to consolidate SEO?
No. Each locale must self-canonicalize; use hreflang
to connect alternates. Cross-locale canonicals can cause Google to ignore both signals.
4) Is the Search Console International Targeting setting still available?
No, it’s deprecated. Use hreflang
, localized content, and other signals; monitor via Performance, Sitemaps, and URL Inspection.
5) Do we need the lang
HTML attribute for SEO?
It’s good for accessibility, but Google doesn’t use lang
or hreflang
to detect language—content + hreflang
handle targeting.
6) Can we rely on Accept-Language
content negotiation instead of separate URLs?
Avoid it. Locale-adaptive content risks incomplete indexing; Google recommends separate URLs per language.
7) What about near-duplicate EN-US vs EN-GB pages?
Only split when content truly differs (currency, spelling, legal). If you split, connect with hreflang
and keep self-canonicals.
Conclusion
For RU/EN companies, winning multilingual SEO in 2025 boils down to:
- URL architecture: use
/en/
and/ru/
subfolders to consolidate authority. - Hreflang: implement reciprocal
hreflang
pairs (EN↔RU) and addx-default
on your selector. - Canonical: self-canonical per locale—never cross-canonicalize.
- Localization & UX: localize currency, policies, and CTAs; keep a visible switcher; no auto-redirects.
- Performance & tracking: keep CWV green per locale; track language switches; monitor via Sitemaps/Performance.