What +15,000 Middle East online stores actually score
We ran the checks behind our free site report over every shop we could find under 13 Middle East national domains. Nobody was asked for anything. The numbers are what the pages themselves returned.
August 2026 · 47,288 sites visited · 15,583 of them sell something · every one of those measured in full
The shape of it
Half of these stores sit between 60 and 72. The best scored 95 and the worst 43, so this is not a handful of broken sites dragging an average down. It is the middle of the market.
What this market can and cannot see
Read from the home page markup: analytics, advertising pixels and consent tooling. A store with no analytics is not running a quiet operation, it is running a blind one. Across all 15,583 stores.
48% of stores cannot tell you where an order came from, and 52% track people without asking.
What separates the strongest from the weakest
The 3895 highest-scoring stores against the 3895lowest. A fault both halves share is the market’s habit; one only the weak half has is what is actually separating them.
| Fault | Weakest quarter | Strongest quarter |
|---|---|---|
| Incomplete social preview | 91% | 19% |
| No og:image | 90% | 19% |
| No structured data | 78% | 11% |
| Browsers may guess your file types | 93% | 30% |
| Nothing tells the browser to stay on https | 94% | 31% |
| No meta description | 75% | 12% |
| No H1 heading | 67% | 9% |
| Scripts that block the first paint | 94% | 40% |
| Requests that must finish before anything appears | 94% | 44% |
| Any site can load your pages inside itself | 94% | 46% |
Which of the six checks is weakest
The same six engines behind the free report, scored separately over the 15,583 stores read in depth. Weakest first.
What these stores are built on
Read from each store’s own markup. The platform is the one cause a reader can act on: where one platform’s stores score below another, that is a default rather than a hundred separate mistakes.
| Platform | Stores | Share | Median score |
|---|---|---|---|
| WooCommerce | 6066 | 39% | 63 |
| WordPress | 4080 | 26% | 65 |
| Something else | 1965 | 13% | 66 |
| Shopify | 1584 | 10% | 74 |
| Wix | 1053 | 7% | 72 |
| Salla (Saudi) | 297 | 2% | 80 |
| GoDaddy builder | 241 | 2% | 62 |
| Magento | 113 | 1% | 63 |
| OpenCart | 101 | 1% | 59 |
| Zid (Saudi) | 55 | 1% | 66 |
What is actually wrong
The twelve faults found on most stores, each counted once per site. 61 distinct faults appeared across the 15,583 measured.
| Fault | Severity | Stores |
|---|---|---|
| Links with no text at all | high | 91% |
| No referrer policy | low | 91% |
| One phrase linking to more than one page | medium | 76% |
| Any site can load your pages inside itself | high | 76% |
| Requests that must finish before anything appears | medium | 74% |
| Links that open a new tab without saying so | low | 73% |
| Scripts that block the first paint | high | 73% |
| Images with no width and height set | medium | 72% |
| CSS and JS written into the page itself | medium | 69% |
| Browsers may guess your file types | medium | 68% |
| Nothing tells the browser to stay on https | high | 68% |
| New-tab links to other sites without rel=noopener | medium | 63% |
Market by market
Every market with at least fifty stores measured, best median first.United Arab Emirates leads at 67 and Palestine trails at 61: 6 points separates the best market in the region from the worst. The ranking is the least interesting column here. Analytics is where these markets genuinely differ.
United Arab Emirates is 60% of the stores in this study, because the archive we drew the list from holds far more hosts under some national domains than others. Each market’s median below stands on its own stores and is unaffected. The region-wide median is 66 pooled, and 63 if every market counts once.
| Market | Stores | Median | Analytics | Ad pixel | Consent | Mostly built on |
|---|---|---|---|---|---|---|
| United Arab Emirates | 9,377 | 67 | 55% | 27% | 8% | WooCommerce |
| Saudi Arabia | 3,563 | 65 | 55% | 26% | 5% | WooCommerce |
| Qatar | 673 | 65 | 43% | 18% | 7% | WooCommerce |
| Bahrain | 142 | 65 | 47% | 18% | 10% | WooCommerce |
| Kuwait | 202 | 64 | 46% | 31% | 6% | WooCommerce |
| Oman | 256 | 63 | 48% | 14% | 7% | WooCommerce |
| Jordan | 242 | 63 | 47% | 19% | 8% | WooCommerce |
| Lebanon | 149 | 63 | 40% | 15% | 7% | WooCommerce |
| Egypt | 418 | 62 | 42% | 16% | 9% | WooCommerce |
| Iraq | 196 | 62 | 19% | 9% | 4% | WooCommerce |
| Palestine | 315 | 61 | 24% | 33% | 3% | Something else |
Syria (33), Yemen (17) were measured too but have too few stores to publish a median for: a number that would move on ten more shops is not a finding.
Home or away
Salla and Zid were built in the region for it. Shopify, WooCommerce and the rest were not. The 352 stores on a regional platform have a median of 79; the 13,266 on an imported one, 66. Every store on a platform inherits its defaults, so a gap here is one decision made once, not thousands made separately.
| Platform origin | Stores | Median | Analytics | Consent | Median weight |
|---|---|---|---|---|---|
| Built in the region | 352 | 79 | 88% | 1% | 148 KB |
| Imported | 13,266 | 66 | 49% | 7% | 252 KB |
Where you would sit
Run the free report on your own address and this is what the number means, against all 15,583 stores measured.
| If you score | You are | What that means |
|---|---|---|
| 43 to 55 | Bottom tenth | worth a week of somebody's time |
| 56 to 60 | Bottom quarter | worth a week of somebody's time |
| 61 to 72 | Middle half | ordinary for this market |
| 73 to 77 | Top quarter | ahead of most competitors |
| 78 to 95 | Top tenth | ahead of most competitors |
The ten fixes worth the most, in order
Ranked by how many stores each would help, weighted by what it costs them. Every fix is the instruction our own engine writes when it finds that fault, so this is the same advice you get on your own report.
Links with no text at all
high91% of storesFor example the one pointing at /. Usually a link wrapped around an icon or an image with no alt text. A screen reader has nothing to announce but the address, read out character by character, and search has nothing to describe the destination with.
Fix: Add an aria-label saying where it goes, or alt text on the image inside it.
Any site can load your pages inside itself
high76% of storesWith neither frame-ancestors nor X-Frame-Options, another site can put your page in an invisible frame over its own buttons, so a click meant for their page lands on yours. On a page with a Buy or a Delete on it, that is the whole attack.
Fix: Add frame-ancestors 'self' to your Content-Security-Policy, or send X-Frame-Options: SAMEORIGIN if you have no CSP yet.
Scripts that block the first paint
high73% of storesA script in the head with no defer or async stops the browser from building the page until it has downloaded and run. The screen stays blank meanwhile.
Fix: Add defer to each of those tags, or move them to the end of the body. Use async only for scripts that do not touch the page.
Nothing tells the browser to stay on https
high68% of storesWithout Strict-Transport-Security, a visitor typing your domain or following an old link starts on http. That first request travels in the clear and can be intercepted before your redirect ever runs. The header removes that first request entirely for anyone who has visited before.
Fix: Send Strict-Transport-Security: max-age=31536000; includeSubDomains once you are sure every subdomain serves https.
The server took 1.8s to send the page
high62% of storesNothing at all can render until the document arrives, so this delay sits in front of every other improvement on the page.
Fix: Cache the HTML at the edge, or find the slow query or API call the page waits on before it responds.
One phrase linking to more than one page
medium76% of stores"0" points at /shop/cart and /shop/wishlist. Two links with the same words and different destinations cannot be told apart in a list of links, and they tell search that one phrase describes two different pages.
Fix: Give each one words specific to its own destination.
Requests that must finish before anything appears
medium74% of storesEvery stylesheet and blocking script in the head is a round trip the visitor waits through while looking at a blank page.
Fix: Merge the stylesheets, and inline the small amount of CSS the first screen needs while the rest loads after.
No og:image
high48% of storesWithout an og:image, a link to this page shares as a blank or cropped card, which kills the click on social and in chat apps.
Fix: Add <meta property="og:image" content="…"> pointing at a 1200×630 image on a public URL.
Images with no width and height set
medium72% of storesThe browser cannot reserve space for an image whose size it does not know, so the page jumps as each one loads. That is the shift visitors misclick on.
Fix: Put width and height attributes on every img tag. CSS can still resize it; the attributes only tell the browser the shape to reserve.
CSS and JS written into the page itself
medium69% of storesInline code cannot be cached, so every visit downloads it again, and it is re-sent on every page of the site.
Fix: Move the bulk into an external file the browser can cache, and keep inline to the small amount the first screen needs.
Now do it to your own site
The same six checks, on your address, sent to you for nothing. About a minute, and there is no account to make.
Read my site free →Or reach me directly: Hello@adamhafez.com · +971 58 833 1157
Or have it done
Fixed price, paid by card, and the report lands in three working days. The larger engagements are quoted after a conversation.
| Engagement | What it answers | Price |
|---|---|---|
| SEO Check | Why isn't my site ranking? | $250 |
| AI Search Check | Does ChatGPT know my business exists? | $250 |
| Growth Check | Why has growth stalled? | $250 |
| SEO Recovery Diagnosis | My site dropped out of Google. What happened? | $500 |
Every engagement is on the services page, and the twenty free tools are at /tools.
Notes. This reads one page per store, so it is a measurement of one page on one day and not a verdict on any business. It cannot see rankings, traffic or sales: a store scoring 60 may well be outselling one scoring 90.