International SEO: hreflang without the mess
Serving multiple languages? How hreflang, canonicals, and URL structure work together — and the mistakes that split rankings.

The moment a site serves two languages or markets, a new class of SEO problems appears: which version ranks where, whether translations compete with each other, and why Google shows the English page to Arabic searchers. International SEO is mostly three mechanisms working in agreement — URL structure, hreflang, and canonicals. Mess up their agreement and each quietly undermines the others.
Give every language a clean, consistent home
Each language needs its own crawlable URLs — a subdirectory like /ar/ is the simplest robust pattern. Cookie-based or auto-detected language switching with one shared URL hides your translations from crawlers entirely. Consistency matters more than the specific scheme: pick one pattern and apply it everywhere, as part of your overall site architecture.
Hreflang says "these are the same page in different languages"
Hreflang annotations tell search engines which URLs are language alternates of each other, so the right version appears in the right market. Two rules cover most failures: annotations must be reciprocal (every version lists all versions, including itself), and every page should also declare an x-default for unmatched languages.
Canonicals must agree with hreflang
The classic self-inflicted wound: hreflang declares /ar/services as the Arabic alternate, while its canonical tag points at the English /services. The canonical wins, and the Arabic tree drops out of the index. Every language version must be self-canonical — and this is worth auditing explicitly, because templates love to get it wrong.
What breaks hreflang silently during a redesign
Hreflang usually fails quietly, not with an error message. The most common triggers: a URL structure migration that updates the sitemap but not the hreflang tags baked into a cached template, a locale switcher that changes on the client side after the page has already served its head tags, and a staging-to-production deploy that copies one language's build over another's. None of these throw a visible error — they just slowly drop pages from the index over weeks, which is exactly why hreflang needs a scheduled check, not a one-time setup.
Translate intent, not just words
Real localization re-checks what people in each market actually search for — terms, formats, even which questions matter. A literal translation of an English keyword set often targets phrases nobody types. Apply intent-first keyword research per language, and let titles and descriptions be written, not converted.
Audit like a searcher from each market
Check indexed counts per language section, search your brand from each target market, and confirm the right version appears. Coverage reports segmented by directory reveal whether one language tree is quietly underperforming — the earlier you see it, the cheaper the fix.
Frequently asked questions
Do I need hreflang if I only translate some pages, not the whole site?
Yes, for the pages that exist in both languages. Hreflang only needs to be declared between URLs that are genuine alternates of each other — a page with no translation simply isn't included in that set.
What's the difference between hreflang and a canonical tag?
Canonical says "this is the authoritative version of this exact content." Hreflang says "this other URL is the same content in a different language." They answer different questions, but a self-canonical setup on every language version is what keeps them from contradicting each other.
Why is my Arabic content not showing up for Arabic searches even though it's translated?
The most common causes are a canonical tag pointing back to the English version, missing reciprocal hreflang tags, or content only reachable through JavaScript-based language switching that crawlers never trigger. Check all three before assuming it's a content-quality problem.
Should subdirectories, subdomains, or separate domains be used for different languages?
Subdirectories (like /ar/) are the simplest to maintain and let the whole site share domain authority. Subdomains and separate domains can work but require duplicating a much larger share of technical SEO and authority-building effort per language.
How often should international SEO setup be audited?
Every time the site is redesigned or migrated, and quarterly otherwise. Hreflang and canonical misalignment tend to appear exactly when templates change, which is also when they're least likely to be checked.
Running a multilingual site? Our SEO services include full international audits — get one.
Ready to talk?
Book a 30-minute discovery call. We'll come back with a 90-day plan.