Website Speed Test for Shopify Stores
Slow Shopify stores lose sales. Learn how to test your store's performance, understand the unique constraints of Shopify, and improve LCP and Core Web Vitals.
Every 100ms of additional load time costs e-commerce conversions. For Shopify stores, performance is directly tied to revenue. For a broader guide, see Core Web Vitals for E-commerce. But Shopify’s architecture creates some unique constraints — here’s how to test, diagnose, and improve your store’s speed within those limits.
Testing Your Shopify Store
Run your store URL through debugutils.dev to get a full diagnostic report including:
- Lighthouse Performance score
- LCP, CLS, INP scores
- CrUX field data (real user performance from Chrome users)
- Full request waterfall showing all loaded resources
- Video recording to see exactly what your customers see
Test your homepage, a collection page, and a product page — each has different performance characteristics. Make sure non-critical images use lazy loading to avoid unnecessary resource fetches.
Why Shopify Stores Are Often Slow
Shopify’s infrastructure is excellent. The platform itself — CDN, server response times, HTTP/2 — is genuinely performant. A TTFB under 300ms is typical on Shopify.
The performance problems come from themes and apps.
App scripts
Every Shopify app you install adds JavaScript. Review apps, loyalty programs, chat widgets, upsell popups, analytics tools — each adds 50–200KB of JavaScript that executes on the main thread. A store with 20 active apps can have 2–3MB of third-party JavaScript blocking the main thread.
Check your waterfall: look for external script domains you don’t recognize. Each one is an app. For more on this topic, see how third-party scripts affect performance.
Theme code
Many popular Shopify themes aren’t well-optimized. They load large CSS files, include JavaScript for features you’re not using, and serve unoptimized images. Some premium themes have Lighthouse scores in the 30–40 range out of the box.
Unoptimized product images
Merchants upload high-resolution product photos without optimization. Shopify does auto-resize images, but it’s easy to end up serving 1MB+ images if you use the wrong URL parameters. See our font optimization guide for another common source of bloat.
What You Can (and Can’t) Control
You have control over:
- Theme selection and customization
- Which apps are installed and when they load
- Image sizes and formats
- Liquid template markup
You don’t control:
- Shopify’s core platform code
- Third-party app code quality
- Some aspects of checkout performance
Improving Shopify LCP
The LCP element on most Shopify pages is the hero or product image.
Use Shopify’s image CDN correctly:
{{ product.featured_image | image_url: width: 1200 }}
Shopify serves images through their CDN (cdn.shopify.com) with auto-format support. Use image_url with explicit width and format: 'webp' option where supported.
Add fetchpriority to the LCP image:
<img
src="{{ product.featured_image | image_url: width: 1200 }}"
fetchpriority="high"
loading="eager"
width="{{ product.featured_image.width }}"
height="{{ product.featured_image.height }}"
alt="{{ product.featured_image.alt }}"
/>
Preload the LCP image in your theme’s <head>:
{% if template == 'product' %}
<link
rel="preload"
as="image"
href="{{ product.featured_image | image_url: width: 1200 }}"
fetchpriority="high"
/>
{% endif %}
Reducing App JavaScript
Audit your installed apps. Go to Apps → remove anything you don’t actively use. Uninstalled apps often leave behind JavaScript snippets in your theme.
Check for zombie scripts. Even after uninstalling apps, their scripts may remain in your theme’s theme.liquid. Search for external script tags you don’t recognize and remove them.
Defer non-critical app scripts. Apps loaded at the bottom of <body> are less harmful than apps loaded in <head>. Some apps let you configure load timing.
Improving Core Web Vitals
CLS: Shopify product images sometimes cause CLS if dimensions aren’t set. Always include width and height from the image object.
INP: Heavy app JavaScript executing on page interactions. Reduce the number of active apps and their event listeners.
What Good Performance Looks Like for Shopify
A well-optimized Shopify store can achieve:
- Performance score: 60–80 (mobile)
- LCP: under 2.5s
- CLS: under 0.1
- TBT: under 300ms
Run a test on debugutils.dev to see where your store stands and get prioritized recommendations.