Shopify — Core Web Vitals

Field data PhoneDesktopAll October 2026 edition · Phone field outcomes
84.9% of Shopify sites pass all three Core Web Vitals
  • #4 of 12 CMSs by overall pass rate
  • Add TTFB and only 82.6% still pass
  • Runs on 4.1% of all sites measured (8,573 crawled Shopify sites, 6,050 with phone field data)

The distribution, not just the median

Each bar is the good / needs-work / poor split for Shopify. The marks where the whole fleet sits, so you can see who is ahead and who is behind.

LCP 1.7s p75
95.0% good ▲ fleet 81.8%
INP 140ms p75
93.2% good ▲ fleet 91.8%
CLS 0.01 p75
94.0% good ▲ fleet 88.9%
TTFB diagnostic 523ms p75
95.7% good ▲ fleet 59.0%
FCP diagnostic 1.2s p75
94.8% good ▲ fleet 75.5%
Shopify is strong across the board. Even its weakest metric, INP (93.2% good), is ahead of the fleet’s 91.8%. The takeaways below show the architecture choices behind it.
Metric & Architecture Takeaways

What moves Core Web Vitals on Shopify

Field data findings across Shopify sites from our metric deep dives.

LCP image loading 6,107 stores
31.2% lazy-load their hero banner

31.2% of Shopify stores have loading="lazy" on their main banner image.

Shopify's Liquid image_tag filter omits loading="lazy" unless explicitly passed as a parameter. Across Shopify, 45.9% of stores use default loading (96% good LCP, 1.3s median) and 31.2% have loading="lazy" (96% good LCP, 1.3s median), with 95% good LCP overall.

Read the Shopify LCP loading breakdown →
LCP resource discovery 7,925 stores
89.5% discover the hero in HTML (96% good LCP)

89.5% of Shopify stores render their hero banner as a direct HTML image.

Shopify's Liquid image_tag filter outputs standard <img> markup by default. Across Shopify, 89.5% of stores discover the hero image in HTML (96% good LCP, 1.3s median) compared with 9.5% in CSS background images (92% good LCP, 1.5s median).

Read the Shopify LCP discovery breakdown →
Font-display 8,193 stores
71.2% of @font-face rules use swap

71.2% of Shopify @font-face rules use swap, while 27% use auto or block.

Shopify's Liquid font_face filter accepts a font_display parameter on generated @font-face rules. Across Shopify, pure-swap stores pass LCP at 97% (1.2s median) compared with 94% on mixed-rule stores.

Read the Shopify font-display breakdown →
HTML document protocol 8,299 stores
95.4% serve HTML over HTTP/3 (95% good LCP)

95% of Shopify storefronts serve main HTML over HTTP/3.

Across Shopify storefronts, 95% serve main HTML over HTTP/3 (95% good LCP, 1.3s median), 0.8% use HTTP/2, and 3.8% use HTTP/1.1.

Read the HTML document protocol study →
Main-thread yielding 8,299 stores
95.5% call requestIdleCallback()

96% of Shopify stores call requestIdleCallback().

Across Shopify storefronts, 95.5% call requestIdleCallback() (111ms median INP, 93% good INP overall) and 4.2% call scheduler.yield().

Read the main-thread yielding study →
LCP image format 6,942 stores
95% serve WebP or AVIF automatically

95% of Shopify store hero images use WebP or AVIF.

Shopify's CDN serves image/webp and image/avif from uploaded source images. Across Shopify hero images, 90.1% use WebP (95% good LCP, 1.4s median) and 5.0% use AVIF.

Read the LCP image format study →
Speculation rules 8,299 stores
93.2% have no inline speculationrules script (85% pass all 3 CWV)

93.2% of Shopify stores ship no inline speculation rules tag (85% all-three CWV pass rate).

Across Shopify storefronts, 93.2% have no inline <script type="speculationrules"> tag in initial HTML, and 85% of stores pass all three Core Web Vitals.

Read the speculation rules study →
LCP priority hints 7,925 stores
1.3s vs 1.4s median LCP (highprio vs none)

