- Hreflang doesn't boost rankings. It swaps in the right language and country version once a page already ranks.
- Use two-letter ISO codes: ar-SA, ar-AE, en-SA, en-AE. Add ar as an Arabic fallback and x-default for everyone else.
- Every version lists the whole set, itself included. A missing return tag makes Google ignore the pair.
- Pick one method. Head tags suit small stores, while an XML sitemap scales best for big catalogues.
- Never force geo-redirects, and never canonicalise ar-AE to ar-SA. Both quietly cancel your hreflang.
Your Arabic product page ranks in Riyadh. Then a Saudi shopper clicks and lands on the English UAE version, priced in dirhams.
Hreflang fixes that. It's a small tag that tells Google which language and country version of a page to show each searcher.
Gulf stores need it more than most, because one product often lives at four URLs: Arabic and English, for Saudi Arabia and the UAE.
Here's which codes to use, how to add them on any platform, how to test them and the mistakes that switch them off. It's part of our ecommerce SEO guides.
What does hreflang do?
Hreflang is an HTML attribute that links the language and country versions of one page. Each version carries a list of all the others.
Google uses that list to swap in the right version. If your English page ranks for a Saudi Arabic search, Google shows the ar-SA page in its place.
What it doesn't do:
- It doesn't boost rankings. Google ranks the strongest version, then swaps the locale. Authority isn't passed through the tag.
- It doesn't set the language. Google reads the language from the visible text. An English page tagged
arstays English. - It isn't a command. It's a strong signal, so broken or conflicting signals make Google ignore it.
Which hreflang codes does a Gulf store need?
A code is a two-letter language (ISO 639-1), optionally followed by a two-letter country (ISO 3166-1). Codes aren't case-sensitive, but ar-SA is the readable convention.
| Code | Who it targets | When to use it |
|---|---|---|
ar-SA | Arabic speakers in Saudi Arabia | Saudi prices in SAR |
en-SA | English speakers in Saudi Arabia | Brand, model and expat searches |
ar-AE | Arabic speakers in the UAE | UAE prices in AED |
en-AE | English speakers in the UAE | Usually your biggest UAE version |
ar | Arabic speakers anywhere | Fallback for Kuwait, Qatar, Bahrain, Oman |
x-default | Everyone with no match | Your global or selector page |
Google picks the most specific match. An Arabic searcher in Kuwait finds no ar-KW, so gets ar. A French speaker in Dubai matches nothing, so gets x-default.
The codes people get wrong are country codes. ar-KSA and ar-UAE are invalid, so Google ignores them. Use ar-SA and ar-AE, and never a country alone, like AE.
Language-only or language and country?
Use language-only codes (ar, en) when every Gulf shopper sees the same price, currency and delivery promise. One Arabic page serves them all.
Switch to language and country codes once those differ, as they do for most stores selling in both Saudi Arabia and the UAE. Then ar-SA and ar-AE each point at a page with its own prices.
Subfolders, subdomains or ccTLDs: does it change hreflang?
No. Hreflang works the same way whether your versions live in /ar-sa/ folders, on ar.store.com or on separate country domains like store.sa and store.ae.
What changes is the upkeep. Subfolders keep everything on one domain, which is why they're the default for most Gulf stores. Subdomains work too, but offer no advantage over subfolders.
Country domains need care. A .sa domain already signals Saudi Arabia, but you still need hreflang between store.sa and store.ae. Both are in Arabic, and Google can't guess which shopper gets which.
Cross-domain hreflang works fine, as long as both domains carry the return tags. Still choosing a structure? Our bilingual SEO guide compares every option.
Three ways to add hreflang
You can place hreflang tags in the page head, in an HTTP header or in your XML sitemap. Pick one. Using two adds nothing and doubles the chance of a mismatch.
1. Page head
The simplest method, and the one most platforms use. Every version of the page carries the same block:
<link rel="alternate" hreflang="ar-SA" href="https://store.com/ar-sa/products/oud-perfume" />
<link rel="alternate" hreflang="en-SA" href="https://store.com/en-sa/products/oud-perfume" />
<link rel="alternate" hreflang="ar-AE" href="https://store.com/ar-ae/products/oud-perfume" />
<link rel="alternate" hreflang="en-AE" href="https://store.com/en-ae/products/oud-perfume" />
<link rel="alternate" hreflang="x-default" href="https://store.com/products/oud-perfume" />
Want a Gulf-wide Arabic fallback? Add a sixth line with hreflang="ar" pointing at your main Arabic URL, usually the /ar-sa/ page.
2. HTTP header
Use it only for files without an HTML head, such as an Arabic PDF catalogue or size guide:
Link: <https://store.com/ar-sa/catalogue.pdf>; rel="alternate"; hreflang="ar-SA", <https://store.com/en-sa/catalogue.pdf>; rel="alternate"; hreflang="en-SA"
The whole set goes on one header line, separated by commas, and both files send the same header.
3. XML sitemap
Each url entry lists the full set with xhtml:link lines, and every URL in the set gets its own entry. Nothing is added to the page itself:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://store.com/ar-sa/products/oud-perfume</loc>
<xhtml:link rel="alternate" hreflang="ar-SA" href="https://store.com/ar-sa/products/oud-perfume" />
<xhtml:link rel="alternate" hreflang="en-SA" href="https://store.com/en-sa/products/oud-perfume" />
<xhtml:link rel="alternate" hreflang="ar-AE" href="https://store.com/ar-ae/products/oud-perfume" />
<xhtml:link rel="alternate" hreflang="en-AE" href="https://store.com/en-ae/products/oud-perfume" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://store.com/products/oud-perfume" />
</url>
<!-- repeat the url block for en-sa, ar-ae, en-ae and the x-default URL -->
</urlset>
Worked example: when the sitemap wins
Say you sell 500 products. Each has four locale versions plus an x-default page, so that's 2,500 product URLs.
Every URL carries all five tags, so you're managing 12,500 hreflang lines. The ar fallback adds one more line per URL.
In the page head, those lines load with every page view. In a sitemap, they live in one generated file. Adding Kuwait later means changing one generator, not every page template.
The rules: return tags, self-reference and canonicals
Most broken hreflang comes down to three rules. Get these right and the rest is detail:
- Return tags. If the ar-SA page lists en-SA, the en-SA page must list ar-SA. Without the return link, Google ignores the pair.
- Self-reference. Each version lists itself as well as the others, so every page carries the identical set.
- Canonical match. Every URL in the set returns a 200 status, is indexable and has a canonical tag pointing to itself.
The canonical rule catches many Gulf stores. If /ar-ae/ carries a canonical pointing to /ar-sa/, you've told Google the UAE page is a copy. Google drops it, and its hreflang goes with it.
Hreflang on Shopify, Salla, Zid and WooCommerce
Most Gulf platforms write hreflang for you once a second language is live. Your job is to check the output:
Shopify Markets writes hreflang tags and per-language sitemaps automatically for subfolders like /ar-sa/ on a custom domain.
- Watch for a second set of tags from an old translation app or theme snippet.
- Markets you delete take their URLs, and their tags, with them.
On Shopify, the step-by-step setup lives in our Shopify Arabic SEO guide. For the platforms themselves, see our guides to Salla, Zid and WooCommerce.
How to check your hreflang
Don't trust a platform setting until you've seen the tags. Here's a 15-minute check:
- 1
View the page source
Open a product page, press Ctrl+U (Cmd+Option+U on a Mac) and search for hreflang. You should see one tag per version, plus x-default.
- 2
Check the return side
Open each URL in the set and confirm it lists the same tags. Mismatched sets are the most common error.
- 3
Inspect the rendered page
In Search Console, run URL Inspection, open the crawled page and check its HTML. Tags added by apps or scripts must appear here.
- 4
Crawl the whole store
Run Screaming Frog or Ahrefs Site Audit. They flag missing return tags, invalid codes and hreflang pointing at redirects or non-canonical URLs.
- 5
Watch the results
Search Console retired its International Targeting report in 2022, so filter the Performance report by country and page folder. Arabic queries landing on /en-ae/ pages mean something's off.

