Performance Guide · Updated March 9, 2026

Why Is My Shopify Store Slow? 7 Causes + Fixes (2026)

Why is my Shopify store slow - 7 common reasons and fixes

The most common reasons your Shopify store is slow are too many third-party apps injecting scripts, unoptimized images, a heavy theme, render-blocking resources, missing lazy loading, excessive redirects, and a bloated DOM. Most stores can fix these issues and improve load times by 40–60%.

~12 min read · 2,800 words · 7 causes with step-by-step fixes

How to Check If Your Store Is Actually Slow

Before diagnosing anything, you need data — not guesswork. "It feels slow" isn't a diagnosis. Start with our free Shopify speed test tool for a quick overview, then dig deeper with these methods:

Google PageSpeed Insights

Go to pagespeed.web.dev, enter your store URL, and check the mobile score. Below 40 = slow. 40–60 = average. 60+ = good for Shopify. Most unoptimized Shopify stores score 20–35 on mobile.

Core Web Vitals (Real User Data)

In PageSpeed Insights, look for the "Discover what your real users are experiencing" section at the top. This shows actual performance data from Chrome users visiting your store. If you see red or orange on LCP, INP, or CLS — those are the specific metrics to fix.

GTmetrix Waterfall

GTmetrix shows a waterfall chart of every resource your page loads. This visual timeline makes it easy to spot which specific files are causing delays. Sort by load time to find the worst offenders.

⚠️ Ignore Shopify's built-in speed score in your admin panel. It uses a simplified metric that doesn't reflect real-world performance. Use PageSpeed Insights and Core Web Vitals for actual optimization decisions.

The Easy Fix: Let Thunder Diagnose and Fix It

Before spending hours diagnosing manually — Thunder Page Speed Optimizer automatically identifies what's slowing your store and fixes it. No code changes, no technical knowledge required.

🏎️

How Fast Is Your Shopify Store?

Get a free speed report with personalized recommendations. Compare your store against industry benchmarks.

Free · Takes ~60 seconds · Report delivered to your inbox

Thunder automatically fixes all 7 issues below:

App Script Optimization

Defers third-party scripts — the #1 cause of slow stores

Image Optimization

Lazy loading, WebP conversion, responsive sizing

Render-Blocking Fix

Critical CSS inlining and script deferral

Font Optimization

font-display: swap and preloading — automatic

Average improvement: +27 PageSpeed points

Most stores go from red/orange to green within minutes. 30-second setup, works with all themes.

Find Out What's Slowing Your Store →

Free plan available · No credit card required · 30-second setup · Works with all themes · See pricing

Prefer to do it yourself? Keep reading ↓
#1

Too Many Apps (or Too Many Heavy Apps)

Why This Happens

Every Shopify app you install can inject JavaScript into your storefront. A review widget, a popup, a loyalty program, an analytics tracker — each adds its own scripts that must be downloaded, parsed, and executed before your page finishes loading. The average Shopify store has 15–25 installed apps, and the cumulative effect is devastating.

