---
title: "Core Web Vitals by ecommerce platform: who is fastest?"
description: "CrUX field data for Polish online shops: about half pass Core Web Vitals on phones. Shopify and PrestaShop lead, Shoper lags on INP. Which platform is fastest?"
canonical_url: "https://www.outofplace.space/blog/core-web-vitals-polish-ecommerce"
language: "en"
last_updated: "2026-09-24"
alternates:
  pl: "https://www.outofplace.space/pl/blog/core-web-vitals-polish-ecommerce.md"
---

# Core Web Vitals by ecommerce platform: who is fastest?

> CrUX field data for Polish online shops: about half pass Core Web Vitals on phones. Shopify and PrestaShop lead, Shoper lags on INP. Which platform is fastest?

Published 2026-09-24 · Category: Performance · Tags: Core Web Vitals, PrestaShop, WooCommerce, Shoper, Shopify

Shops on Shopify and PrestaShop pass Google's [Core Web Vitals](https://web.dev/articles/vitals) most often; shops on Shoper least often. We found 2,182 online shops among the .pl domains in [the Tranco list of popular sites](https://tranco-list.eu/list/Y8YYG/full), the same list behind [our study of AI crawlers on the Polish web](https://www.outofplace.space/blog/ai-crawlers-polish-web), and looked each one up in the [Chrome UX Report](https://developer.chrome.com/docs/crux), Google's record of how fast sites are for real Chrome users. 1,975 had enough traffic to be measured on phones. Of those, 53% pass all three metrics: 63% of Shopify shops, 60% of PrestaShop shops and 33% of Shoper shops, whose pages load quickly but respond slowly to a tap.

The platform explains less than the choice of it suggests. On most platforms, loading times differ more between shops than between platforms, and each platform fails in its own way: WooCommerce shops on loading, Shoper and headless storefronts on responsiveness, and on desktops IdoSell and Shoper shops on layouts that shift.

