Shopify — Core Web Vitals

Field data PhoneDesktopAll October 2026 edition · Desktop field outcomes
82.6% of Shopify sites pass all three Core Web Vitals
  • #2 of 12 CMSs by overall pass rate
  • Add TTFB and only 81.1% still pass
  • Runs on 4.1% of all sites measured (8,573 crawled Shopify sites, 3,968 with desktop 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.6s p75
96.5% good ▲ fleet 86.1%
INP 78ms p75
99.4% good ▲ fleet 98.9%
CLS 0.06 p75
85.8% good ▲ fleet 77.9%
TTFB diagnostic 467ms p75
96.6% good ▲ fleet 63.1%
FCP diagnostic 1.0s p75
96.3% good ▲ fleet 82.3%
Shopify is strong across the board. Even its weakest metric, INP (99.4% good), is ahead of the fleet’s 98.9%. 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 (97% good LCP, 1.2s median) and 31.2% have loading="lazy" (97% good LCP, 1.2s median), with 97% good LCP overall.

Read the Shopify LCP loading breakdown →
HTML document protocol 8,299 stores
95.4% serve HTML over HTTP/3 (97% good LCP)

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

Across Shopify storefronts, 95% serve main HTML over HTTP/3 (97% 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() (61ms median INP, 99% 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 (96% good LCP, 1.3s median) and 5.0% use AVIF.

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

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

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

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

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

Across Shopify storefronts, 27.7% set fetchpriority="high" on the LCP element (97% good LCP, 1.2s median) and 69.8% carry no priority hint (97% good LCP, 1.3s 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 (97% good LCP) and 13.8% use <picture> (98% 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 (83% CWV pass rate).

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

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

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

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

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

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

Across Shopify storefronts, 77.3% have no CSS @import rules (97% good LCP, 1.2s median) and 22.7% include at least one stylesheet with @import (95% good LCP, 1.4s median).

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

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

Across Shopify storefronts, 31.4% compress every text response (98% good LCP, 1.1s median) and 68.6% include at least one uncompressed text response (96% good LCP, 1.3s 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 (97% good LCP).

Read the Shopify image loading breakdown →
Responsive image markup 8,276 stores
96.0% ship responsive srcset (97% 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> (97% good LCP) and 29.1% use <picture> (97% good LCP).

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

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

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

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

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

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

Read the Shopify iframe dimensions breakdown →
CSS rendering hints 8,215 stores
97.2% ship scroll-driven CSS (99% 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 (99% 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 (81% good field CLS)

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

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

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

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

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

Read the Shopify shift direction breakdown →
Subresource network protocols 8,299 stores
100% H3 / 100% H2 edge subresource multiplexing (97% 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 (97% 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 (76% pass all 3 CWV), 24.1% load Vue (77%), and 5.4% load Alpine.js (88%).

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

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

Across analytics-using Shopify storefronts, 92.8% load Google Analytics 4 (99% 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 (80% passing all three CWV), 11.5% load Taboola, and 3.6% load Criteo (83% overall among ad-using Shopify stores).

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

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

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

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

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

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

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

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

Across the dataset, 3 Shopify storefronts have a detected standalone optimization plugin signature, with 83% 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 (83% 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 →
Maximum DOM depth 8,299 stores
100% vs 94% good INP (15-20 vs 32+ levels)

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

Across 8,299 Shopify stores, 44.3% sit at 15 to 20 DOM levels (100% good INP), 49.2% sit at 21 to 31 levels (99% good INP), and 1.6% sit at 32+ levels (94% 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 (99% good LCP at 30 to 75 KB vs 93% over 75 KB).

Across 8,299 Shopify storefronts, 63.5% transfer 30 to 75 KB of HTML (99% good LCP, 1.2s median) and 25.6% exceed 75 KB (93% good LCP, 1.5s median).

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

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

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

Read the Shopify iframe count breakdown →
CLS shift concentration 5,420 stores
86% vs 79% good CLS (single shift vs multi-shift)

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

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

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

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

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

Read the Shopify layout shift count breakdown →
Largest single layout shift score 5,518 stores
90% vs 64% 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 64% vs 90% under 0.01.

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

Read the Shopify largest shift breakdown →
Distinct network domain count 8,299 stores
96% 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 96% at 4 to 7 domains).

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

Read the Shopify network domain count 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 (98% good LCP at 80%+ cacheable).

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

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

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

Across Shopify storefronts, 25.9% load 2 to 4 external providers (90% all-three CWV pass rate), 29.5% load 5 to 8 (85%), and 44.6% load 9 or more providers (80%, 10 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% (97% good LCP).

Across Shopify storefronts, 99.3% serve WebP images (96% good LCP, 1.3s median) and 90.6% serve AVIF images (97% good LCP).

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

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

Across Shopify storefronts, 99.6% load scripts with defer (97% good LCP, 1.3s median), 99.5% use type="module", and 29.9% include synchronous blocking scripts (95% good LCP, 1.4s 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 (99% good INP).

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

Read the Shopify script origin 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 (97% good LCP) and 76.8% include <body> CSS links.

Across Shopify storefronts, 90.8% load non-blocking stylesheets in <head> (97% good LCP) and 76.8% include section <link rel="stylesheet"> tags inside <body> (97% 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 (97% good LCP) and 78.0% load cross-origin CSS (96%).

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

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

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.7% load WOFF (96% good LCP), and 2.9% load TTF (90% good LCP, 1.5s median).

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

92.5% of Shopify stores serve fonts from their first-party domain (97% good LCP vs 95% 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 (97% good LCP, 1.3s median), 32.3% load Google Fonts (95% good LCP, 1.4s median), and 3.2% load Adobe Fonts (96%).

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%, 97% good LCP) and external CDNs (50.4%, 96%).

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 (97% good LCP, 1.3s median) and 50.4% stream from cross-origin CDNs (96% good LCP, 1.4s 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() (99% good INP, 61ms median).

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

Read the Shopify task scheduling 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 (97% good LCP, 1.3s 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 97%.

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

Read the Shopify subresource compression 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 98% (1.1s median) compared with 94% on stores over 3 MB.

Explore Shopify image payload 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 (98% LCP pass rate) and 14% transfer under 40 KB (98%), compared with 93% 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 (98% LCP pass rate, 1.0s median) and 38% have 140 to 300 KB (99%), compared with 91% above 600 KB.

Explore Shopify unused CSS data →
Synthetic interaction sub-parts 7,362 sites
100% vs 99% good INP (< 35ms vs > 110ms lab)

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

Across Shopify storefronts, 34% complete synthetic interactions in under 35ms (100% field INP pass rate, 55ms median) and 20% exceed 110ms in the lab (99% pass rate, 69ms median).

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

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

Across Shopify storefronts, 28% record under 80ms of LoAF work (100% INP pass rate, 51ms median), 29% sit between 80 and 130ms (100%), and 19% exceed 250ms (98% pass rate, 68ms 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 (96% field LCP pass rate, 1.3s median) and 30% paint in 300 to 600ms (99%, 1.1s median).

Explore Shopify lab paint data →
Document lifecycle milestones 8,299 sites
99% vs 94% 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 (98% field LCP pass rate), 31% exceed 1,500ms (94%), and 24% finish in 350 to 700ms (99% pass rate, 1.1s median).

Explore Shopify document lifecycle 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 (97% good LCP).

Across Shopify storefronts, resource load delay is the largest LCP sub-part on 70% of stores (97% LCP pass rate, 1.2s median) and render delay is the largest sub-part on 15% (94% pass rate, 1.5s median).

Explore Shopify LCP sub-part data →
Total page weight 8,299 sites
98% vs 95% 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 (98% LCP pass rate, 1.2s median), 34% exceed 5 MB (95%, 1.4s median), and 18% transfer 1.2 to 2.5 MB (98%, 1.0s median).

Explore Shopify total page weight data →

CMS standings

All CMSs →

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