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?

Shops on Shopify and PrestaShop pass Google's Core Web Vitals (opens in a new tab) most often; shops on Shoper least often. We found 2,182 online shops among the .pl domains in the Tranco list of popular sites (opens in a new tab), the same list behind our study of AI crawlers on the Polish web, and looked each one up in the Chrome UX Report (opens in a new tab), 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 (opens in a new tab) (25.7%). Open-source platforms on the shop's own server run more than half of them, Polish SaaS platforms such as Shoper (opens in a new tab) and IdoSell (opens in a new tab) another 27.4%, and Shopify (opens in a new tab) only 5.9%.
- 2,182
- 53%
- 63%
- 33%
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 (opens in a new tab) and Sylius (opens in a new tab), 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
Show the data
| 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 |

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
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
- Open source, self-hosted
- Polish SaaS
- Global SaaS and suites
- Custom or headless
Show the data
| Item | Open source, self-hosted | Polish SaaS | Global SaaS and suites | Custom or headless | n |
|---|---|---|---|---|---|
| All shops | 54% | 27% | 6.4% | 12% | 2,182 |

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
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 (opens in a new tab) storefront, zooplus.pl Next.js (opens in a new tab). 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% |
Show as an image

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
Custom and headless storefronts are a top-100 phenomenon
Shops by kind of platform within each size band
- Open source, self-hosted
- Polish SaaS
- Global SaaS and suites
- Custom or headless
Show the data
| 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 |

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
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 (opens in a new tab) (LCP, loading) within 2.5 seconds, Interaction to Next Paint (opens in a new tab) (INP, responsiveness) within 200 milliseconds and Cumulative Layout Shift (opens in a new tab) (CLS, visual stability) at 0.1 or less. Google recommends good Core Web Vitals (opens in a new tab) "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
All shops: 53%
Show the 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 |

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
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
- Phones
- Desktops
Show the data
| 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% |

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
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
Show the data
| 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 |

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
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
Show the data
| 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 |

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
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% |
Show as an image

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
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 (opens in a new tab) 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 (opens in a new tab). 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
Show the data
| 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 |

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.
| Platform | With data | All three | LCP | INP | CLS |
|---|---|---|---|---|---|
| Shopify | 122 | 63% | 1.6s | 165ms | 0.00 |
| PrestaShop | 477 | 60% | 2s | 141ms | 0.01 |
| IdoSell | 218 | 57% | 2s | 146ms | 0.04 |
| Custom build | 201 | 57% | 1.8s | 160ms | 0.00 |
| All shops | 1,975 | 53% | 1.9s | 155ms | 0.01 |
| WooCommerce | 300 | 48% | 2.2s | 139ms | 0.00 |
| Magento / Adobe Commerce | 194 | 46% | 2.1s | 167ms | 0.03 |
| Headless | 44 | 40% | 1.9s | 185ms | 0.02 |
| AtomStore | 36 | 39% | 2.2s | 161ms | 0.05 |
| Shoper | 223 | 33% | 1.8s | 228ms | 0.03 |
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:
Look up your field data
Enter your shop's address in PageSpeed Insights (opens in a new tab). 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 (opens in a new tab) groups your pages by status.
Read phones first, at p75
A metric passes when three in four visits are within its threshold. More shops fail on phones than on desktops, so start there.
Fix the metric that fails
Slow LCP usually starts on the server or with the main product or banner image (optimising LCP (opens in a new tab)). Poor INP comes from scripts that keep the phone busy when the shopper taps: widgets, tag managers, heavy theme code (optimising INP (opens in a new tab)). CLS comes from images without dimensions and banners that push the page down.
Compare with your platform
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.
Check again after four weeks
CrUX covers a rolling 28 days, so a fix shows in full only after four weeks.
How we detected each shop's platform
Take every .pl domain
The Tranco list Y8YYG (22 September 2026) holds 9,208 registrable .pl domains; 8,067 answered with an HTML homepage.
Fingerprint the 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.
Decide what counts as a shop
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.
Check a sample by hand
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.
| Platform | Shops | Share | Checked | Correct |
|---|---|---|---|---|
| PrestaShop | 561 | 26% | 20 | 100% |
| WooCommerce | 367 | 17% | 20 | 85% |
| Shoper | 227 | 10% | 20 | 100% |
| Custom build | 222 | 10% | 50 | 98% |
| IdoSell | 218 | 10% | 20 | 100% |
| Magento / Adobe Commerce | 205 | 9.4% | 20 | 100% |
| Shopify | 128 | 5.9% | 20 | 100% |
| Headless | 46 | 2.1% | 20 | 100% |
| AtomStore | 36 | 1.7% | 20 | 100% |
| SOTESHOP | 28 | 1.3% | 20 | 100% |
| shopGold | 27 | 1.2% | 20 | 95% |
| AptusShop | 15 | 0.7% | 15 | 100% |
13 more rows
| Platform | Shops | Share | Checked | Correct |
|---|---|---|---|---|
| Selly | 15 | 0.7% | 14 | 100% |
| osCommerce | 13 | 0.6% | 13 | 92% |
| Shopware | 12 | 0.6% | 12 | 100% |
| OpenCart | 12 | 0.6% | 12 | 100% |
| RedCart | 9 | 0.4% | 8 | 100% |
| Sky-Shop | 9 | 0.4% | 9 | 100% |
| Comarch e-Sklep | 7 | 0.3% | 6 | 100% |
| Sellingo | 6 | 0.3% | 6 | 100% |
| Salesforce Commerce Cloud | 5 | 0.2% | 5 | 100% |
| nopCommerce | 4 | 0.2% | 4 | 100% |
| Sylius | 4 | 0.2% | 3 | 100% |
| SAP Commerce | 3 | 0.1% | 3 | 100% |
| Wix Stores | 3 | 0.1% | 3 | 67% |
What the fingerprints miss
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
What the field data can't tell you
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.
Which ecommerce platform is fastest?
Among Polish online shops in September 2026, Shopify shops passed Core Web Vitals on phones most often (63%), ahead of PrestaShop (60%), IdoSell (57%) and custom-built shops (57%); the four are within each other's margins of error. Shoper shops passed least often (33%). The platform explains only part of it: on most platforms, loading times differ more between shops than between platforms.
Shopify vs WooCommerce: which is faster?
In Chrome UX Report data for Polish shops, 63% of Shopify shops passed Core Web Vitals on phones against 48% of WooCommerce shops. The gap is in loading: 93% of Shopify shops passed LCP against 64%, and the median Shopify shop sent its first byte to phones in 0.4s, the median WooCommerce shop in 1.3s. WooCommerce shops responded to taps slightly faster.
Shoper or IdoSell: which is faster?
On phones, 57% of IdoSell shops passed Core Web Vitals against 33% of Shoper shops. Shoper pages load faster (median LCP 1.8s against 2s) but respond to taps more slowly (median INP 228ms against 146ms). On desktops the two are level, and both lose most often on layout shifts.
What are Core Web Vitals?
Three metrics Google uses to describe how a page feels to real users: Largest Contentful Paint (LCP) for loading, Interaction to Next Paint (INP) for responsiveness and Cumulative Layout Shift (CLS) for visual stability. A page passes when, for three in four visits, LCP is within 2.5 seconds, INP within 200 milliseconds and CLS at 0.1 or less.
How do I check my online shop's Core Web Vitals?
Enter your shop's address in PageSpeed Insights. If your shop has enough Chrome traffic, the top of the report shows the same Chrome UX Report field data this study uses, for the page and for the whole site, on phones and desktops. Search Console's Core Web Vitals report groups your pages by status.
How can I tell which platform an online shop runs on?
View the page source and look for the platform's traces. PrestaShop sets a cookie named PrestaShop- followed by a hash and defines var prestashop; WooCommerce loads files from /wp-content/plugins/woocommerce/; Shopify serves assets from cdn.shopify.com; Magento pages carry text/x-magento-init scripts; Shoper answers with an X-Powered-By: DCSaaS header. A headless shop may show none of these.