27.7% of Shopify stores set fetchpriority="high" on the hero image (1.3s median LCP).

Across Shopify storefronts, 27.7% set fetchpriority="high" on the LCP element (96% good LCP, 1.3s median) and 69.8% carry no priority hint (95% good LCP, 1.4s median).

Read the Shopify priority hints breakdown →
Responsive LCP image markup 7,925 stores
69% Shopify stores with srcset or <picture>

69% of Shopify stores serve responsive hero markup with srcset or <picture>.

Shopify's Liquid image_tag filter generates width-descriptor srcset attributes from the widths parameter or default widths. Across Shopify, 55.6% of stores use srcset on the LCP image (95% good LCP) and 13.8% use <picture> (96% good LCP).

Read the Shopify responsive LCP breakdown →
Speculation rules 8,299 stores
93.2% stores without inline speculation script

93.2% of Shopify stores ship no inline <script type="speculationrules"> tag (85% CWV pass rate).

Across Shopify storefronts, 93.2% emit no inline <script type="speculationrules"> element in initial HTML, with 85% passing all three Core Web Vitals overall.

Read the Shopify speculation posture breakdown →
As their CMS 8,299 stores
85% Shopify all-three CWV pass rate

Shopify storefronts record a 85% all-three CWV pass rate across 8,299 stores.

Across 8,299 audited Shopify storefronts, 85% pass all three Core Web Vitals (LCP, INP, and CLS) simultaneously.

Open Shopify Explorer Hub →
CSS @import rules 8,299 stores
1.3s vs 1.5s median LCP (no @import vs @import)

22.7% of Shopify stores use CSS @import rules (1.5s median LCP vs 1.3s without @import).

Across Shopify storefronts, 77.3% have no CSS @import rules (96% good LCP, 1.3s median) and 22.7% include at least one stylesheet with @import (93% good LCP, 1.5s median).

Read the Shopify CSS @import breakdown →
Text compression coverage 8,299 stores
97% vs 94% good LCP (all compressed vs uncompressed leak)

68.6% of Shopify stores include at least one uncompressed text response (94% vs 97% good LCP).

Across Shopify storefronts, 31.4% compress every text response (97% good LCP, 1.2s median) and 68.6% include at least one uncompressed text response (94% good LCP, 1.4s median).

Read the Shopify uncompressed text breakdown →
Image loading strategies 8,293 stores
80% / 58% lazy below fold / lazy in viewport

Shopify stores have eager above-the-fold images on 95%, lazy below-the-fold images on 80%, and lazy in-viewport images on 58%.

Shopify's Liquid image_tag filter accepts a loading parameter. Across Shopify storefronts, 95% have eager above-the-fold images, 80% have lazy below-the-fold images, and 58.4% have a lazy-loaded image inside the initial viewport (95% good LCP).

Read the Shopify image loading breakdown →
Responsive image markup 8,276 stores
96.0% ship responsive srcset (95% good LCP)

Shopify's image_tag filter outputs srcset on 96.0% of stores and <picture> appears on 29.1%.

Shopify's Liquid image_tag filter generates srcset attributes from its widths parameter or default widths. Across Shopify, 96.0% of storefronts use srcset on <img> (95% good LCP) and 29.1% use <picture> (95% good LCP).

Read the Shopify responsive image breakdown →
Image dimension sizing 8,276 stores
95% vs 93% good CLS (sized vs unsized images)

Shopify stores include width and height on 89% of storefronts (95% good CLS).

Shopify's Liquid image_tag filter outputs width and height attributes by default based on image dimensions. Across Shopify, 89.1% of stores have explicitly sized images (95% good CLS) and 73.9% also have unsized images (93% good CLS).

Read the Shopify image dimensions breakdown →
Iframe loading 6,522 stores
99.0% default utility iframes (94% good LCP)

99.0% of iframe-using Shopify stores load default iframes (94% good LCP).

Across iframe-using Shopify storefronts, 99.0% load default iframes (94% good LCP) and 3.8% use loading="lazy".

Read the iframe loading study →
Iframe dimension sizing 6,522 stores
97.7% unsized hidden frames (93% good CLS)

