Shopify Page Speed Score: What It Actually Means and How to Improve It

Niko MoustoukasUpdated

Quick summary

A Shopify PageSpeed score above 60 on mobile is the threshold at which most stores begin to see meaningful conversion and SEO improvement. The biggest score-dragging factors are uncompressed images (fix with WebP and compression), render-blocking third-party scripts from apps (fix by deferring or removing unused apps), and large theme JavaScript bundles (fix by switching to a lighter theme).

Run your Shopify store through Google PageSpeed Insights and you may see a score of 35 on mobile. Panic sets in. You wonder how your store can be this slow when you are paying for a premium theme and a reliable app stack.

The score alone is not the full picture, but the underlying performance problems it reveals are real. Google uses Core Web Vitals as a ranking signal. Slow pages convert worse than fast ones: Google's own data shows that as page load time increases from 1 to 5 seconds, the probability of a mobile visitor bouncing increases by 90%. And Shopify stores specifically have a speed problem relative to other platforms, because of how apps inject scripts and how the platform's JavaScript architecture works.

The good news: most of the biggest speed killers are fixable without a developer, and the improvements compound quickly once you start removing unnecessary weight.

What Does Google PageSpeed Insights Actually Measure?

PageSpeed Insights does not measure raw download speed. It measures user experience metrics, specifically a group called Core Web Vitals. Understanding what each metric represents helps you prioritise fixes correctly.

Largest Contentful Paint (LCP) measures how long it takes for the largest visible content element (usually the hero image or the main product photo) to load. Google's threshold for a "good" LCP is under 2.5 seconds. LCP above 4 seconds is classified as "poor". This metric is heavily affected by image file size and server response time.

Interaction to Next Paint (INP) measures how long the page takes to respond after a user interaction (a click, a tap, a form input). It replaced First Input Delay (FID) as a Core Web Vital in March 2024. A "good" INP is under 200 milliseconds. High INP is usually caused by JavaScript-heavy pages where scripts block the browser's ability to respond to user input.

Cumulative Layout Shift (CLS) measures how much the page layout moves unexpectedly as it loads. An image that loads late and pushes content down, a font swap that reflows text, a banner that appears and shifts the header all contribute to CLS. Google's "good" threshold is CLS below 0.1.

PageSpeed Insights gives you a score from 0 to 100 based on a weighted combination of these and related metrics, tested on a simulated mid-range mobile device on a 4G connection. This is intentionally demanding: it represents real-world conditions for a significant proportion of your mobile visitors.

Why Shopify Scores Vary So Much

A store running a clean, lightly-modified Dawn theme with three or four apps might score 70 to 85 on mobile PageSpeed. A store running a heavily customised theme with 30 apps might score 20 to 40. The difference is almost entirely explained by JavaScript load.

Shopify's architecture loads apps via Liquid theme tags. Each app that is enabled injects JavaScript into your storefront. A review app, a loyalty programme, a chat widget, a cookie consent tool, a size guide popup, an exit-intent popup, a live inventory counter: each adds script files that the browser must download, parse, and execute before or during page render.

JavaScript from third-party apps is often render-blocking or blocks the main thread, which directly hits INP. Images uploaded without optimisation hit LCP. Late-loading fonts and banner injections hit CLS.

The version of Shopify also matters slightly. Shopify has improved its platform-level JavaScript over time, and Online Store 2.0 themes generally perform better than older Legacy themes. If you are running a theme older than 2021, a theme upgrade alone can deliver a meaningful speed improvement.

The Biggest Speed Killers on Shopify Stores

In order of typical impact:

1. Too many apps. Each app adds JavaScript. Apps that are installed but no longer actively used often continue to inject scripts into every page. Audit your app list regularly.

2. Unoptimised images. A product hero image uploaded at 4,000 x 3,000 pixels and 3MB will dominate your LCP score. Shopify's CDN serves images in WebP format automatically in modern browsers, but it does not resize images you upload. A 3MB source image is still being served as a large WebP, just smaller. Upload images at the correct display dimensions.

3. Render-blocking third-party scripts. Chat widgets, tracking pixels, and analytics scripts loaded in the <head> of your theme block page rendering. These should be loaded asynchronously or deferred.

4. Web fonts loaded from external CDNs. Google Fonts or Typekit fonts loaded via an external CSS @import add an extra round-trip request before text renders. Self-hosting fonts eliminates this.

5. Slow server response time. Shopify's servers are fast, but stores using a lot of complex Liquid logic or storefront API calls can see elevated Time to First Byte (TTFB) on collection pages.

How to Audit and Remove Unnecessary Apps

This is the highest-leverage action most Shopify merchants can take. The process:

  1. Open your Shopify admin and navigate to Apps. Make a list of every installed app.
  2. For each app, ask: Is this app actively being used? Does it provide measurable value? When did we last review its necessity?
  3. Uninstall any app that fails this test. Do not just disable it in the app settings. Uninstalling removes the app's script injection from your theme.
  4. After each round of uninstalls, re-run PageSpeed Insights and compare scores.

A useful diagnostic tool: run your store URL through GTmetrix (free at gtmetrix.com) and look at the Waterfall tab. Every JavaScript file loaded on your page is listed here with its file size and load time. You can often identify app scripts by their CDN URLs (for example, cdn.shopify-app-xyz.com) and trace them back to specific apps.

Shopify's built-in speed report (Online Store > Themes > Customise > Speed) shows how your speed compares to similar stores on the platform. This is a useful benchmark but less detailed than PageSpeed Insights.

