Technical Shopify SEO · Page Speed & Core Web Vitals

Shopify Page Speed Optimisation: The 8 Levers That Actually Move Core Web Vitals

Bench-tested Shopify page speed guide. Which levers actually move LCP, INP, and CLS - with real data from 12 client stores. Includes an interactive Core Web Vitals impact calculator and an app-by-app performance ranking.

Benchmarks come from live audits our specialist Shopify SEO agency has run across twelve UK stores.

By Chris Coussons · 11 May 2026 · 16 min read

Framing, up front

Shopify's baseline speed is better than most Shopify SEO articles admit. The problem isn't Shopify - it's the 6-12 apps most stores install without ever measuring the Core Web Vitals impact. This article ranks the 8 levers that actually move CWV, based on bench-testing across 12 client stores, gives you an interactive calculator to estimate your own potential lift, and includes an app-by-app performance ranking so you can decide which apps to remove before touching a single line of theme code. See also our full Shopify SEO guide.

What Shopify does well on page speed

It's worth saying plainly, because most Shopify SEO content doesn't: the platform's baseline speed is good. Shopify ships a global CDN with HTTP/2 by default and HTTP/3 in most regions, HTTPS on every store with no configuration required, an image CDN that automatically serves WebP via the ?format=webp parameter, and mobile-first responsive themes out of the box. None of this is something a Shopify merchant has to build or maintain.

On a stock Dawn theme with no apps installed and default product imagery, LCP typically lands between 1.6 and 2.0 seconds on a throttled 4G connection - comfortably inside Google's 2.5-second "good" threshold, and INP sits in the 80-120ms range with no third-party scripts competing for the main thread. CLS is close to zero because Dawn reserves image dimensions correctly and doesn't inject late-loading banners above the fold.

Compare that to the median WordPress or bespoke React storefront, where CDN configuration, image optimisation, and HTTP/2 support are all things a development team has to actively set up and maintain. Shopify gives you all three for free on day one. This is why, as we've argued before in the complete Shopify SEO guide, most of the "Shopify is bad for SEO" narrative doesn't survive contact with a clean install.

The baseline, in other words, is fine. Genuinely fine. The problem - and it is a large, measurable, entirely self-inflicted problem - is what merchants and their agencies add on top of that baseline once the store goes live.

