Skip to content
SI Simon Iong

speed

Why is my Shopify store slow? A merchant's diagnostic guide

If your Shopify store feels slow — and you’re not sure whether it’s actually slow or just feels that way — you’re in good company. About 70% of the Shopify stores I’m asked to audit have a real, measurable speed problem. The other 30% feel slow but are actually fine; the perceived slowness is something else (a slow checkout, a janky animation, a third-party widget loading late).

Either way, the diagnosis follows the same path. This is the walk-through I give every merchant who emails me asking “is my store slow?”. You can do most of it in 30 minutes.

This is a sub-post of the Shopify Speed Optimization Guide. For the full picture, start there.

TL;DR

  • Run PageSpeed Insights on your homepage, a collection page, and a product page. Look at mobile scores and the CrUX (real-user) data, not just lab.
  • The most common cause is too many apps loading above the fold, followed by large hero images and render-blocking third-party scripts (chat widgets, GTM, retargeting pixels).
  • A mobile Lighthouse score of 30–60 is normal for stocked Shopify stores. Below 30 means something specific is broken.
  • Don’t chase every yellow warning in Lighthouse. The biggest 2–3 fixes give you 80% of the gain.

What “slow” actually costs

Before diagnosing anything, the cost:

  • Conversion: Shopify’s own data shows ~5% conversion drop per 100ms of added load time on mobile. A store going from 2.5s to 4.5s LCP is leaving real money on the table.
  • Ranking: Google uses Core Web Vitals as a ranking signal. “Poor” CWV in Search Console is a ceiling on the rankings you’d otherwise earn.
  • Ad costs: Slow landing pages get higher Google Ads CPCs and lower Quality Scores. Same on Meta — landing-page speed feeds into delivery.
  • Abandoned carts: A surprising amount of cart abandonment is “I was on mobile, the page was slow, I forgot.” Hard to attribute, but real.

If you’re spending money on traffic and your site is slow, you’re paying twice — once to get the visitor, once for the conversion you didn’t get.

Step 1: measure before you guess

Don’t optimize what you haven’t measured. Two free tools:

  1. PageSpeed Insights — paste in a URL, get a Lighthouse lab score and real-user CrUX data. Run on homepage, a collection page, and a product page. Use the mobile tab — Google indexes and ranks on mobile.
  2. Google Search Console → Core Web Vitals — the only number that affects ranking. If yours is “Good” across the board, you don’t have a Google-level problem (you might still have a conversion-level one).

Write down the numbers before you change anything. Otherwise you won’t know if you fixed it.

The 6 places to look

Ordered by how often each is the cause, on the Shopify stores I’ve audited:

1. Apps loading above the fold

By far #1. Most Shopify themes let merchants drop “app blocks” into any section. That’s a great feature — until your homepage hero loads a personalization app, a testimonial app, an Instagram feed app, a chat widget, and a popup, all before the customer sees a product.

Quick check: open your homepage in an incognito window with DevTools (Cmd+Opt+I on Mac, F12 on Windows) → Network tab → reload. Sort by “Size”. Anything bigger than 500 KB that loads in the first second is suspicious. If it’s an app, ask: does this app need to load before the user sees the page?

→ Deep dive: Are Shopify apps slowing down your store?

2. Hero image / banner

Your hero image is usually the LCP element. If it’s a 4 MB JPEG instead of a 200 KB AVIF, your LCP is going to be slow no matter what else you do.

Quick check: in DevTools Network → Img filter → reload. Find your hero image. If it’s over 500 KB on mobile, it’s too big.

The fix is either re-export at the right resolution, or have your theme dev set up proper responsive image sizing. Most modern Online Store 2.0 themes do this; older themes may not.

3. Third-party scripts

Chat widgets (Tidio, Gorgias, Intercom), Google Tag Manager, Meta Pixel, retargeting pixels, session-replay tools (Hotjar, Microsoft Clarity) — each is a separate JavaScript download that runs on page load. Most don’t need to run before the customer sees the page.

Quick check: PageSpeed Insights → “Reduce the impact of third-party code” diagnostic. Lists every third-party domain and how much main-thread time each consumes. Anything over 200ms there is a candidate to cut or defer.

4. Liquid loops in templates

Less common, brutal when it happens. A bad pattern in a Liquid template (e.g. nested loops over all products in a collection) pushes server response time (TTFB) into the multi-second range — the user is staring at a white page before any asset starts loading.

Quick check: PageSpeed Insights → “Reduce server response time” diagnostic. If your TTFB is over 800ms on mobile, this is theme-side and a developer needs to look. Theme Inspector (Cmd+I in the theme customizer) shows per-section render times.

5. Web fonts

If your store uses a custom font (especially via Google Fonts) and the LCP element is text, the font load can delay the LCP measurement.

Quick check: PageSpeed Insights → “Ensure text remains visible during webfont load”. If you see this warning, the font setup needs work. The fix — self-host the font and preload it — is a small dev job with outsized impact.

6. The theme itself

Least common, worst-case. Some older themes — particularly Online Store 1.0 themes that were never updated for OS 2.0 — have inefficient rendering patterns that no amount of app optimization rescues. If your theme is more than 3 years old and you’ve thrown a lot of custom code at it, you may be looking at a refactor or rebuild rather than an optimization.

What you can do today (no developer)

Three things any merchant can do without code:

  1. Audit your apps. Apps → Installed apps. For each, ask: does this app earn its slot? When was the last time it was used? Most stores can drop 30–50% with no business impact. Removing is one click; you can always reinstall.
  2. Resize your hero images. Replace any banner over 1 MB with a 200–400 KB version at the right resolution. Free tool: Squoosh. Aim for under 200 KB at 1600px wide.
  3. Defer your chat widget. Most chat apps have a “show after X seconds” or “show on scroll” setting. Turning it on can shave hundreds of ms off LCP without losing the chat function.

These three changes alone can move a store’s mobile Lighthouse score by 10–20 points. Not a magic fix, but a real one.

When to call a developer

If after the above you’re still seeing:

  • Mobile Lighthouse < 50
  • Mobile LCP > 4s in CrUX
  • TTFB > 1s
  • Apps you can’t safely remove that are still slowing the site

…a focused speed optimization engagement makes sense. The work is usually 2–4 weeks, the gains are measurable, and the ROI shows up in conversion + ranking within a quarter.

What to look for in whoever you hire: someone who measures before AND after, who scopes a fixed package (not an open-ended retainer), and who hands off documentation so your team can hold the gains. → How to choose a Shopify developer.


Want me to look at your store specifically? Book a free intro call and send me your URL beforehand. I’ll run a live Lighthouse + CrUX check and tell you which 2–3 fixes would move the most for your store. No prep needed, no obligation.


Found this useful? Get in touch or subscribe to the RSS feed .

Get started

Have a Shopify project in mind?

Book a free 30-minute intro call. We'll talk through your store, your goals, and whether I'm the right fit.