Bilingual SEO: Hreflang, Canonical and URL Structure Guide
Running an Arabic and English website is easy to get wrong: duplicate pages, wrong-language results and broken hreflang. This guide explains URL structure, hreflang, canonical tags and a checklist for both languages.
Introduction
- The problem: many bilingual sites show the wrong language in search results, or Google treats the Arabic and English pages as confusing duplicates.
- Why it matters: a visitor who lands on the wrong language usually leaves. Clean signals help search engines send each person to the right version.
- What this article covers: how to structure URLs, how hreflang and canonical tags work, how to avoid common errors, and a checklist to test your site.
First, decide what "bilingual" means for your site
| Setup | Description | Typical use |
|---|---|---|
| Fully translated pages | Every page exists in Arabic and English with the same content | Services, company pages, blog |
| Partly translated | Some pages exist in one language only | Local news, region-specific offers |
| Different content per language | Arabic and English pages differ in message or offers | Different audiences or markets |
| One page, language toggle with no separate URL | Content swaps with JavaScript on the same address | Hard for search engines; usually avoid |
The key rule: each language version needs its own crawlable URL. If switching language changes the text but not the address, search engines see only one version.
URL structure options
| Option | Example | Pros | Cons |
|---|---|---|---|
| Subfolder | example.com/ar/ and example.com/en/ | Simple to maintain, shares the domain's strength, easy to track | Same server and hosting for both |
| Subdomain | ar.example.com | Can separate infrastructure | Treated more separately, more setup |
| Country domain | example.om, example.ae | Strong country signal | Costly, each domain builds its own authority |
| URL parameter | example.com/page?lang=ar | Quick to build | Messy, easy to mishandle; generally not recommended |
For most small and mid-size businesses in Oman and the Gulf, subfolders are the practical choice. Keep the structure the same in both languages, so /ar/services/seo pairs with /en/services/seo.
How hreflang works
Hreflang is a tag that tells search engines which language or regional version of a page to show to which user. It does not change rankings by itself; it helps the right version appear for the right person.
The rules
- Every page lists all its language versions, including itself.
- The links must be reciprocal: if the English page points to the Arabic page, the Arabic page must point back.
- Use correct codes:
arfor Arabic,enfor English, orar-OM/en-OMwhen you target a country. Language comes first, then the optional region. - Use full absolute URLs.
- Add an
x-defaultfor pages that serve users who match no version, often your language chooser or main version.
Example in the page head
<link rel="alternate" hreflang="ar" href="https://example.com/ar/services/seo" />
<link rel="alternate" hreflang="en" href="https://example.com/en/services/seo" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/services/seo" />
You can place hreflang in the HTML head, in HTTP headers, or in the XML sitemap. Choose one method and keep it consistent.
Canonical tags and how they relate
A canonical tag tells search engines which URL is the main version of a page when similar versions exist.
- Each language page should usually have a self-referencing canonical: the Arabic page points to itself, the English page to itself.
- Do not point the Arabic canonical to the English page. That tells Google to ignore the Arabic page, and hreflang then conflicts.
- Canonical and hreflang must agree: the URL in hreflang should be the canonical URL of that page.
- Remove tracking parameters and duplicate paths (with and without trailing slash, http and https) with canonicals and redirects.
| Signal | Job | Common error |
|---|---|---|
| hreflang | Match each user to the right language version | Missing return links |
| canonical | Choose the main URL among duplicates | Pointing the translation to another language |
lang attribute | Declares the page language to browsers and tools | Left as en on Arabic pages |
| Sitemap | Lists all URLs, optionally with hreflang | Lists redirected or noindexed URLs |
Language handling that does not hurt SEO
- Do not redirect automatically by browser language or IP. Search engine crawlers may not see all versions, and users may want the other language. Offer a visible language switcher instead; a gentle suggestion banner is safer than a forced redirect.
- Make the switcher link to the equivalent page, not always to the home page.
- Translate everything that matters: title, meta description, headings, image alt text, button labels, schema and error pages.
- Keep the menus and internal links within the same language. An Arabic page should link mostly to Arabic pages.
- Mark untranslated pages honestly. If a page exists only in English, do not create an empty Arabic twin; skip the hreflang for it.
Checklist you can apply today
- Confirm every language version has its own URL, opening without JavaScript.
- Check each page's
<html lang>anddirvalues. - Open one page and verify the hreflang block lists itself and the other language.
- Open the paired page and confirm the links point back.
- Confirm each page's canonical points to its own URL.
- Check the sitemap contains both language URLs and no redirected or blocked ones.
- Search
site:yourdomain.comand see whether the wrong language appears for a query in the other language. - In Google Search Console, review the pages report for "duplicate" or "alternate page with proper canonical tag" notes and check they make sense.
- Test the language switcher from five different pages.
Common mistakes
- Missing return links in hreflang, so the signal is ignored.
- Wrong language codes, such as
ar-SAfor a page that targets all Arabic speakers, or invented codes. - Canonical to the English page from every Arabic page.
- Hreflang pointing to redirected or noindexed URLs.
- Auto-redirecting visitors by location, hiding versions from crawlers.
- Translated text but untranslated titles and descriptions.
- Different structures per language, so pairs cannot be matched.
- Assuming hreflang boosts rankings. It guides which version appears; it is not a ranking trick.
What does Xposio do?
- We map your pages to their equivalents in Arabic and English before touching any tag, so every page has a clear pair or a clear exception.
- We design a clean subfolder structure and decide the canonical rules with you.
- We implement hreflang,
langanddir, and sitemap entries consistently, then test the reciprocal links. - We review titles, descriptions, alt text and schema in both languages so the translation is complete.
- We watch Search Console after launch for duplicate or wrong-language signals and fix what we find, being honest that search engines may take time to reflect changes.
Internal link: Learn about the Technical SEO service at
/en/services/technical-seoand the Website Design & Development service at/en/services/website-design-development.
For the Arabic-specific side of search, see /en/blog/arabic-seo-challenges.
Conclusion
- Give every language version its own crawlable URL, ideally in subfolders such as
/ar/and/en/. - Use hreflang with return links, correct codes and an
x-defaultwhere it makes sense. - Give each page a self-referencing canonical that agrees with its hreflang.
- Avoid forced redirects by language or location; offer a clear switcher.
- Translate titles, descriptions, alt text and schema, not only the visible text.
- Hreflang guides which version shows; it does not guarantee rankings.
Related reading
Frequently asked questions
+What is hreflang and do I need it?
Hreflang is a tag that tells search engines which language version of a page suits which user. If your site has the same content in Arabic and English, it is strongly recommended.
+Should I use subfolders, subdomains or separate domains for Arabic and English?
For most small and mid-size businesses, subfolders like /ar/ and /en/ are the simplest to maintain and track. Separate country domains can send strong signals but cost more and split authority.
+Should the Arabic page canonical point to the English page?
No. Each language page should normally have a canonical that points to itself. Pointing it to another language tells search engines to ignore the Arabic page.
+Can I redirect users automatically based on their browser language?
It is safer not to. Crawlers and some users may never reach other versions. Offer a visible language switcher or a polite suggestion banner instead.
+Does hreflang improve my Google ranking?
Not directly. It helps the right language version appear for the right user and reduces confusion between versions, but it is not a ranking booster.
+How long until hreflang changes take effect?
It depends on how often Google recrawls your pages, so it can take days or weeks. Check Search Console after publishing and be patient before changing things again.
Ready to apply what you read?
Let's build your next digital project together.