97.7% of iframe-using Shopify stores include unsized iframes (93% good CLS).

Across iframe-using Shopify storefronts, 97.7% contain an iframe without HTML width or height attributes (93% good CLS) and 16.0% use explicit dimensions (90% good CLS).

Read the Shopify iframe dimensions breakdown →
CSS rendering hints 8,215 stores
97.2% ship scroll-driven CSS (93% good INP)

Shopify storefronts using CSS hints include scroll-driven animation rules on 97.2% and aspect-ratio on 63.7%.

Across hint-using Shopify storefronts, 97.2% include CSS scroll-driven animation rules (93% good INP), 65.3% use will-change, and 63.7% use aspect-ratio.

Read the Shopify CSS hints breakdown →
Layout shift causes 5,420 stores
79.8% box growth (91% good field CLS)

Among shifting Shopify stores, 79.8% record box growth (91% good CLS) and 36.0% record sibling displacement.

Across 5,420 Shopify storefronts with lab layout shifts, 79.8% record element box growth (91% good field CLS) and 36.0% record sibling displacement (90% good CLS).

Read the Shopify CLS attribution breakdown →
Layout shift direction 5,420 stores
50.3% downward shifts (90% good CLS)

50.3% of shifting Shopify stores record downward shifts (90% good CLS).

Across 5,420 Shopify stores with recorded lab shifts, 83.5% record horizontal shifts (91% good field CLS) and 50.3% record downward vertical shifts (90% good CLS).

Read the Shopify shift direction breakdown →
Subresource network protocols 8,299 stores
100% H3 / 100% H2 edge subresource multiplexing (95% good LCP)

Shopify storefronts load subresources over HTTP/3 (100%), HTTP/2 (99.6%), and HTTP/1.1 (99.9%).

Across Shopify storefronts, 100.0% fetch subresources over HTTP/3, 99.6% over HTTP/2, and 99.9% include HTTP/1.1 subresource requests (95% good LCP overall).

Read the Shopify network protocol breakdown →
JavaScript frameworks 3,905 stores
81.0% / 24.1% jQuery / Vue.js on framework-using stores

Among Shopify stores loading a JS framework, 81.0% use jQuery, 24.1% use Vue, and 5.4% use Alpine.js.

Across 3,905 Shopify stores loading a detected JS framework, 81.0% load jQuery (80% pass all 3 CWV), 24.1% load Vue (79%), and 5.4% load Alpine.js (86%).

Read the Shopify framework breakdown →
Analytics providers 5,943 stores
92.8% run GA4 (92% good INP)

Analytics-using Shopify stores include Google Analytics 4 on 92.8% and UA tags on 85.1% (92% good INP).

Across analytics-using Shopify storefronts, 92.8% load Google Analytics 4 (92% field INP pass rate) and 85.1% include Universal Analytics references.

Read the Shopify analytics breakdown →
Ad networks 663 stores
86% / 11.5% Google AdSense / Taboola retargeting

Among the 663 Shopify stores loading ad network tags, 86% use AdSense and 11.5% use Taboola.

Across ad-using Shopify storefronts, 85.5% load AdSense/Google Ads (71% passing all three CWV), 11.5% load Taboola, and 3.6% load Criteo (85% overall among ad-using Shopify stores).

Read the ad networks study →
Tag managers 5,127 stores
99.5% use Google Tag Manager (91% good INP)

Google Tag Manager is used on 99.5% of tag-manager-using Shopify stores (91% good INP).

Across 5,127 Shopify storefronts with a tag manager, 99.5% use Google Tag Manager (91% good INP vs 93% overall) and 1.0% use Tealium iQ (92% good INP).

Read the tag managers study →
Consent management platforms 770 stores
87% vs 75% all 3 CWV pass (iubenda vs Cookiebot)

Shopify stores using iubenda (30.1%) pass all three CWV at 87% vs 75% for Cookiebot (36.8%).

Across 770 Shopify stores with an external CMP, 36.8% use Cookiebot (75% passing all three CWV), 33.5% use Civic Cookie Control (74%), and 30.1% use iubenda (87%).