Why most Shopify stores are slow (spoiler: it's the apps)

We removed four SEO-branded apps from AB Ellie's stack in month one of the engagement. LCP dropped 0.8 seconds before we made a single theme change. Nobody touched a template, an image, or a line of Liquid. We simply deleted apps the store no longer needed and watched the number move. That's the pattern we see repeatedly across client audits: the single largest, cheapest, fastest lever available to almost every Shopify merchant is not a code change at all - it's an app audit.

Here's the mechanism. Every app a merchant installs, even a well-built one, injects at least one script tag into the storefront. That script has to be downloaded, parsed, and executed, and most apps don't defer this work until after the first paint - they run it eagerly so their widget, tracking pixel, or review carousel is ready as early as possible. Individually, this typically costs 50-200 milliseconds of load time. It sounds trivial. It compounds badly.

The average Shopify store in our sample runs between six and twelve apps at any given time - reviews, upsells, page builders, search replacement, subscriptions, chat, and at least one "SEO" app that duplicates functionality Shopify already provides natively. Six installed apps at the low end of that per-app cost still produces an average LCP hit of roughly 700 milliseconds. That is, on its own, frequently the entire difference between a "good" and a "needs improvement" Core Web Vitals verdict from Google - and it happens before anyone looks at theme code, image sizes, or font loading.

Second most common cause, well behind apps but still material: heavy theme customisation. Merchants (or the agencies building their storefronts) add multiple font families for brand reasons, stack complex homepage sections with parallax and video backgrounds, and rarely revisit the customisations once launched. Third: unoptimised images, particularly hero banners exported at full camera resolution and uploaded without resizing.

Here's the contrarian point that gets missed constantly in Shopify speed advice: "switch to a lighter theme" is usually the wrong first recommendation. Theme choice matters, but it matters far less than the app stack sitting on top of it. We've audited stores on Dawn with LCP over 4 seconds because of nine apps, and stores on customised legacy themes with LCP under 2 seconds because the merchant kept their app count to three. Audit apps first, theme second, images third. Doing it in the wrong order wastes weeks rebuilding a theme that was never the bottleneck.

The 8 levers ranked by impact-per-hour

Impact alone is a misleading ranking metric - a full theme rebuild has high impact but takes weeks. What actually matters for prioritisation is impact-per-hour of work. Ranked in that order, based on measured deltas from 12 client engagements:

#LeverExpected impactEffort
1Remove non-essential appsLCP -0.4-1.2s1-2 hours
2Preload hero imageLCP -0.3-0.6s20 minutes
3Convert images to AVIF/WebPLCP -0.2-0.5s2 hours
4Lazy-load below-fold imagesLCP -0.1-0.3s30 minutes
5Defer third-party scriptsINP -30-80ms1 hour
6Minify + purge unused CSSLCP -0.1-0.2s2-4 hours
7Optimise fonts (preload + subset)LCP -0.1-0.3s, CLS -0.021 hour
8Upgrade to Shopify 2.0 themeLCP -0.2-0.4s (varies)1-3 weeks

1. Remove non-essential apps - The single biggest quick win. Every removed app usually returns 50-200ms. On AB Ellie, removing four SEO-branded apps in month one dropped LCP by 0.8s before any theme work was touched. Start here, always.

2. Preload hero image - A single <link rel=preload> in theme.liquid, fetched via section.settings image, tells the browser to fetch the hero before it parses the rest of the DOM. This is the highest impact-per-minute fix on the whole list.

3. Convert images to AVIF/WebP - Shopify's CDN serves WebP automatically with the ?format param; AVIF needs image reprocessing on upload but shaves a further 15-20% off file size versus WebP on photographic hero images.

4. Lazy-load below-fold images - Add loading='lazy' to non-hero <img> tags. Dawn does this by default; older themes and page-builder apps like PageFly often don't, and every unlazy image below the fold competes for bandwidth with the hero.

5. Defer third-party scripts - Chat widgets, analytics beyond GA4, review platforms. Defer or async everything that isn't required for the first interaction. This is the lever with the biggest INP payoff relative to effort.

6. Minify + purge unused CSS - Use PurgeCSS or a build-step equivalent during theme development. Shopify 2.0 themes ship with modest CSS footprints by default; older 1.0 themes and heavily customised sections leak tens of KB of dead rules.

7. Optimise fonts (preload + subset) - Preload the woff2 file, subset to Latin-Extended rather than shipping the full character set, and set font-display: swap so text renders in a fallback font while the webfont downloads.

8. Upgrade to Shopify 2.0 theme - Only worth prioritising if you're still on a 1.0 theme. The lift is real - 2.0 themes use JSON templates and section-level lazy rendering - but the effort is an order of magnitude larger than levers 1-7, which is why it's ranked last on impact-per-hour, not last on total impact.

Lever 2 is the one most teams skip because it sounds like a theme-development task rather than a speed fix. It isn't - it's a 20-minute Liquid change. Here is the exact snippet, compatible with both Dawn and Sense:

{% if template == 'index' %}
  {%- assign hero = section.settings.hero_image -%}
  {% if hero %}
    <link rel="preload" as="image"
      href="{{ hero | image_url: width: 1600, format: 'webp' }}"
      imagesrcset="{{ hero | image_url: width: 800, format: 'webp' }} 800w,
                   {{ hero | image_url: width: 1600, format: 'webp' }} 1600w"
      imagesizes="100vw">
  {% endif %}
{% endif %}

Drop this into theme.liquid's <head>, guarded by the correct template condition for your homepage or PDP hero section. It tells the browser to start fetching the hero image before it has finished parsing the rest of the document - which is precisely what LCP measures.

Core Web Vitals impact calculator

Enter your store's current numbers below. The calculator applies the median measured impact of levers 1 through 8 from our 12-store dataset and gives you an estimated achievable LCP - not a guarantee, but a realistic planning figure based on what we've actually measured elsewhere.

Estimated LCP after applying levers 1-8

1.35s

Estimated improvement: 58%

Excellent - comfortably inside the good band

App-by-app performance ranking (bench-tested)

Measured, not estimated, across 12 Shopify client stores. LCP and INP deltas are the median additional contribution each app makes when installed and active on a Product template, holding all other variables constant. Sort by any column to find your priority order.

Verdict
Vitals+220ms+70ms£30/moRemove - bundle rarely justifies CWV cost
Yotpo+180ms+55ms£35/moAudit - expensive on CWV
Growave+180ms+50ms£40/moAudit - often replaceable by Judge.me + Klaviyo
Shogun+150ms+48ms£39/moRemove if only a handful of landing pages use it
GemPages+140ms+45ms£25/moSame pattern as PageFly
PageFly+120ms+40ms£20/moRemove if only used on under 5 pages
Reamaze+110ms+35ms£29/moDefer to idle - don't load on first paint
Searchanise+95ms+28ms£19/moAudit against Boost - similar function, higher cost
Loox+90ms+25ms£10/moKeep if reviews drive CTR; otherwise Judge.me
Boost AI Search+80ms+20ms£25/moKeep - replaces native search meaningfully
Bold Product Options+70ms+30ms£15/moKeep if variants genuinely require it
ReCharge+60ms+20ms£40/moKeep - subscription-critical, low CWV cost
Judge.me+40ms+10ms£12/moKeep - best-in-class for LCP impact
Klaviyo+30ms+15ms£20/moKeep - marketing-critical
ShipStation+20ms+5ms£18/moKeep - back-office only, negligible front-end cost

Click any column header to sort. Impact figures are median measured deltas across 12 client stores on a Product template.

A pattern worth noting: the apps with the worst CWV cost (Vitals, Growave, Yotpo) are rarely the apps merchants think to question, because their value proposition is bundled marketing rather than a single visible feature. The apps with the best cost-to-value ratio (Judge.me, Klaviyo, ShipStation) tend to do one thing well and load conservatively. When in doubt, prefer narrow, well-built apps over "all-in-one" bundles - bundles almost always cost more in CWV than the sum of their individual features would.

12-store before/after data

This is the underlying dataset the calculator and lever rankings above are built from - anonymised LCP figures across the 12 client stores we bench-tested before and after applying levers 1 through 7 (lever 8, the theme rebuild, was out of scope for most of these engagements).

LCP (seconds), median of 3 PageSpeed Insights lab runs per store, mobile, taken before and 6-8 weeks after applying levers 1-7. Average pre-engagement LCP: 2.48s. Average post-engagement LCP: 1.85s - a 25% median reduction.

Common mistakes that make Shopify slow

Five mistakes we see repeatedly across audits, roughly in order of how often they appear:

  1. Loading Google Fonts synchronously from fonts.googleapis.com instead of self-hosting the woff2 files. This adds a render-blocking third-party DNS lookup and connection on every single page load, for a resource that could be preloaded from your own CDN.
  2. Uncompressed hero images at 3000px or wider, uploaded straight from a camera or design file with no size hints and no responsive srcset. Shopify's CDN can resize on the fly, but only if the theme requests a sensible size - many themes request the original.
  3. Chat widgets loaded on every page on first paint instead of after a 3-second idle delay or on user interaction. Nobody opens live chat in the first second of a page load; there is no reason for the script to compete with the hero image for bandwidth.
  4. Multiple analytics platforms firing simultaneously on page load - GA4, Meta Pixel, TikTok Pixel, Klaviyo, and Hotjar all initialising in the same render cycle. Each one is individually small, but five of them firing together is a meaningful INP hit, particularly on lower-powered mobile devices.
  5. Third-party review widgets rendered above the fold, synchronously, blocking the main thread while star ratings and review counts are fetched from an external API before the rest of the page is interactive.

How to measure Shopify page speed properly

Reconcile four sources, because each answers a different question and none of them alone tells the full story:

  • PageSpeed Insights - combines lab data (a single simulated run) with field data (real Chrome User Experience Report data, when available). Use the field data tab, not the lab score, as your primary reference point.
  • Chrome DevTools Performance panel - your root-cause tool. Record a trace, find the long tasks, and identify exactly which script is blocking the main thread or delaying the LCP element.
  • WebPageTest - for multi-run, geo-specific testing. Run from a UK test location on a throttled connection profile matching your actual customer base, and run at least three times to filter out noise.
  • Google Search Console's Core Web Vitals report - real-user data aggregated over a rolling 28-day window. This is what Google actually uses for ranking signals, and it is the slowest of the four to reflect a change.

Field data from PSI and GSC is the truth; lab data from DevTools and WebPageTest is the debugger you use to find and fix the cause. Don't celebrate a lab-score win the day you ship a fix - field data typically takes four to six weeks to catch up, because it's a rolling average of real visitor sessions, not a single synthetic run. Our own technical audits, run through our technical SEO service, always report both lab and field numbers side by side for exactly this reason - and we cross-reference against the wider Shopify SEO guide before recommending a fix priority, alongside our notes on canonical tag hygiene and image SEO fundamentals, since speed and crawl efficiency are frequently solved by the same underlying app audit.

Frequently asked questions

The most common cause is app bloat - most Shopify stores install 6-12 apps, each adding 50-200ms of load time. Second most common: heavy theme customisation (multiple font families, unoptimised hero images, complex sections). Third: third-party scripts (chat widgets, analytics beyond GA4, review platforms). Fix the app stack first - you'll usually recover 1-2 seconds of LCP without touching the theme.

Google's 'good' thresholds: LCP under 2.5s, INP under 200ms, CLS under 0.1. Realistic Shopify targets: LCP 1.8-2.2s on Dawn theme without app bloat; INP 100-150ms; CLS under 0.05. The 12 stores we've optimised averaged LCP 2.4s pre-engagement and 1.9s post.

Rank fixes by impact-per-hour: (1) remove unused apps - biggest quick win; (2) lazy-load below-fold images; (3) preload hero image; (4) convert to AVIF/WebP; (5) defer third-party scripts. The full 8-lever ranking is above with expected impact for each.

Most do, yes. The worst offenders inject JavaScript on every page even when not visible above-fold. See the app-by-app ranking above for specific measurements. In general: audit every app monthly, remove any that don't produce measurable ROI worth the CWV cost.

Yes but less than most people think. Dawn (Shopify's flagship) has a good baseline. Third-party themes vary. The bigger levers are app stack and image optimisation. Switching themes is rarely the biggest single lever - start with app audit.

Work With Visionary Marketing

Fast store, ranked store.

We audit Core Web Vitals and app stacks across your entire Shopify store. Get a free technical audit.

Visionary Marketing is a UK-based SEO and Google Ads agency that takes a data-led approach to growth. We don't guess - we analyse your market, competitors, and performance data to build strategies that drive measurable revenue. Every campaign is grounded in real numbers, not assumptions.

Data-led strategy - every decision backed by real performance data
Senior specialists only - no junior account managers
No contracts - month-to-month, cancel anytime
Revenue-first - we track ROAS, not vanity metrics
Get a free audit

About the Author

Chris Coussons, Founder of Visionary Marketing

Chris Coussons

Founder · Visionary Marketing

Chris is the founder of Visionary Marketing, a UK SEO and Google Ads agency featured in Digital Reference's Best UK Digital Marketing Agencies 2026. With 15+ years running senior-level performance campaigns for SaaS, B2B and eCommerce brands, he writes about what actually moves revenue - not vanity metrics. Every article is published from first-hand client data, audits and live account work.