Common hreflang mistakes on Gulf stores
These five switch hreflang off without any error message:
- Forced geo-redirects. An app that sends every Saudi IP to
/ar-sa/also redirects Googlebot, which crawls mostly from the US. Google may never see your other versions. Show a dismissible banner suggesting the better version instead. - Missing return links. Usually caused by translating some products but not others, then tagging only one side.
- Tags on filtered or paginated URLs. Category URLs with
?sort=or?page=often canonicalise elsewhere. Keep them out of the set and tag the clean category URL. - Blocked or noindexed versions. A page blocked in robots.txt or marked noindex can't take part in a hreflang set.
- Lang attribute mismatch. An Arabic page with
lang="en"in its HTML tag sends mixed signals. Arabic pages needlang="ar"anddir="rtl".
Which Arabic pages should you build first? Start with the searches you're losing to translations, found with Arabic keyword research.
Hreflang checklist
Run this after launch and after every new language or market:
Notes for stores adding more GCC countries
- Start on the fallback. Kuwait, Qatar, Bahrain and Oman can rely on the
arfallback andx-defaultuntil they get their own prices or delivery. - Add a market in one go. When Kuwait gets
ar-KWanden-KWpages, add both codes to every existing set the same day. A half-updated set breaks the return tags.
Frequently asked questions
Not if you have one version of each page. Hreflang only links alternates of the same page. You'll need it the day you add English, or a second Arabic version for another country with its own prices.
Sources & further reading
- Tell Google about localized versions of your page — Google Search Central
- Managing multi-regional and multilingual sites — Google Search Central
- How Google crawls locale-adaptive pages — Google Search Central
- Hreflang: the easy guide for beginners — Ahrefs
- Google auto-translated pages in search results — Ahrefs
- Managing international domains — Shopify Help Center
- Google Search Console to remove International Targeting report — Search Engine Land
This guide is for general information only and is not legal, tax or financial advice. Rules and fees change — always confirm with the official source or a licensed advisor.

Maya is MiddleEastEcom's lead guide and editor. She researches GCC marketplaces, payments and regulations and turns them into practical playbooks for sellers.
Meet Maya