Read the Shopify consent platform breakdown →
Performance optimization plugins 3 stores
85% all 3 CWV pass rate

3 Shopify stores show standalone optimization signatures (85% CWV pass rate).

Across the dataset, 3 Shopify storefronts have a detected standalone optimization plugin signature, with 85% passing all three Core Web Vitals.

Read the performance optimization plugins study →
Third-party technology categories 8,299 stores
71.6% / 61.8% analytics / tag managers on Shopify

100% of Shopify stores use a CDN, 71.6% load analytics, and 61.8% load tag managers.

Across 8,299 Shopify storefronts, 100.0% use a CDN (85% passing all three CWV), 71.6% load external analytics (82% CWV pass), and 61.8% load tag managers (81% CWV pass).

Read the Shopify third-party categories breakdown →
DOM element count 8,299 stores
67.6% Shopify stores with 1,500+ DOM nodes

67.6% of Shopify storefronts exceed 1,500 DOM elements (92% good INP vs 98% at 800 to 1,499 nodes).

Across Shopify storefronts, 24.8% have between 800 and 1,499 DOM nodes (98% good INP) and 67.6% exceed 1,500 DOM nodes (92% good INP, 119ms median).

Read the Shopify DOM element count breakdown →
Maximum DOM depth 8,299 stores
95% vs 80% good INP (15-20 vs 32+ levels)

98% of Shopify stores have fewer than 32 DOM levels, while 1.6% reach 32+ levels (80% good INP).

Across 8,299 Shopify stores, 44.3% sit at 15 to 20 DOM levels (95% good INP), 49.2% sit at 21 to 31 levels (92% good INP), and 1.6% sit at 32+ levels (80% good INP).

Read the Shopify DOM depth breakdown →
Initial HTML document size 8,299 stores
63.5% / 25.6% 30-75 KB / >75 KB HTML on Shopify

89% of Shopify stores ship over 30 KB of HTML (96% good LCP at 30 to 75 KB vs 92% over 75 KB).

Across 8,299 Shopify storefronts, 63.5% transfer 30 to 75 KB of HTML (96% good LCP, 1.3s median) and 25.6% exceed 75 KB (92% good LCP, 1.6s median).

Read the Shopify HTML size breakdown →
Iframe count per page 8,299 stores
97% vs 89% good CLS (0 iframes vs 4+ iframes)

79% of Shopify stores embed iframes, with 4+ iframe stores (18.1%) passing CLS at 89%.

Across Shopify storefronts, 21.4% have 0 iframes (97% good CLS), 32.4% have 1 iframe (96%), 28.1% have 2 to 3 (93%), and 18.1% have 4+ iframes (89% good CLS).

Read the Shopify iframe count breakdown →
Lab Total Blocking Time (TBT) 8,299 stores
97% vs 84% good INP (0ms vs >600ms TBT)

19.9% of Shopify stores exceed 600ms lab TBT (84% good INP vs 97% at 0ms TBT, 13 points apart).

Across Shopify storefronts, 26.5% record 0ms lab TBT (97% good field INP), 36.2% record 1 to 200ms TBT (96% good INP), and 19.9% exceed 600ms TBT (84% good INP, 131ms median).

Read the Shopify Total Blocking Time breakdown →
CLS shift concentration 5,420 stores
94% vs 90% good CLS (single shift vs multi-shift)

57.5% of shifting Shopify stores have 95%+ of their lab CLS in one shift (94% good CLS vs 90% multi-shift).

Across 5,420 Shopify storefronts with lab layout shifts, 57.5% have a single dominant shift (94% good field CLS), 23.7% sit at 65% to 94% (90%), and 18.8% have multiple shifts (90% good CLS).

Read the Shopify CLS concentration breakdown →
Layout shift count 8,299 stores
98% vs 83% good CLS (0 shifts vs 6+ shifts)

Shopify stores with 6+ lab layout shifts (8.2%) pass field CLS at 83% vs 98% with 0 shifts.

