Skip to content
Free 30-min callBook now
Talk to us — 30 min, freeBook now
WhatsAppBook a callGet a quote

Why Your Shopify Store Is Slow (And the 9 Fixes That Work)

Nine causes of a slow Shopify store, ranked by how much time they actually cost — from hero images and app scripts to Liquid loops and oversized sliders.

Written by
Fahad, CEO & Head of Development
Published
Reading time
3 minutes
A Shopify theme being edited in a code editor

"My store is slow" is a symptom, not a diagnosis. Across several hundred Shopify stores we have optimized, the causes cluster into the same nine problems — and they are not equally expensive. Here they are in the order we normally attack them, with the time each typically returns.

1. The hero image is lazy-loaded (0.8–1.5s)

Almost every theme lazy-loads images site-wide. For images below the fold that is correct. For the one image that *is* the Largest Contentful Paint, it is self-sabotage — you are telling the browser to deliberately wait before fetching the thing the score depends on.

2. Too many apps injecting scripts (0.5–3s)

Each app adds JavaScript to every page, not just the pages where it does something. A reviews app loads on your policy pages. An upsell app loads on your blog. Ten apps is normal; ten apps that all load everywhere is what makes a store feel sludgy.

3. Images served far larger than displayed (0.3–1.2s)

The classic version of this is a 4000px product photo rendered into a 600px grid tile. Shopify's CDN will resize on request — `product.featured_image | image_url: width: 800` — but only if the theme asks it to. Many do not.

Shopify Liquid theme code open in the code editor
Most of these fixes live in the theme itself — which is why they stay fixed, unlike settings toggled inside an app.

4. Render-blocking fonts (0.2–0.8s)

Custom fonts loaded from a third-party host add a DNS lookup, a TLS handshake and a download before any text paints. Self-host the WOFF2, preload it, and set `font-display: swap`. Two font families is plenty; five is a tax.

5. Sliders and carousels on the homepage (0.3–1s)

A five-slide hero carousel loads five full-width images so that customers can see one. Carousels also test badly — most visitors never see slide two. Replacing a carousel with a single static hero usually improves both speed and conversion, which is why it comes up in almost every CRO engagement as well.

6. Liquid loops over large collections (0.2–2s server-side)

Nested loops over `collections.all.products` will happily iterate thousands of products to render a menu. This shows up as slow Time to First Byte rather than slow rendering, which is why it gets missed — the page looks fine once it arrives, it just takes a long time to start arriving.

7. Unused CSS and JavaScript from the theme (0.1–0.5s)

Premium themes ship every feature they advertise, including the twenty sections you never enabled. The code still downloads, parses and executes.

8. No caching headers on custom assets (0.1–0.4s on repeat visits)

Assets served through Shopify's CDN are cached properly. Assets you have hotlinked from elsewhere frequently are not, so returning visitors re-download them every time.

9. Chat widgets and popups loading immediately (0.2–1s)

A chat bubble does not need to exist in the first second. Defer it until the browser is idle, or until the visitor scrolls. Same for exit-intent popups and cookie banners.

The order matters more than the list

Merchants often start with number seven because it feels technical and thorough. It is worth 0.1 seconds. Fixing the hero image is worth ten times that and takes less time. Work top-down, measure after each change, and stop when the numbers are green — there is no prize for a perfect Lighthouse score on a store that already loads in a second.

Test your store on our speed page to see which of these is costing you the most, then let us fix it.

Test your store speed

Sources & further reading

  1. 1.PageSpeed InsightsGoogle
  2. 2.Performance best practices for Shopify themesShopify.dev
  3. 3.Optimize Largest Contentful Paintweb.dev (Google)

Share this guide