Image Optimisation for Shopify

Images are typically the largest contributor to LCP on product and collection pages. A systematic approach to image optimisation:

Upload images at the correct resolution. For a full-width desktop hero image, 2000px wide is sufficient. For product images displayed at 800px, upload at 1600px (for retina displays). Uploading at 4000px provides no visual benefit and increases file size.

Use the correct format before uploading. JPEG at 70 to 80% quality for product photography. Shopify will convert to WebP for modern browsers automatically. Avoid uploading PNG files for photographs: they are far larger than equivalent quality JPEGs.

Compress before upload. Tools like Squoosh (squoosh.app, free), ImageOptim (Mac app, free), or TinyPNG (tinypng.com, free up to 20 images/month) compress images without visible quality loss. A 2MB JPEG often compresses to 400 to 600KB with no perceptible difference on screen.

For existing product image libraries, the app Crush.pics (free tier available, paid from $9.99/month) compresses images already in your Shopify media library in bulk. It runs in the background and can process thousands of images without manual effort.

Lazy Loading and Deferring Scripts

Modern browsers support native lazy loading for images. Adding loading="lazy" to image tags below the fold means those images are not downloaded until the user scrolls near them, reducing the initial page payload significantly.

Shopify's Dawn theme implements this by default. If you are using an older theme, this may not be in place. Check your theme's image Liquid code for the presence of loading="lazy" on product and collection page images.

For third-party scripts, deferring load timing reduces their impact on INP and LCP. This requires editing your theme's theme.liquid file. Any script tag that does not need to run before the page is interactive should have the defer attribute:

<script src="..." defer></script>

This is worth implementing for analytics scripts, chat widgets, and tracking pixels. Do not defer scripts that are required for above-the-fold functionality (for example, your theme's core JavaScript).

Choosing a Performant Theme

If your current theme has fundamental performance problems (a complex Liquid architecture, built-in animations that block rendering, or a heavy JavaScript bundle), a theme switch may deliver more improvement than incremental optimisation.

Themes with strong speed performance on Shopify:

  • Dawn: Shopify's free reference theme. Built for speed. Limited design flexibility but excellent baseline performance.
  • Impulse (Archetype Themes, $380 one-time): Good balance of design features and performance. Regularly updated for Core Web Vitals compliance.
  • Turbo (Out of the Sandbox, $395 one-time): Slightly heavier than Impulse but feature-rich. Strong performance with selective feature use.

Avoid themes with heavy animation libraries, parallax effects, or multiple full-page video backgrounds in the default configuration. These features look impressive in theme demos but are speed killers in production.

What Speed Score Should You Actually Aim For on Shopify?

For context: the average Shopify store scores around 35 to 45 on mobile PageSpeed, according to Google's own data. Reaching 60 to 70 on mobile is achievable for most stores with a clean theme and a well-managed app stack. Reaching 80+ on mobile is possible but typically requires significant optimisation or a very lean setup.

Desktop scores are almost always 20 to 30 points higher than mobile. Do not focus on the desktop score as your primary metric. Google's mobile-first indexing means mobile performance is what matters for rankings.

The goal is not a perfect score. The goal is passing Core Web Vitals thresholds: LCP under 2.5 seconds, INP under 200ms, CLS under 0.1. Passing these thresholds (reaching the "Good" band) is the meaningful target. The score is a proxy; the actual metrics are the objective.

Key Actions to Take Now

  1. Run your homepage, a collection page, and a product page through Google PageSpeed Insights (pagespeed.web.dev). Note your mobile scores and which specific metrics are failing.
  2. Open your Shopify admin, list every installed app, and uninstall any that are not actively used. Re-test speed after each batch of removals.
  3. Check your product images. If any are over 500KB, compress them before re-uploading. Use Squoosh for individual images or Crush.pics for bulk processing.
  4. Run your store through GTmetrix and review the Waterfall tab. Identify third-party scripts loading in the header that could be deferred.
  5. Verify your theme uses loading="lazy" on below-fold images. If not, this is a quick code addition worth making.
  6. If your mobile LCP is above 4 seconds and your theme is more than 3 years old, evaluate whether a theme upgrade would be more efficient than incremental optimisation.

Frequently Asked Questions

Does Shopify's page speed score affect my Google rankings? Yes. Core Web Vitals are a confirmed Google ranking signal. Pages that pass Core Web Vitals thresholds (Good band for LCP, INP, and CLS) receive a ranking boost relative to pages that fail. The effect is a tie-breaker rather than a dominant signal: high-quality, relevant content on a slow page will still outrank low-quality content on a fast page. But for competitive queries where multiple pages are similarly relevant, speed is a meaningful differentiator.

My theme developer says the speed score is fine. Is that right? Theme developers often benchmark on a clean install with no apps. Once your real app stack is installed, scores drop significantly. Ask for a PageSpeed score measured on your live production store URL with all apps installed, not the demo environment.

How much can I realistically improve my score without a developer? Most merchants can move from a score of 30 to 40 up to 55 to 65 on mobile through app removal, image compression, and script deferral alone. These are actions within reach of a non-technical merchant with 3 to 4 hours of focused effort. Moving above 70 on mobile typically requires theme-level code changes.

Will removing apps to improve speed hurt my revenue? It depends on the apps. Apps that drive measurable conversion or revenue (email popups, review widgets, subscriptions) should stay. Apps that were installed speculatively and never used, or that duplicate functionality available natively in Shopify, are candidates for removal. Quantify the value of each app before removing it, and monitor conversion rates after removal.