Across 8,299 Shopify storefronts, 33.5% record 0 lab shifts (98% good CLS), 42.4% record 1 to 2 shifts (94%), and 8.2% record 6 or more shifts (83% good CLS).

Read the Shopify layout shift count breakdown →
Largest single layout shift score 5,518 stores
97% vs 80% good CLS (<0.01 vs >0.25 largest shift)

Shifting Shopify stores with a largest shift over 0.25 (12.3%) pass field CLS at 80% vs 97% under 0.01.

Across 5,518 shifting Shopify storefronts, 37.2% have a largest shift under 0.01 (97% good CLS), 37.6% sit at 0.01 to 0.10 (94%), and 12.3% exceed 0.25 (80% good CLS).

Read the Shopify largest shift breakdown →
Distinct network domain count 8,299 stores
97% vs 81% all 3 CWV pass (4-7 vs 15+ domains)

64.2% of Shopify stores connect to 15+ domains (81% CWV pass rate vs 97% at 4 to 7 domains).

Across Shopify storefronts, 9.6% connect to 4 to 7 domains (97% passing all three CWV), 26.2% connect to 8 to 14 domains (93%), and 64.2% connect to 15+ domains (81%).

Read the Shopify network domain count breakdown →
Third-party request share 8,299 stores
97% vs 84% good INP (<10% vs 25-50% 3P requests)

Shopify stores with 25% to 50% third-party requests (3.7%) pass INP at 84% vs 97% under 10%.

Across Shopify storefronts, 52.1% have under 10% third-party requests (97% good INP), 43.6% sit at 10% to 25% (91%), and 3.7% sit at 25% to 50% (84% good INP, 13 points apart).

Read the Shopify third-party request share breakdown →
Cacheable resource share 8,299 stores
100% of Shopify stores cache 50%+ of resources

100% of Shopify stores cache at least 50% of subresources (96% good LCP at 80%+ cacheable).

Across Shopify storefronts, 60.8% mark 80%+ of resources as cacheable (96% good LCP) and 38.9% cache 50% to 79% (93% good LCP).

Read the Shopify cacheable resource breakdown →
Third-party provider count 8,299 stores
94% vs 79% all 3 CWV pass (2-4 vs 9+ providers)

44.6% of Shopify stores load 9+ third-party providers (79% CWV pass rate vs 94% at 2 to 4 providers).

Across Shopify storefronts, 25.9% load 2 to 4 external providers (94% all-three CWV pass rate), 29.5% load 5 to 8 (89%), and 44.6% load 9 or more providers (79%, 15 percentage points apart).

Read the Shopify third-party provider count breakdown →
Page image format mix 8,293 stores
99.3% / 90.6% WebP / AVIF adoption on Shopify stores

Shopify serves WebP on 99.3% of storefronts and AVIF on 90.6% (95% good LCP).

Across Shopify storefronts, 99.3% serve WebP images (95% good LCP, 1.4s median) and 90.6% serve AVIF images (95% good LCP).

Read the Shopify image format breakdown →
Image hosting origin 8,293 stores
95% vs 91% good LCP (same-origin vs inline data: URI)

Shopify stores with inline base64 data-URI images (10.5%) pass LCP at 91% vs 95% with same-origin images.

Across 8,293 Shopify storefronts, 99.2% load same-origin images (95% good LCP), 82.0% load cross-origin images (94% good LCP), and 10.5% embed base64 data: URIs (91% good LCP, 1.5s median).

Read the Shopify image source breakdown →
Script loading strategy 8,296 stores
95% vs 92% good LCP (deferred vs blocking scripts)

99.6% of Shopify stores use deferred scripts (95% good LCP), while 29.9% include blocking scripts (92%).

Across Shopify storefronts, 99.6% load scripts with defer (95% good LCP, 1.4s median), 99.5% use type="module", and 29.9% include synchronous blocking scripts (92% good LCP, 1.5s median).

Read the Shopify script loading breakdown →
Script origin (first-party vs third-party) 8,296 stores
100.0% / 100.0% first-party / third-party scripts on Shopify

100.0% of Shopify stores execute both first-party and cross-origin scripts (93% good INP).

