Explore 8,248 Shopify websites
Pivot to any metric, technology, or signal in the dataset. Charts pick themselves. Prose writes itself.
What moves Core Web Vitals on Shopify
Field data findings across Shopify sites from our metric deep dives.
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, 46.0% of stores use default loading (97% good LCP, 1.2s median) and 31.2% have loading="lazy" (97% good LCP, 1.3s median), with 96% good LCP overall.
89.4% 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.4% of stores discover the hero image in HTML (96% good LCP, 1.3s median) compared with 9.5% in CSS background images (93% good LCP, 1.5s median).
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 98% (1.2s median) compared with 95% on mixed-rule stores.
95% of Shopify storefronts serve main HTML over HTTP/3.
Across Shopify storefronts, 95% serve main HTML over HTTP/3 (96% good LCP, 1.3s median), 0.8% use HTTP/2, and 3.8% use HTTP/1.1.
96% of Shopify stores call requestIdleCallback().
Across Shopify storefronts, 95.5% call requestIdleCallback() (96ms median INP, 96% good INP overall) and 4.2% call scheduler.yield().
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 (96% good LCP, 1.3s median) and 5.0% use AVIF.
93.7% of Shopify stores ship no inline speculation rules tag (88% all-three CWV pass rate).
Across Shopify storefronts, 93.7% have no inline <script type="speculationrules"> tag in initial HTML, and 88% of stores pass all three Core Web Vitals.
27.6% of Shopify stores set fetchpriority="high" on the hero image (1.2s median LCP).
Across Shopify storefronts, 27.6% set fetchpriority="high" on the LCP element (97% good LCP, 1.2s median) and 69.9% carry no priority hint (96% good LCP, 1.3s median).
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.7% of stores use srcset on the LCP image (96% good LCP) and 13.8% use <picture> (97% good LCP).
93.7% of Shopify stores ship no inline <script type="speculationrules"> tag (88% CWV pass rate).
Across Shopify storefronts, 93.7% emit no inline <script type="speculationrules"> element in initial HTML, with 88% passing all three Core Web Vitals overall.
Shopify storefronts record a 88% all-three CWV pass rate across 8,246 stores.
Across 8,246 audited Shopify storefronts, 88% pass all three Core Web Vitals (LCP, INP, and CLS) simultaneously.
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 (97% good LCP, 1.3s median) and 22.7% include at least one stylesheet with @import (93% good LCP, 1.5s median).
68.7% of Shopify stores include at least one uncompressed text response (95% vs 98% good LCP).
Across Shopify storefronts, 31.3% compress every text response (98% good LCP, 1.2s median) and 68.7% include at least one uncompressed text response (95% good LCP, 1.4s median).
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 (96% 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> (96% good LCP) and 29.1% use <picture> (96% good LCP).
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).
99.0% of iframe-using Shopify stores load default iframes (95% good LCP).
Across iframe-using Shopify storefronts, 99.0% load default iframes (95% good LCP) and 3.8% use loading="lazy".
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).
Shopify storefronts using CSS hints include scroll-driven animation rules on 97.3% and aspect-ratio on 63.6%.
Across hint-using Shopify storefronts, 97.3% include CSS scroll-driven animation rules (96% good INP), 65.3% use will-change, and 63.6% use aspect-ratio.
Among shifting Shopify stores, 79.8% record box growth (91% good CLS) and 36.1% record sibling displacement.
Across 5,389 Shopify storefronts with lab layout shifts, 79.8% record element box growth (91% good field CLS) and 36.1% record sibling displacement (90% good CLS).
50.3% of shifting Shopify stores record downward shifts (90% good CLS).
Across 5,389 Shopify stores with recorded lab shifts, 83.5% record horizontal shifts (92% good field CLS) and 50.3% record downward vertical shifts (90% good CLS).
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 (96% good LCP overall).
Among Shopify stores loading a JS framework, 81.1% use jQuery, 24.0% use Vue, and 5.4% use Alpine.js.
Across 3,887 Shopify stores loading a detected JS framework, 81.1% load jQuery (83% pass all 3 CWV), 24.0% load Vue (83%), and 5.4% load Alpine.js (89%).
Analytics-using Shopify stores include Google Analytics 4 on 92.8% and UA tags on 85.1% (95% good INP).
Across analytics-using Shopify storefronts, 92.8% load Google Analytics 4 (95% field INP pass rate) and 85.1% include Universal Analytics references.
Among the 657 Shopify stores loading ad network tags, 86% use AdSense and 11.4% use Taboola.
Across ad-using Shopify storefronts, 85.5% load AdSense/Google Ads (74% passing all three CWV), 11.4% load Taboola, and 3.7% load Criteo (88% overall among ad-using Shopify stores).
Google Tag Manager is used on 99.5% of tag-manager-using Shopify stores (95% good INP).
Across 5,099 Shopify storefronts with a tag manager, 99.5% use Google Tag Manager (95% good INP vs 96% overall) and 1.0% use Tealium iQ (96% good INP).
Shopify stores using iubenda (30.2%) pass all three CWV at 88% vs 79% for Cookiebot (36.9%).
Across 767 Shopify stores with an external CMP, 36.9% use Cookiebot (79% passing all three CWV), 33.6% use Civic Cookie Control (79%), and 30.2% use iubenda (88%).
3 Shopify stores show standalone optimization signatures (88% CWV pass rate).
Across the dataset, 3 Shopify storefronts have a detected standalone optimization plugin signature, with 88% passing all three Core Web Vitals.
100% of Shopify stores use a CDN, 71.6% load analytics, and 61.8% load tag managers.
Across 8,246 Shopify storefronts, 100.0% use a CDN (88% passing all three CWV), 71.6% load external analytics (85% CWV pass), and 61.8% load tag managers (85% CWV pass).
67.6% of Shopify storefronts exceed 1,500 DOM elements (95% good INP vs 99% at 800 to 1,499 nodes).
Across Shopify storefronts, 24.8% have between 800 and 1,499 DOM nodes (99% good INP) and 67.6% exceed 1,500 DOM nodes (95% good INP, 104ms median).
98% of Shopify stores have fewer than 32 DOM levels, while 1.6% reach 32+ levels (83% good INP).
Across 8,246 Shopify stores, 44.3% sit at 15 to 20 DOM levels (97% good INP), 49.2% sit at 21 to 31 levels (95% good INP), and 1.6% sit at 32+ levels (83% good INP).
89% of Shopify stores ship over 30 KB of HTML (97% good LCP at 30 to 75 KB vs 92% over 75 KB).
Across 8,246 Shopify storefronts, 63.6% transfer 30 to 75 KB of HTML (97% good LCP, 1.2s median) and 25.6% exceed 75 KB (92% good LCP, 1.5s median).
79% of Shopify stores embed iframes, with 4+ iframe stores (18.0%) passing CLS at 89%.
Across Shopify storefronts, 21.4% have 0 iframes (96% good CLS), 32.4% have 1 iframe (96%), 28.2% have 2 to 3 (93%), and 18.0% have 4+ iframes (89% good CLS).
19.9% of Shopify stores exceed 600ms lab TBT (90% good INP vs 98% at 0ms TBT, 8 points apart).
Across Shopify storefronts, 26.5% record 0ms lab TBT (98% good field INP), 36.1% record 1 to 200ms TBT (98% good INP), and 19.9% exceed 600ms TBT (90% good INP, 119ms median).
57.5% of shifting Shopify stores have 95%+ of their lab CLS in one shift (94% good CLS vs 90% multi-shift).
Across 5,389 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).
Shopify stores with 6+ lab layout shifts (8.2%) pass field CLS at 83% vs 98% with 0 shifts.
Across 8,246 Shopify storefronts, 33.5% record 0 lab shifts (98% good CLS), 42.4% record 1 to 2 shifts (95%), and 8.2% record 6 or more shifts (83% good CLS).
Shifting Shopify stores with a largest shift over 0.25 (12.3%) pass field CLS at 79% vs 97% under 0.01.
Across 5,487 shifting Shopify storefronts, 37.3% have a largest shift under 0.01 (97% good CLS), 37.5% sit at 0.01 to 0.10 (94%), and 12.3% exceed 0.25 (79% good CLS).
64.2% of Shopify stores connect to 15+ domains (84% 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 (94%), and 64.2% connect to 15+ domains (84%).
Shopify stores with 25% to 50% third-party requests (3.7%) pass INP at 89% vs 98% under 10%.
Across Shopify storefronts, 51.9% have under 10% third-party requests (98% good INP), 43.7% sit at 10% to 25% (94%), and 3.7% sit at 25% to 50% (89% good INP, 9 points apart).
100% of Shopify stores cache at least 50% of subresources (97% good LCP at 80%+ cacheable).
Across Shopify storefronts, 60.7% mark 80%+ of resources as cacheable (97% good LCP) and 39.0% cache 50% to 79% (94% good LCP).
44.7% of Shopify stores load 9+ third-party providers (82% CWV pass rate vs 96% at 2 to 4 providers).
Across Shopify storefronts, 25.9% load 2 to 4 external providers (96% all-three CWV pass rate), 29.5% load 5 to 8 (90%), and 44.7% load 9 or more providers (82%, 14 percentage points apart).
Shopify serves WebP on 99.3% of storefronts and AVIF on 90.6% (96% good LCP).
Across Shopify storefronts, 99.3% serve WebP images (96% good LCP, 1.3s median) and 90.6% serve AVIF images (96% good LCP).
Shopify stores with inline base64 data-URI images (10.5%) pass LCP at 93% vs 96% with same-origin images.
Across 8,240 Shopify storefronts, 99.2% load same-origin images (96% good LCP), 82.0% load cross-origin images (95% good LCP), and 10.5% embed base64 data: URIs (93% good LCP, 1.5s median).
99.6% of Shopify stores use deferred scripts (96% good LCP), while 29.9% include blocking scripts (94%).
Across Shopify storefronts, 99.6% load scripts with defer (96% good LCP, 1.3s median), 99.5% use type="module", and 29.9% include synchronous blocking scripts (94% good LCP, 1.5s median).
100.0% of Shopify stores execute both first-party and cross-origin scripts (96% good INP).
Across 8,243 Shopify storefronts, 100.0% load scripts from the primary domain and 100.0% load cross-origin scripts (96% good INP, 97ms median).
99.9% of Shopify stores use script-injected loaders, while 19.1% with other initiators pass INP at 94%.
Across Shopify storefronts, 99.9% load parser-initiated scripts (96% good INP), 99.9% load script-initiated scripts (96% good INP, 97ms median), and 19.1% have other script initiators (94% good INP, 105ms median).
90.8% of Shopify stores use non-blocking <head> CSS (96% good LCP) and 76.8% include <body> CSS links.
Across Shopify storefronts, 90.8% load non-blocking stylesheets in <head> (96% good LCP) and 76.8% include section <link rel="stylesheet"> tags inside <body> (96% good LCP).
99.9% of Shopify stores serve first-party CSS (96% good LCP) and 78.1% load cross-origin CSS (95%).
Across 8,243 Shopify storefronts, 99.9% load first-party stylesheets (96% good LCP, 1.3s median) and 78.1% load cross-origin stylesheets (95% good LCP).
99.4% of Shopify stores serve WOFF2 fonts (96% good LCP), while 2.9% load TTF (90%).
Shopify's Liquid font_face filter emits .woff2 and .woff font URLs. Across Shopify storefronts, 99.4% serve WOFF2 (96% good LCP, 1.3s median), 20.8% load WOFF (95% good LCP), and 2.9% load TTF (90% good LCP, 1.6s median).
92.5% of Shopify stores serve fonts from their first-party domain (96% good LCP vs 94% 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 (96% good LCP, 1.3s median), 32.3% load Google Fonts (94% good LCP, 1.5s median), and 3.2% load Adobe Fonts (91%).
Shopify stores with video split between first-party paths (57.6%, 95% good LCP) and external CDNs (50.3%, 93%).
Shopify's Liquid video_tag filter outputs HTML <video> tags with HLS and MP4 sources. Across 1,807 media-using Shopify storefronts, 57.6% serve video from their primary domain (95% good LCP, 1.4s median) and 50.3% stream from cross-origin CDNs (93% good LCP, 1.5s median).
99.7% of Shopify stores call requestIdleCallback() (96% good INP, 97ms median).
Across Shopify storefronts, 99.7% call requestIdleCallback() (96% good INP), 99.8% call requestAnimationFrame(), and 89.5% call setInterval() (96% good INP).
99.9% of Shopify stores fire runtime fetch() calls alongside scripts (100.0%) and stylesheets (100.0%).
Across 8,246 Shopify storefronts, 99.9% execute fetch() requests during page load (96% good LCP, 1.3s median), 100.0% load scripts, and 100.0% load stylesheets.
95.5% of Shopify stores use Dictionary-Compressed Brotli (dcb) alongside Brotli (100.0%), passing LCP at 96%.
Across Shopify storefronts, 100.0% serve Brotli (br) responses (96% good LCP) and 95.5% serve Compression Dictionary Transport (dcb) responses (96% good LCP, 1.3s median).
100.0% of Shopify stores serve assets from Cloudflare (96% good LCP) and 51.3% also load CloudFront assets.
Across 8,246 Shopify storefronts, 100.0% load subresources from Cloudflare (96% good LCP, 1.3s median), 51.3% load resources from Amazon CloudFront (94% good LCP), and 44.2% load resources from Fastly (94%).
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 98% (1.2s median) compared with 93% on stores over 3 MB.
58% of Shopify stores transfer over 1 MB of JavaScript (94% good INP vs 99% at 250 to 550 KB).
Across Shopify storefronts, 58% load more than 1 MB of scripts (94% good INP, 110ms median) compared with 99% (80ms median) on stores transferring 250 to 550 KB.
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 (94% good INP, 107ms median) compared with 99% (87ms median) at 850 KB to 1.5 MB.
60% 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 (98%), compared with 90% on the 8% exceeding 160 KB.
58% of Shopify stores have under 300 KB of unused CSS.
Across Shopify storefronts, 20% have under 140 KB of unused CSS (98% LCP pass rate, 1.1s median) and 38% have 140 to 300 KB (98%), compared with 90% above 600 KB.
Shopify stores loading 1 to 3 fonts pass LCP at 98% vs 94% with 7+ fonts.
Across Shopify storefronts, 30% load 1 to 3 font files (98% LCP pass rate, 1.2s median) and 39% load 4 to 6 (96%), compared with 94% (1.5s median) on the 29% loading 7+ fonts.
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 (95%), and 8% exceed 3 MB (94%).
59% of Shopify stores set 6+ cookies on initial load.
Across Shopify storefronts, 59% set 6+ cookies (95% LCP pass rate, 1.4s median) and 24% set 3 to 5 cookies (98% pass rate, 1.2s median).
Shopify stores over 110ms in lab interactions pass field INP 7 points less often than stores under 35ms.
Across Shopify storefronts, 34% complete synthetic interactions in under 35ms (98% field INP pass rate, 90ms median) and 20% exceed 110ms in the lab (91% pass rate, 112ms median).
Shopify stores over 250ms of LoAF work pass field INP 7 points less often than stores under 80ms.
Across Shopify storefronts, 28% record under 80ms of LoAF work (98% INP pass rate, 87ms median), 29% sit between 80 and 130ms (97%), and 19% exceed 250ms (91% pass rate, 112ms median).
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 (95% field LCP pass rate, 1.4s median) and 29% paint in 300 to 600ms (98%, 1.2s median).
73% of Shopify stores reach DOMComplete after 700ms.
Across Shopify storefronts, 42% reach DOMComplete in 700 to 1,500ms (97% field LCP pass rate), 31% exceed 1,500ms (93%), and 24% finish in 350 to 700ms (98% pass rate, 1.1s median).
46% of Shopify stores exceed 1.2s of scripting CPU, passing INP 6 points less often than stores at 150 to 450ms.
Across Shopify storefronts, 46% spend over 1,200ms in main-thread scripting CPU (93% field INP pass rate, 112ms median) compared with 99% (79ms median) at 150 to 450ms.
Resource load delay is the largest LCP phase on 70% of Shopify stores (97% good LCP).
Across Shopify storefronts, resource load delay is the largest LCP sub-part on 70% of stores (97% LCP pass rate, 1.3s median) and render delay is the largest sub-part on 15% (90% pass rate, 1.6s median).
81% of Shopify stores transfer over 2.5 MB total page weight.
Across Shopify storefronts, 47% transfer 2.5 to 5 MB (97% LCP pass rate, 1.3s median), 34% exceed 5 MB (93%, 1.5s median), and 18% transfer 1.2 to 2.5 MB (98%, 1.1s median).
Hot questions this edition
Preload, fetchpriority — do the hints help?
LCP by priority hint on the element
Which CMS is fastest?
WordPress, Shopify, Wix, Squarespace ranked
What blocks the main thread?
Top scripts in long animation frames
Are AVIF sites faster?
JPEG, WebP, AVIF, JXL ranked by LCP
Where do the LCP milliseconds go?
TTFB, load delay, load time, render delay
How big is the JavaScript tax on INP?
Script count and weight vs INP
How much shipped JavaScript even runs?
Used vs unused script bytes
Which CDNs hit the lowest TTFB?
Cloudflare, Akamai, Fastly, CloudFront
INP cost of analytics scripts
GA4, Plausible, Fathom, Matomo
DOM size and CLS
How DOM growth correlates with shifts
Or browse the data
120 signals across 13 sections. Use the tree on the left or the search box.
- Headline metrics 5 signals LCP, INP, CLS…
- Tech stack 3 signals CDN (7), CMS (12), Frameworks (11)…
- Third parties 27 signals JS libraries (26), Analytics (20), CMS (17)…
- Main thread 1 signals Top INP blockers (25)…
- LCP Image 8 signals LCP discovery, LCP element type, LCP image format…
- LCP Timing 1 signals LCP phase breakdown…
- Page resources 36 signals Bytes by resource type, Compression mix, Cookies per site…
- INP 6 signals Blocking frame breakdown, CSS hints, INP phase breakdown…
- CLS 5 signals Largest single shift, Layout shift count, Shift concentration…
- CDN & Delivery 12 signals Cache strategy mix, Cacheable responses, Connection hints…
- Synthetic (lab) 4 signals Document lifecycle (lab), Lab paint timeline, Main-thread CPU (lab)…
- Speculation rules 2 signals Speculation eagerness, Speculation posture…
- Tech stack 10 signals Ad networks on page, Analytics on page, CMS…
203,892 crawled sites with Chrome field data, representing millions of real page loads, October 2026 edition. How we measured.