The problem isn't just quantity — it's that many app scripts are unoptimized. They load on every page (even where they're not needed), block rendering, and sometimes load duplicate libraries (like jQuery) independently. A single poorly-coded app can add 500ms–2s to your load time.

How to Check

Open your store in Chrome, press F12 to open DevTools, go to the Network tab, and reload. Filter by "JS" and look at the domain column. Your theme scripts come from cdn.shopify.com. Everything else is likely from apps. Count the third-party script files and note their sizes.

For a faster approach, Thunder's app scanner automatically measures each app's impact on load time and generates a per-app performance report.

How to Fix

  • Audit your apps. Go to Shopify admin → Apps. For each app, ask: "Is this actively contributing to sales?" If not, uninstall it.
  • Remove duplicates. Two email popups? Two analytics tools? Pick the best one and remove the other.
  • Check for leftover code. After uninstalling, search your theme's theme.liquid for leftover script tags — many apps don't clean up after themselves.
  • Use a script optimizer. For apps you need to keep, use a tool that defers their scripts so they load after the visible page content renders. See our complete speed guide for details.

⚡ Expected improvement: 15–40% if you remove or optimize 3+ heavy apps

A February 2026 analysis of Shopify stores found that speed optimization can boost conversions by up to 30% — and third-party app scripts remain the #1 culprit behind slow stores. Even apps you've disabled but not uninstalled can leave residual scripts behind. For a structured approach to finding your specific bottlenecks, see our Shopify slow diagnosis checklist.

#2

Unoptimized Images

Why This Happens

Images are the largest files on most pages. A single uncompressed product photo can be 3–8MB when it should be 100–300KB. Multiply that by a collection page with 20 products, and you're asking visitors to download 60–160MB of images. On a mobile connection, that's a multi-second delay — just for images.

Common mistakes: uploading original camera photos without compressing them, using PNG for product photos (JPEG/WebP is better for photographs), uploading 4000×4000px images that display at 800×800px, and not using responsive image sizes.

How to Check

Run your page through PageSpeed Insights and look for the "Properly size images" and "Serve images in next-gen formats" opportunities. You can also check in Chrome DevTools → Network tab → filter by "Img" and sort by size. Any image over 500KB is a candidate for optimization.

How to Fix

  • Compress before uploading. Use Squoosh or TinyPNG — aim for under 200KB per product image.
  • Resize to display dimensions. If an image displays at 800×800px, don't upload a 4000×4000px original. Upload at 1600×1600px (2× for retina) maximum.
  • Let Shopify handle format conversion. Shopify's CDN automatically serves WebP to supported browsers. Make sure your theme uses the | image_url Liquid filter, which enables automatic format optimization.
  • Use responsive images. Ensure your theme includes srcset attributes so different screen sizes get appropriately-sized images.

For a deep dive, see our complete Shopify image optimization guide.

⚡ Expected improvement: 15–40% for image-heavy stores

#3

Heavy Theme

Why This Happens

Shopify themes vary enormously in performance. Some themes prioritize features — animated sliders, mega menus, parallax effects, built-in product filtering, popup notifications — and each feature means more JavaScript and CSS. A "feature-rich" theme can easily load 500KB–1.5MB of JavaScript before any apps are even considered.

Older themes built before Shopify's Online Store 2.0 architecture (2021) tend to be significantly heavier because they rely on jQuery and older JavaScript patterns. Some premium themes haven't been rewritten for the new architecture, even if they're still sold.

How to Check

The fastest way: find your theme's demo store (usually linked from the Shopify Theme Store listing) and run it through PageSpeed Insights. If the demo — with no apps, no custom code, minimal content — scores below 40 on mobile, the theme is the bottleneck.

You can also check theme JavaScript size in DevTools → Network → filter by "JS" → look for scripts from cdn.shopify.com/s/files/.../assets/. If your theme's JS totals over 300KB (compressed), it's on the heavy side.

How to Fix

  • Disable unused theme features. If you're not using the mega menu, video backgrounds, or parallax scrolling, disable them in theme settings. Some themes still load the JavaScript even when features are "off" — check with the theme developer.
  • Consider switching themes. If your theme is fundamentally heavy, optimization only goes so far. Lightweight options: Dawn (Shopify's free reference theme, fastest available), Sense, Craft, or premium options like Prestige and Impulse.
  • Check for OS 2.0 compatibility. Themes built on Shopify's Online Store 2.0 architecture (Section Everywhere, JSON templates) are generally much faster than older themes.

⚡ Expected improvement: 10–40% if switching from a heavy to lightweight theme

#4

Render-Blocking Scripts

Why This Happens

When the browser encounters a <script> tag without async or defer, it stops rendering the page, downloads the script, executes it, and only then continues. This is "render-blocking" behavior, and it's the reason your visitors see a blank white page for seconds while scripts load in the background.

On a typical Shopify store, render-blocking resources include the theme's main JavaScript, third-party app scripts, analytics tracking codes, and sometimes CSS files loaded from external domains. These all compete for bandwidth and processing time before any content appears.

How to Check

Run PageSpeed Insights and look for the "Eliminate render-blocking resources" warning in the Opportunities section. It lists every file that blocks rendering and how many milliseconds each one adds. You can also use Chrome DevTools → Performance tab → record a page load and look at the "Long Tasks" blocking the main thread.

How to Fix

  • Add defer or async to scripts. If you have custom script tags in your theme, add the defer attribute. This tells the browser to download the script in the background and execute it after the page has rendered.
  • Use a script optimizer. For third-party app scripts (which you can't directly edit), a speed optimizer app can intercept and defer them automatically. This is the core functionality of tools like Thunder.
  • Inline critical CSS. Move the CSS needed for above-the-fold content directly into the HTML, and load the rest asynchronously. This prevents CSS from blocking the first render.
  • Preload key resources. Use <link rel="preload"> for critical fonts and images so the browser starts downloading them earlier.

For a detailed walkthrough, see our guide to fixing render-blocking resources on Shopify.

⚡ Expected improvement: 20–50% on stores with many render-blocking scripts

#5

No Lazy Loading

Why This Happens

Without lazy loading, your browser downloads every image on the page immediately — including images far below the fold that the visitor hasn't scrolled to yet. On a collection page with 40 products, that means loading 40+ product images upfront, even though the visitor only sees 4–8 initially.

Some older Shopify themes don't include lazy loading, or they implement it with a JavaScript library that itself adds overhead. Others lazy-load everything, including the hero image — which actually hurts performance by delaying the Largest Contentful Paint (LCP).

How to Check

Right-click any image below the fold in your store, select "Inspect," and look for loading="lazy" on the <img> tag. If it's missing, your images aren't lazy-loaded. Also check the Network tab in DevTools — if all images start loading immediately on page load, lazy loading isn't working.

How to Fix

  • Use native lazy loading. Add loading="lazy" to all <img> tags for below-the-fold content. Most modern Shopify themes include this by default.
  • Don't lazy-load the hero image. Your above-the-fold hero or main product image should use loading="eager" (or omit the attribute entirely) so it loads immediately. Lazy-loading it delays your LCP score.
  • Lazy-load videos and iframes too. Embedded YouTube videos or Instagram feeds are heavy — lazy-load them so they only load when scrolled into view.
  • Use a speed optimizer. If your theme doesn't support native lazy loading, tools like Thunder can add it automatically across your entire store.

⚡ Expected improvement: 10–25% on pages with many images

#6

Too Many Redirects

Why This Happens

Every redirect (301 or 302) forces the browser to make an entirely new HTTP request to a different URL. Each redirect adds 100–300ms of delay due to the extra DNS lookup, TCP connection, and SSL handshake. Redirect chains (A → B → C) compound this — three redirects can add nearly a full second of delay.

Common causes on Shopify: renamed products or collections leaving old URLs behind, internal links pointing to HTTP URLs that redirect to HTTPS, links without trailing slashes redirecting to versions with slashes, and geolocation redirects for international stores.

How to Check

In Chrome DevTools → Network tab, look for requests with a 301 or 302 status code. PageSpeed Insights also flags excessive redirects under "Avoid multiple page redirects." Check your redirect list in Shopify admin → Online Store → Navigation → URL Redirects.

How to Fix

  • Update internal links. Find and update any links in your navigation, content, and theme that point to old URLs. Link directly to the final destination.
  • Clean up URL redirects. In Shopify admin, review your redirects list. Remove redirects that are no longer needed (e.g., for products you deleted years ago).
  • Fix redirect chains. If URL A redirects to B, and B redirects to C — update A to redirect directly to C.
  • Use HTTPS everywhere. Ensure all internal links use https:// to avoid HTTP → HTTPS redirects.
  • Handle internationalization properly. Use hreflang tags instead of redirect-based geolocation to serve the right content to international visitors.

⚡ Expected improvement: 2–10% depending on number of redirect chains

#7

Large DOM Size

Why This Happens

The DOM (Document Object Model) is the browser's representation of your page's HTML structure. A large DOM means your page has too many HTML elements — nested divs, excessive sections, complex product grids, and widget markup from apps all contribute. Google recommends keeping DOM size under 1,500 elements; many Shopify stores exceed 3,000–5,000.

A large DOM hurts performance in multiple ways: it increases memory usage, slows down CSS selector matching, makes JavaScript DOM operations slower, and increases the time for layout recalculations. Every time the browser needs to figure out what to display, a bigger DOM means more work.

How to Check

PageSpeed Insights reports "Avoid an excessive DOM size" in the Diagnostics section, along with your element count. You can also check in DevTools Console by typing: document.querySelectorAll('*').length — this returns your total DOM element count.

How to Fix

  • Simplify your theme layout. Remove unnecessary wrapper divs and nested elements. Many themes have 5–6 levels of nesting where 2–3 would suffice.
  • Limit product grids. Instead of showing 48 products per page, use pagination with 12–24 products. Fewer products = fewer DOM elements.
  • Remove hidden elements. Some apps inject hidden markup that's not visible but still part of the DOM. Use DevTools to search for elements with display: none and evaluate if they're necessary.
  • Use virtualization for long lists. If you must show many items, consider lazy-rendering techniques that only add elements to the DOM as the user scrolls.
  • Audit app widgets. Review popups, chat widgets, and notification bars — they often inject significant DOM nodes even when not visible.

⚡ Expected improvement: 5–15% for stores with excessive DOM elements

Quick Win Summary

Here's the fastest path to a faster store, prioritized by effort vs. impact. For a comprehensive walkthrough of every optimization technique, see our Shopify speed optimization guide.

Priority Action Effort Impact
1 Remove unused apps + check leftover code 30 min High
2 Install a script optimizer for remaining apps 5 min High
3 Compress and resize images 1–2 hours High
4 Enable lazy loading for below-fold images 15 min Medium
5 Fix redirect chains 30 min Medium
6 Evaluate theme performance 1 hour Medium–High
7 Reduce DOM size 2+ hours Medium

Frequently Asked Questions

What is a good page speed score for Shopify?

A mobile PageSpeed Insights score of 50–70 is good for Shopify. Most unoptimized stores score 20–35 on mobile. Desktop scores (typically 70–95) are less meaningful since most ecommerce traffic comes from mobile devices. Focus on mobile performance and Core Web Vitals (LCP under 2.5s, INP under 200ms, CLS under 0.1).

Does Shopify speed affect sales?

Yes, significantly. Studies show a 7% increase in conversions for every 1-second improvement in load time. Google's data shows 53% of mobile users abandon sites that take more than 3 seconds to load. For a store doing $50K/month, shaving 1 second off load time could mean an extra $42K per year in revenue.

Can I speed up Shopify without removing apps?

Yes. Thunder Page Speed Optimizer defers how third-party app scripts load, so they don't block your page from rendering. It also handles critical CSS inlining, image optimization, and font loading. This lets you keep your apps while dramatically reducing their impact — Thunder users see an average +27 PageSpeed point improvement with a 30-second setup.

Why is my Shopify store slow on mobile but fast on desktop?

Mobile devices have less processing power, slower network connections, and smaller memory than desktops. Heavy JavaScript from apps takes much longer to parse and execute on a phone. Additionally, mobile networks add latency that compounds with every HTTP request. This is why optimizing JavaScript is even more critical than optimizing images for mobile speed.

How do I find which Shopify app is slowing my store?

You can manually check using Chrome DevTools (Network tab → filter by JS → look for third-party domains), or use a tool like Thunder's app scanner which automatically identifies each app's impact on load time, measured in milliseconds and kilobytes. The manual approach works but is time-consuming; automated scanning gives you a clear per-app performance report.

Does changing my Shopify theme improve speed?

It can make a huge difference. Heavy themes with built-in mega menus, animated sliders, and complex filtering load significantly more JavaScript. Switching from a heavy theme to a lightweight one like Dawn can improve scores by 10–40%. Before choosing a theme, test its demo store on PageSpeed Insights — if the demo scores below 40 on mobile, the theme itself is the bottleneck.

How many apps is too many for Shopify speed?

There's no magic number — it depends on the apps. A store with 8 well-coded apps can be faster than one with 3 poorly-built ones. That said, the average Shopify store runs 15-25 app scripts, and stores with 20+ apps almost always have speed issues. The key is measuring each app's actual impact rather than counting installs. Tools like Thunder's app scanner show you exactly which apps cost the most milliseconds.

Do It Yourself

Free plan · 1-click install · Instant results

Install Thunder Free →

Done For You

Core Web Vitals guarantee · 2-week delivery · 6 months Thunder free

Get Expert Optimization →

Starting from €1,500