Across 8,296 Shopify storefronts, 100.0% load scripts from the primary domain and 100.0% load cross-origin scripts (93% good INP, 111ms median).

Read the Shopify script origin breakdown →
Script initiator type 8,296 stores
93% vs 90% good INP (parser-initiated vs other initiators)

99.9% of Shopify stores use script-injected loaders, while 19.1% with other initiators pass INP at 90%.

Across Shopify storefronts, 99.9% load parser-initiated scripts (93% good INP), 99.9% load script-initiated scripts (93% good INP, 111ms median), and 19.1% have other script initiators (90% good INP, 121ms median).

Read the Shopify script initiator breakdown →
Stylesheet loading and placement 8,296 stores
90.8% / 76.8% non-blocking <head> / section <body> CSS

90.8% of Shopify stores use non-blocking <head> CSS (95% good LCP) and 76.8% include <body> CSS links.

Across Shopify storefronts, 90.8% load non-blocking stylesheets in <head> (95% good LCP) and 76.8% include section <link rel="stylesheet"> tags inside <body> (95% good LCP).

Read the Shopify stylesheet loading breakdown →
Stylesheet origin (first-party vs third-party) 8,296 stores
99.9% / 78.0% first-party / cross-origin CSS on Shopify

99.9% of Shopify stores serve first-party CSS (95% good LCP) and 78.0% load cross-origin CSS (94%).

Across 8,296 Shopify storefronts, 99.9% load first-party stylesheets (95% good LCP, 1.4s median) and 78.0% load cross-origin stylesheets (94% good LCP).

Read the Shopify stylesheet origin breakdown →
Web font format 8,119 stores
95% vs 88% good LCP (WOFF2 vs raw TTF on Shopify)

99.4% of Shopify stores serve WOFF2 fonts (95% good LCP), while 2.9% load TTF (88%).

Shopify's Liquid font_face filter emits .woff2 and .woff font URLs. Across Shopify storefronts, 99.4% serve WOFF2 (95% good LCP, 1.4s median), 20.7% load WOFF (94% good LCP), and 2.9% load TTF (88% good LCP, 1.7s median).

Read the Shopify font format breakdown →
Web font hosting source 8,119 stores
95% vs 93% good LCP (Shopify self-hosted vs Google Fonts)

92.5% of Shopify stores serve fonts from their first-party domain (95% good LCP vs 93% with Google Fonts).

Shopify's font_face filter serves theme fonts from the storefront's /cdn/fonts/ path. Across Shopify, 92.5% of stores serve first-party fonts (95% good LCP, 1.3s median), 32.3% load Google Fonts (93% good LCP, 1.5s median), and 3.2% load Adobe Fonts (91%).

Read the Shopify font source breakdown →
Video and audio media source 1,823 stores
57.7% / 50.4% same-origin / Shopify CDN media on Shopify

Shopify stores with video split between first-party paths (57.7%, 94% good LCP) and external CDNs (50.4%, 93%).

Shopify's Liquid video_tag filter outputs HTML <video> tags with HLS and MP4 sources. Across 1,823 media-using Shopify storefronts, 57.7% serve video from their primary domain (94% good LCP, 1.4s median) and 50.4% stream from cross-origin CDNs (93% good LCP, 1.5s median).

Read the Shopify media source breakdown →
Main-thread scheduling API usage 8,299 stores
99.7% / 89.5% requestIdleCallback / setInterval on Shopify

99.7% of Shopify stores call requestIdleCallback() (93% good INP, 111ms median).

Across Shopify storefronts, 99.7% call requestIdleCallback() (93% good INP), 99.8% call requestAnimationFrame(), and 89.5% call setInterval() (93% good INP).

Read the Shopify task scheduling breakdown →
Long Animation Frame (LoAF) script invoker type 5,259 stores
93% vs 91% good INP (classic script vs event listener LoAF)

On Shopify, 58.1% of LoAF stores record long frames in classic scripts (93% INP) vs 38.1% in event listeners (91%).