Who runs what: one in four shops runs on [PrestaShop](https://www.prestashop.com/en) (25.7%). Open-source platforms on the shop's own server run more than half of them, Polish SaaS platforms such as [Shoper](https://www.shoper.pl/) and [IdoSell](https://www.idosell.com/en/) another 27.4%, and [Shopify](https://www.shopify.com/) only 5.9%.

- On phones, 53% of Polish online shops with field data pass all three Core Web Vitals; on desktops, 59%.
- Shopify (63%) and PrestaShop (60%) shops pass most often on phones, Shoper shops least often (33%), held back by INP, the time a page takes to respond to a tap.
- Among the large platforms, WooCommerce shops have the slowest servers and the fewest shops loading within the LCP threshold.
- PrestaShop runs one in four of the largest Polish online shops, [WooCommerce](https://woocommerce.com/) one in six; Polish SaaS platforms (Shoper, IdoSell, [AtomStore](https://www.atomstore.pl/) and others) together more than a quarter, Shopify about one in seventeen.
- One shop in eight is custom-built or headless.

## Which ecommerce platforms Polish online shops run on

PrestaShop leads by a distance, then WooCommerce. Shoper and IdoSell, the two largest Polish subscription platforms, sit level with Magento and with shops built from scratch. Everything below AtomStore, from SOTESHOP and shopGold to [Shopware](https://www.shopware.com/en/) and [Sylius](https://sylius.com/), is under 2% each and folds into "other platforms".

**PrestaShop runs one in four large Polish online shops** (Share of the .pl shop origins in the Tranco list, by platform · 95% intervals)

| Item | Value | 95% interval | n |
| --- | --- | --- | --- |
| PrestaShop | 26% | 24%–28% | 2,182 |
| WooCommerce | 17% | 15%–18% | 2,182 |
| Shoper | 10% | 9.2%–12% | 2,182 |
| Custom build | 10% | 9%–12% | 2,182 |
| IdoSell | 10% | 8.8%–11% | 2,182 |
| Magento / Adobe Commerce | 9.4% | 8.2%–11% | 2,182 |
| Other platforms | 7.9% | 6.8%–9.1% | 2,182 |
| Shopify | 5.9% | 5%–6.9% | 2,182 |
| Headless | 2.1% | 1.6%–2.8% | 2,182 |
| AtomStore | 1.7% | 1.2%–2.3% | 2,182 |

Source: Outofplace crawl, 23 Sept 2026; Tranco list Y8YYG. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-prestashop-runs-one-in-four-large-polish-online-shops.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/platforms.csv

## Open source still runs most of it

Grouped by how the software is run, open-source platforms on the shop's own server or hosting account are 54% of the sample. That is the part of the market where speed is the shop's own job: the platform is only a starting point, and the theme, the plugins and the server decide the rest. On a SaaS platform most of that belongs to the vendor.

**More than half of the shops run open-source software they host themselves** (Shop origins by kind of platform · n = 2,182)

| Item | Open source, self-hosted | Polish SaaS | Global SaaS and suites | Custom or headless | n |
| --- | --- | --- | --- | --- | --- |
| All shops | 54% | 27% | 6.4% | 12% | 2,182 |

Source: Outofplace crawl, 23 Sept 2026. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-more-than-half-of-the-shops-run-open-source-software-they-host-t.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/platforms.csv

## The top of the market runs on something else

Sort the shops by popularity and the picture flips. Among the 100 largest, Magento leads with 27%, custom builds follow at 25% and headless storefronts at 12%; sportano.pl and gymbeam.pl run Magento, eobuwie.pl and modivo.pl a [Nuxt](https://nuxt.com/) storefront, zooplus.pl [Next.js](https://nextjs.org/). PrestaShop, the leader overall, runs just 6% of them. From the 501st shop down it is the other way round: PrestaShop 26.5%, WooCommerce 18.9%, and the Polish SaaS platforms own the long tail.

**Big shops build their own or run Magento; the long tail runs PrestaShop and Polish SaaS** (Share of shops on each platform within each size band, shops ranked among themselves by popularity · n = 100, 400 and 1,682)

| Item | Top 100 shops | 101–500 | 501 and below |
| --- | --- | --- | --- |
| PrestaShop | 6% | 27% | 27% |
| WooCommerce | 6% | 11% | 19% |
| Shoper | 3% | 5.8% | 12% |
| Custom build | 25% | 14% | 8.4% |
| IdoSell | 8% | 6.5% | 11% |
| Magento / Adobe Commerce | 27% | 19% | 6% |
| Shopify | 5% | 3.8% | 6.4% |
| Headless | 12% | 2.5% | 1.4% |
| AtomStore | 3% | 2.8% | 1.3% |
| Other platforms | 5% | 7.8% | 8.1% |

Source: Outofplace crawl, 23 Sept 2026; Tranco list Y8YYG. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-big-shops-build-their-own-or-run-magento-the-long-tail-runs-pres.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/shops.csv

**Custom and headless storefronts are a top-100 phenomenon** (Shops by kind of platform within each size band)

| Item | Open source, self-hosted | Polish SaaS | Global SaaS and suites | Custom or headless | n |
| --- | --- | --- | --- | --- | --- |
| Top 100 shops | 41% | 15% | 7% | 37% | 100 |
| 101–500 | 60% | 19% | 4.5% | 16% | 400 |
| 501 and below | 53% | 30% | 6.8% | 9.9% | 1,682 |

Source: Outofplace crawl, 23 Sept 2026. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-custom-and-headless-storefronts-are-a-top-100-phenomenon.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/shops.csv

## Which ecommerce platform is fastest?

A shop passes when three in four of its page loads (the 75th percentile, p75) are good on all three metrics: [Largest Contentful Paint](https://web.dev/articles/lcp) (LCP, loading) within 2.5 seconds, [Interaction to Next Paint](https://web.dev/articles/inp) (INP, responsiveness) within 200 milliseconds and [Cumulative Layout Shift](https://web.dev/articles/cls) (CLS, visual stability) at 0.1 or less. Google [recommends good Core Web Vitals](https://developers.google.com/search/docs/appearance/core-web-vitals) "for success with Search".

On phones, Shopify leads with 63% and PrestaShop follows with 60%; their intervals overlap with each other and with those of IdoSell (57%) and custom-built shops (57%). WooCommerce (48%) and Magento (46%) sit below the average of 53%. Headless storefronts, AtomStore and Shoper are at the bottom, Shoper with 33%. The two SaaS platforms at either end show how much the vendor decides: on a subscription platform the vendor runs the servers and writes much of the storefront code.

**Shopify and PrestaShop shops pass Core Web Vitals on phones most often** (Share of shops whose p75 LCP, INP and CLS are all good on phones, by platform · CrUX, 28 days to 21 Sept 2026 · 95% intervals · platforms with at least 30 shops with data)

| Item | Value | 95% interval | n |
| --- | --- | --- | --- |
| Shopify | 63% | 54%–71% | 120 |
| PrestaShop | 60% | 55%–64% | 462 |
| IdoSell | 57% | 51%–64% | 218 |
| Custom build | 57% | 50%–64% | 199 |
| WooCommerce | 48% | 42%–54% | 284 |
| Magento / Adobe Commerce | 46% | 39%–53% | 190 |
| Headless | 40% | 26%–54% | 43 |
| AtomStore | 39% | 25%–55% | 36 |
| Shoper | 33% | 27%–39% | 223 |

Source: Chrome UX Report (Google); Outofplace crawl, 23 Sept 2026. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-shopify-and-prestashop-shops-pass-core-web-vitals-on-phones-most.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/crux.csv

The small Polish platforms we can't chart, each with fewer than 30 shops with field data, mostly do well: 23 of SOTESHOP's 25 shops pass on phones, and 19 of shopGold's 27. Their samples are too small to rank.

On desktops, 59% of the shops pass, and the order changes. INP passes almost everywhere on a desktop (98% of shops), so the platforms that lost on responsiveness catch up: headless storefronts go from 40% on phones to 70% on desktops. IdoSell goes the other way, from 57% to 47%, because its shops' layouts shift on wide screens.

**On desktops headless shops catch up and IdoSell drops back** (Share of shops passing all three Core Web Vitals, phones against desktops · CrUX, 28 days to 21 Sept 2026)

| Item | Phones | Desktops |
| --- | --- | --- |
| All shops | 53% | 59% |
| Shopify | 63% | 75% |
| PrestaShop | 60% | 64% |
| IdoSell | 57% | 47% |
| Custom build | 57% | 74% |
| WooCommerce | 48% | 49% |
| Magento / Adobe Commerce | 46% | 49% |
| Headless | 40% | 70% |
| AtomStore | 39% | 53% |
| Shoper | 33% | 49% |

Source: Chrome UX Report (Google); Outofplace crawl, 23 Sept 2026. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-on-desktops-headless-shops-catch-up-and-idosell-drops-back.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/crux.csv

## How fast each platform is for real users

The median Polish shop passes each metric on its own. On phones its p75 LCP is 1.9s, its INP 155ms and its CLS 0.01. The trouble is that only just over half the shops pass all three at once.

By platform, the median shop loads within 2.5 seconds everywhere, from 1.6s on Shopify to 2.2s on AtomStore. The spread inside a platform matters more: the middle half of WooCommerce shops alone runs from 1.7s to 2.8s, a wider span than the one between the fastest and the slowest platform.

**Every platform's median shop loads within 2.5 seconds on phones** (p75 LCP of each shop on phones, in seconds · dot: median shop, line: middle half of shops · CrUX, 28 days to 21 Sept 2026)

| Item | Value | Range | n |
| --- | --- | --- | --- |
| Shopify | 1.6s | 1.3s–2s | 122 |
| Custom build | 1.8s | 1.3s–2.3s | 201 |
| Shoper | 1.8s | 1.4s–2.2s | 223 |
| Headless | 1.9s | 1.6s–2.3s | 44 |
| All shops | 1.9s | 1.5s–2.4s | 1,974 |
| PrestaShop | 2s | 1.6s–2.4s | 476 |
| IdoSell | 2s | 1.7s–2.3s | 218 |
| Magento / Adobe Commerce | 2.1s | 1.7s–2.6s | 194 |
| WooCommerce | 2.2s | 1.7s–2.8s | 300 |
| AtomStore | 2.2s | 2s–2.6s | 36 |

Source: Chrome UX Report (Google); Outofplace crawl, 23 Sept 2026. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-every-platform-s-median-shop-loads-within-2-5-seconds-on-phones.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/crux.csv

Responsiveness is where the platforms part. Shoper is the only one whose median shop misses the 200 ms INP line on phones, at 228ms; headless storefronts come next at 185ms. Shoper's pages load fast: 86% of Shoper shops pass LCP, second only to Shopify. The delay is in what happens after a tap: INP grows when the phone's processor is busy running the page's scripts. For headless shops that is no surprise, since the whole storefront is a JavaScript application running in the browser.

**Shoper is the only platform whose median shop fails INP on phones** (p75 INP of each shop on phones, in milliseconds · dot: median shop, line: middle half of shops · CrUX, 28 days to 21 Sept 2026)

| Item | Value | Range | n |
| --- | --- | --- | --- |
| WooCommerce | 139ms | 108ms–192ms | 284 |
| PrestaShop | 141ms | 108ms–186ms | 462 |
| IdoSell | 146ms | 125ms–180ms | 218 |
| All shops | 155ms | 119ms–203ms | 1,935 |
| Custom build | 160ms | 124ms–202ms | 199 |
| AtomStore | 161ms | 133ms–188ms | 36 |
| Shopify | 165ms | 137ms–209ms | 120 |
| Magento / Adobe Commerce | 167ms | 127ms–203ms | 190 |
| Headless | 185ms | 160ms–250ms | 43 |
| Shoper | 228ms | 173ms–278ms | 223 |

Source: Chrome UX Report (Google); Outofplace crawl, 23 Sept 2026. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-shoper-is-the-only-platform-whose-median-shop-fails-inp-on-phone.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/crux.csv

## Where shops fail: loading, responsiveness or layout

Across all shops, INP fails most often on phones: 73% pass it, against 79% for LCP and 84% for CLS. The platforms have their own weak spots. Only 40% of Shoper shops pass INP. WooCommerce and AtomStore shops fail on loading: only 64% of WooCommerce shops and 64% of AtomStore shops are within the LCP threshold. Magento is below average on all three.

**Shoper and headless shops fail on responsiveness, WooCommerce on loading** (Share of shops whose p75 is good for each metric on phones, and for all three · CrUX, 28 days to 21 Sept 2026)

| Item | LCP | INP | CLS | All three |
| --- | --- | --- | --- | --- |
| All shops | 79% | 73% | 84% | 53% |
| Shopify | 93% | 70% | 94% | 63% |
| PrestaShop | 80% | 81% | 86% | 60% |
| IdoSell | 84% | 83% | 77% | 57% |
| Custom build | 81% | 75% | 88% | 57% |
| WooCommerce | 64% | 79% | 89% | 48% |
| Magento / Adobe Commerce | 73% | 72% | 75% | 46% |
| Headless | 80% | 53% | 84% | 40% |
| AtomStore | 64% | 78% | 67% | 39% |
| Shoper | 86% | 40% | 78% | 33% |

Source: Chrome UX Report (Google); Outofplace crawl, 23 Sept 2026. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-shoper-and-headless-shops-fail-on-responsiveness-woocommerce-on.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/crux.csv

On desktops the weak spot is layout. Only 69% of the shops keep CLS at 0.1 or less there, and IdoSell (50%), Shoper (55%) and Magento (59%) do worst. CrUX doesn't say which element moves; the usual causes are images without dimensions and content inserted above what is already on screen, as [Google's guide to CLS](https://web.dev/articles/optimize-cls) explains.

### Time to first byte: where hosting shows

Time to first byte (TTFB) isn't a Core Web Vital, but every page load waits for it, and it shows how a shop is hosted. The median Shopify shop gets its first byte to a phone in 0.4s, and 98% of Shopify shops stay within 0.8 s, the rough target in [Google's guide to TTFB](https://web.dev/articles/ttfb). WooCommerce shops take 1.3s, and only 16% stay within it. IdoSell is nearly as slow here (1.3s, 3.2% within the guide), yet 84% of its shops pass LCP, more than the average: a slow first byte hurts, but it doesn't decide the result on its own.

**Shopify shops get the first byte fastest, WooCommerce shops slowest** (p75 TTFB of each shop on phones, in seconds · dot: median shop, line: middle half of shops · CrUX, 28 days to 21 Sept 2026)

| Item | Value | Range | n |
| --- | --- | --- | --- |
| Shopify | 0.4s | 0.4s–0.5s | 121 |
| Headless | 0.8s | 0.7s–1.1s | 44 |
| Custom build | 0.9s | 0.6s–1.2s | 200 |
| Shoper | 0.9s | 0.7s–1.1s | 223 |
| All shops | 1s | 0.7s–1.4s | 1,960 |
| PrestaShop | 1.1s | 0.8s–1.4s | 471 |
| Magento / Adobe Commerce | 1.1s | 0.8s–1.6s | 194 |
| IdoSell | 1.3s | 1.1s–1.5s | 218 |
| AtomStore | 1.3s | 1.1s–1.6s | 36 |
| WooCommerce | 1.3s | 1s–2s | 294 |

Source: Chrome UX Report (Google); Outofplace crawl, 23 Sept 2026. Chart: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/charts/en/chart-shopify-shops-get-the-first-byte-fastest-woocommerce-shops-slowe.png Data: https://www.outofplace.space/data/blog/core-web-vitals-polish-ecommerce/2026-09-23/crux.csv

## How to check your own shop's Core Web Vitals

The platform sets a starting point; the theme, the apps or plugins, the images and the hosting decide the rest. To see where your shop stands:

Enter your shop's address in [PageSpeed Insights](https://pagespeed.web.dev/). If the shop has enough Chrome traffic, the top of the report shows the same CrUX data this study uses, for the page and for the whole site. [Search Console's Core Web Vitals report](https://support.google.com/webmasters/answer/9205520) groups your pages by status.

A metric passes when three in four visits are within its threshold. More shops fail on phones than on desktops, so start there.

Slow LCP usually starts on the server or with the main product or banner image ([optimising LCP](https://web.dev/articles/optimize-lcp)). Poor INP comes from scripts that keep the phone busy when the shopper taps: widgets, tag managers, heavy theme code ([optimising INP](https://web.dev/articles/optimize-inp)). CLS comes from images without dimensions and banners that push the page down.

If your shop is well behind the median shop on the same platform in the table above, the platform isn't the problem: the theme, the add-ons or the hosting are.

CrUX covers a rolling 28 days, so a fix shows in full only after four weeks.

## How we detected each shop's platform

The Tranco list Y8YYG (22 September 2026) holds 9,208 registrable .pl domains; 8,067 answered with an HTML homepage.

Markers in the HTML, response headers and cookie names, never running the page's JavaScript. Each platform's markers come from the vendors' own showcase stores, which are kept out of the sample.

A platform that only sells makes a site a shop. WooCommerce needs its cart; a site with no platform markers needs two independent shop signals, one of them a cart. That left 2,182 shops.

Up to 20 shops per platform, 50 custom builds and 30 non-shops were checked against their evidence. Weighted by platform share, 97.1% of the labels were right.

Large brands on Salesforce Commerce Cloud or SAP Commerce often answer crawlers with a bot challenge; those count as challenges, not as shops of an unknown platform. WooCommerce is the weakest fingerprint (85% correct in the check), because the plugin is often installed on sites that sell nothing. Of 30 homepages we classified as not a shop, 3 were shops after all.

## How we measured

The platform census comes from one crawl on 23 September 2026 by `OutofplaceResearchBot` (see [what our crawler fetches and how to block it](https://www.outofplace.space/bot)), which reads robots.txt first and fetches only the homepage.

The speed data is Google's. On 24 September 2026 we asked the [Chrome UX Report API](https://developer.chrome.com/docs/crux/api) for every shop origin, once for phones and once for desktops, and tried the www or bare-domain twin when an origin had no record. CrUX aggregates the page loads of Chrome users on Android and desktop who share usage statistics (Chrome on iOS is not included), across every page of an origin, over 28 days: here 25 August to 21 September 2026. Origins below a traffic threshold Google doesn't disclose have no record; 1,975 of the 2,182 shops (91%) had data for phones and 1,916 for desktops.

A shop passes a metric when its p75 is within Google's "good" threshold, and passes Core Web Vitals when it passes LCP, INP and CLS; the few shops without INP data can't be assessed and are left out of that share. Per platform we report the share of shops passing, with a 95% Wilson interval, and the median shop's p75 with the middle half of shops around it. Platforms with fewer than 30 shops with data stay out of the charts but not out of the files, which also hold each shop's weekly history for the past six months from the CrUX History API.

A platform's pass rate describes the shops that chose it, not the software alone. Large retailers with their own developers run Magento, custom builds and headless storefronts; small shops pick SaaS or cheap hosting; themes, apps, images and third-party scripts differ from shop to shop. CrUX sees only Chrome on Android and desktop, averages every page of a site, product pages and checkout included, and leaves out shops with too little traffic. We identified the platform from the homepage on 23 September, so a shop that moved platforms during the 28 days is filed under the new one.

## Further reading

- [Web Vitals](https://web.dev/articles/vitals): What LCP, INP and CLS measure and the thresholds Google uses.

- [Chrome UX Report methodology](https://developer.chrome.com/docs/crux/methodology): Which users, pages and sites the field data covers, and how it is aggregated.

- [Chrome UX Report API](https://developer.chrome.com/docs/crux/api): The API behind the speed half of this study: one record per origin and device.

- [Optimise Interaction to Next Paint](https://web.dev/articles/optimize-inp): Google's guide to the metric Polish shops fail most often on phones.

- [AI crawlers vs the Polish web: robots.txt on 1,000 .pl sites](https://www.outofplace.space/blog/ai-crawlers-polish-web): Our study of the same list: how the top 1,000 .pl sites treat AI crawlers.