Across 5,259 Shopify stores with Long Animation Frames, 58.1% record long frames during classic script evaluation (93% good INP, 113ms median), 38.1% in DOM event listeners (91% good INP, 118ms median), and 32.0% in timer callbacks (90%).

Read the Shopify LoAF invoker breakdown →
Network resource type mix 8,299 stores
99.9% of Shopify stores firing runtime fetch() requests

99.9% of Shopify stores fire runtime fetch() calls alongside scripts (100.0%) and stylesheets (100.0%).

Across 8,299 Shopify storefronts, 99.9% execute fetch() requests during page load (95% good LCP, 1.4s median), 100.0% load scripts, and 100.0% load stylesheets.

Read the Shopify network resource type breakdown →
Subresource HTTP compression 8,299 stores
100.0% / 95.5% Brotli / Dictionary-Compressed Brotli on Shopify

95.5% of Shopify stores use Dictionary-Compressed Brotli (dcb) alongside Brotli (100.0%), passing LCP at 95%.

Across Shopify storefronts, 100.0% serve Brotli (br) responses (95% good LCP) and 95.5% serve Compression Dictionary Transport (dcb) responses (95% good LCP, 1.3s median).

Read the Shopify subresource compression breakdown →
Subresource CDN distribution 8,299 stores
100.0% / 51.2% Cloudflare / CloudFront subresources on Shopify

100.0% of Shopify stores serve assets from Cloudflare (95% good LCP) and 51.2% also load CloudFront assets.

Across 8,299 Shopify storefronts, 100.0% load subresources from Cloudflare (95% good LCP, 1.4s median), 51.2% load resources from Amazon CloudFront (93% good LCP), and 44.2% load resources from Fastly (94%).

Read the Shopify subresource CDN breakdown →
Total image payload 8,299 sites
50% stores shipping > 1 MB of images

50% of Shopify storefronts transfer over 1 MB of images.

Across Shopify storefronts, 36% transfer 350 KB to 1 MB of images and 35% transfer 1 to 3 MB. Stores under 350 KB pass LCP at 97% (1.2s median) compared with 92% on stores over 3 MB.

Explore Shopify image payload data →
Total JavaScript payload 8,299 sites
99% vs 90% good INP (250-550 KB vs > 1 MB)

58% of Shopify stores transfer over 1 MB of JavaScript (90% good INP vs 99% at 250 to 550 KB).

Across Shopify storefronts, 58% load more than 1 MB of scripts (90% good INP, 123ms median) compared with 99% (87ms median) on stores transferring 250 to 550 KB.

Explore Shopify script payload data →
Unused JavaScript bytes 8,298 sites
99% vs 91% good INP (850 KB-1.5 MB vs > 1.5 MB)

64% of Shopify stores ship over 1.5 MB of unused JavaScript on load.

Across Shopify storefronts, 64% have over 1.5 MB of unused JS during initial load (91% good INP, 121ms median) compared with 99% (95ms median) at 850 KB to 1.5 MB.

Explore Shopify unused JS data →
Total CSS payload 8,297 sites
61% stores under 80 KB of CSS

61% of Shopify stores transfer under 80 KB of total CSS.

Across Shopify storefronts, 47% transfer 40 to 80 KB of CSS (97% LCP pass rate) and 14% transfer under 40 KB (97%), compared with 88% on the 8% exceeding 160 KB.

Explore Shopify CSS payload data →
Unused CSS bytes 8,294 sites
58% stores under 300 KB unused CSS

58% of Shopify stores have under 300 KB of unused CSS.

Across Shopify storefronts, 20% have under 140 KB of unused CSS (97% LCP pass rate, 1.1s median) and 38% have 140 to 300 KB (97%), compared with 88% above 600 KB.

Explore Shopify unused CSS data →
Web font file count 8,299 sites
1.2s vs 1.5s median LCP (1-3 fonts vs 7+ fonts)

Shopify stores loading 1 to 3 fonts pass LCP at 97% vs 93% with 7+ fonts.

Across Shopify storefronts, 30% load 1 to 3 font files (97% LCP pass rate, 1.2s median) and 39% load 4 to 6 (95%), compared with 93% (1.5s median) on the 29% loading 7+ fonts.

Explore Shopify font count data →
Audio and video payload 8,299 sites
22% stores loading initial video/audio

22% of Shopify storefronts load video or audio on initial load.

Shopify's Liquid video_tag filter outputs HTML <video> tags for product and section media. Across Shopify stores, 78% ship no initial audio/video media (96% LCP pass rate, 1.3s median), 12% load under 500 KB (93%), and 8% exceed 3 MB (93%).

Explore Shopify media payload data →
Cookie count 8,299 sites
58% stores setting 6+ cookies

58% of Shopify stores set 6+ cookies on initial load.

Across Shopify storefronts, 58% set 6+ cookies (94% LCP pass rate, 1.4s median) and 24% set 3 to 5 cookies (97% pass rate, 1.3s median).

Explore Shopify cookie count data →
Synthetic interaction sub-parts 7,362 sites
97% vs 87% good INP (< 35ms vs > 110ms lab)

Shopify stores over 110ms in lab interactions pass field INP 10 points less often than stores under 35ms.

Across Shopify storefronts, 34% complete synthetic interactions in under 35ms (97% field INP pass rate, 103ms median) and 20% exceed 110ms in the lab (87% pass rate, 126ms median).

Explore Shopify interaction sub-parts →
Long Animation Frame work 8,008 sites
97% vs 86% good INP (< 80ms vs > 250ms LoAF)

Shopify stores over 250ms of LoAF work pass field INP 11 points less often than stores under 80ms.

Across Shopify storefronts, 28% record under 80ms of LoAF work (97% INP pass rate, 96ms median), 29% sit between 80 and 130ms (96%), and 19% exceed 250ms (86% pass rate, 128ms median).

Explore Shopify LoAF breakdown →
Synthetic paint milestones 8,290 sites
68% stores painting in 300-1,500ms

68% of Shopify stores paint between 300ms and 1,500ms in the lab.

Across Shopify storefronts, 38% record a 600 to 1,500ms lab LCP (94% field LCP pass rate, 1.4s median) and 30% paint in 300 to 600ms (97%, 1.2s median).

Explore Shopify lab paint data →
Document lifecycle milestones 8,299 sites
98% vs 92% good LCP (350-700ms vs > 1.5s)

73% of Shopify stores reach DOMComplete after 700ms.

Across Shopify storefronts, 42% reach DOMComplete in 700 to 1,500ms (96% field LCP pass rate), 31% exceed 1,500ms (92%), and 24% finish in 350 to 700ms (98% pass rate, 1.2s median).

Explore Shopify document lifecycle data →
Main-thread CPU breakdown 8,299 sites
99% vs 89% good INP (150-450ms vs > 1.2s CPU)

46% of Shopify stores exceed 1.2s of scripting CPU, passing INP 10 points less often than stores at 150 to 450ms.

Across Shopify storefronts, 46% spend over 1,200ms in main-thread scripting CPU (89% field INP pass rate, 126ms median) compared with 99% (87ms median) at 150 to 450ms.

Explore Shopify main-thread CPU data →
LCP sub-part breakdown 7,040 sites
70% stores where load delay is largest phase

Resource load delay is the largest LCP phase on 70% of Shopify stores (96% good LCP).

Across Shopify storefronts, resource load delay is the largest LCP sub-part on 70% of stores (96% LCP pass rate, 1.3s median) and render delay is the largest sub-part on 15% (88% pass rate, 1.6s median).

Explore Shopify LCP sub-part data →
Total page weight 8,299 sites
97% vs 92% good LCP (1.2-2.5 MB vs > 5 MB)

81% of Shopify stores transfer over 2.5 MB total page weight.

Across Shopify storefronts, 47% transfer 2.5 to 5 MB (96% LCP pass rate, 1.3s median), 34% exceed 5 MB (92%, 1.5s median), and 18% transfer 1.2 to 2.5 MB (97%, 1.1s median).

Explore Shopify total page weight data →

CMS standings

All CMSs →

210,902 crawled sites (126,761 with phone Chrome field data), representing millions of real page loads, October 2026 edition. How we measured.