Your Shopify Store Is Slow. Here's Exactly How to Fix It.
A slow Shopify store kills conversions and SEO rankings. Here's the exact checklist we use to speed up Shopify stores — no developer required for most fixes.

Mark Cijo
Founder, GOSH Digital

Your Shopify Store Is Slow. Here's Exactly How to Fix It.
Go to Google PageSpeed Insights right now. Type in your Shopify store URL. Look at the mobile score.
If it's under 50, your site is actively costing you money. Every day.
Here's what the data says: for every 1-second increase in page load time, conversion rates drop 7%. A Shopify store that loads in 5 seconds instead of 2.5 seconds is losing roughly 17-20% of potential sales — not because the product is wrong or the price is wrong, but because the page didn't load fast enough.
We've optimized speed for dozens of Shopify stores. Most of the time, the fixes don't require a developer. They require knowing what's actually slowing your site down — and most store owners have no idea.
Let me show you.
Why Your Shopify Store Is Slow (The Real Causes)
Before we fix anything, let's identify the culprits. In our experience, 80% of Shopify speed problems come from five sources:
1. Too Many Apps (The #1 Cause)
Every Shopify app you install adds JavaScript to your store. Many add their own CSS files, tracking pixels, and API calls. The average Shopify store has 6-12 apps installed. We've seen stores with 30+.
Each app adds 50-500ms to your page load time. Four or five heavy apps can easily add 2-3 seconds.
The insidious part: Many apps inject their code on every page, even pages where the app doesn't do anything. That pop-up app you use on your homepage? Its JavaScript is loading on your checkout page too.
2. Unoptimized Images
Shopify automatically serves images in WebP format and provides some responsive sizing. But that doesn't help if you're uploading 4000x4000px images at 2MB each. Shopify will resize them, but the original file still affects load time during processing.
Product images are usually fine if you follow basic guidelines. The real culprits are:
- Hero/banner images that are 3-5MB
- Decorative lifestyle images that aren't compressed
- GIFs (animated product images kill load time)
- Images in blog posts and custom pages
3. Heavy Theme Code
Not all Shopify themes are created equal. Some themes — especially heavily customized ones with dozens of sections and features — load 800KB+ of JavaScript and 200KB+ of CSS. Even if you're not using half the features, the code still loads.
Free themes (Dawn, Refresh, etc.) tend to be lighter. Premium themes vary wildly. Some are well-optimized. Some are bloated nightmares.
4. Third-Party Scripts (Pixels, Chat Widgets, Analytics)
Google Analytics, Meta Pixel, TikTok Pixel, Hotjar, Intercom, Zendesk chat widget, cookie consent banner, review widget scripts — these all load on every page and collectively add 1-3 seconds of load time.
5. Render-Blocking Resources
Some CSS and JavaScript files load synchronously — meaning the browser can't render any content until they're fully downloaded and parsed. This creates the "blank screen" effect that makes a site feel slow even if the total load time isn't terrible.
The Speed Optimization Checklist
Here's the exact checklist we work through. Organized by impact and difficulty.
High Impact, No Developer Needed
1. Audit and remove unused apps.
Go to Settings → Apps and sales channels. For each app, ask:
- When did I last use this?
- Does this app generate revenue?
- Can another app I'm already using do this?
Action: Uninstall every app you're not actively using. Don't just disable — uninstall. Some apps leave residual code even when disabled.
Expected impact: Removing 3-5 unused apps typically improves load time by 0.5-2.0 seconds.
2. Compress and resize images.
Every image on your site should be:
- Under 200KB (ideally under 100KB for non-hero images)
- No wider than 2048px (Shopify won't serve anything larger anyway)
- In JPEG or PNG format (Shopify converts to WebP automatically)
Tools: Use TinyPNG (free), Squoosh (free), or ImageOptim (free, Mac). Process all images before uploading.
For existing images: Install Crush.pics or TinyIMG (free/cheap Shopify apps) to bulk-compress images already on your store.
Expected impact: 0.3-1.5 seconds improvement, especially on collection and product pages with many images.
3. Limit homepage sections.
More homepage sections = more content to load = slower. Many stores have 15-20 sections on the homepage because it's easy to keep adding them in the theme editor.
Rule of thumb: Keep your homepage to 8-10 sections max. Remove sections with low engagement. Use Shopify's built-in analytics or Hotjar to see how far people actually scroll — if nobody reaches your 12th section, remove it.
4. Replace GIFs with static images or video.
GIFs are the worst image format for web performance. A 3-second product GIF can be 5-10MB. Replace GIFs with:
- Static images with a hover effect (no file size penalty)
- MP4 videos (10-20x smaller than equivalent GIFs)
- Shopify's native video component (auto-optimized)
5. Reduce the number of products shown on collection pages.
If your collection pages show 48 products by default, that's 48 product images, 48 price elements, and 48 variant badges loading at once.
Recommendation: Show 12-16 products per page with pagination or infinite scroll that lazy-loads the next batch. This dramatically reduces initial page weight.
Medium Impact, Some Technical Knowledge
6. Defer non-critical JavaScript.
Most third-party scripts don't need to load before the page renders. They can be deferred — meaning they load after the page content is visible.
How to do it in Shopify:
For scripts in your theme.liquid file, change:
`<script src="some-script.js"></script>`
to:
`<script src="some-script.js" defer></script>`
For app scripts you can't control, some apps have a "load after page render" setting. Check each app's settings.
Expected impact: 0.5-2.0 seconds improvement in Time to Interactive.
7. Lazy-load images below the fold.
Images that aren't visible when the page first loads (below-the-fold images) should lazy-load — meaning they only load when the user scrolls near them.
Most modern Shopify themes (Dawn 2.0+) have this built in. If yours doesn't, add loading="lazy" to image tags in your theme code.
Do NOT lazy-load:
- Your hero image (first thing people see — should load immediately)
- Product page main image
- Any image above the fold
8. Use Shopify's built-in CDN properly.
Shopify hosts all your files on their CDN (content delivery network) automatically. But if you're embedding images from external URLs (like a third-party CMS or cloud storage), those images don't benefit from Shopify's CDN.
Rule: Host all images through Shopify (upload to Shopify Files or as product images). Don't embed external image URLs.
9. Minimize custom fonts.
Every custom font adds a file download. Each font weight (regular, bold, italic) is a separate file.
Best practice:
- Use 2 fonts maximum (one for headings, one for body)
- Load only the weights you actually use (regular + bold for body, bold + extrabold for headings)
- Use
font-display: swapto prevent invisible text while fonts load (most Shopify themes do this by default) - Consider system font stacks for body text — they load instantly
10. Preload critical resources.
Your theme's main CSS file and hero image should be preloaded so the browser prioritizes them:
`<link rel="preload" href="theme.css" as="style">`
`<link rel="preload" href="hero-image.webp" as="image">`
This goes in your theme.liquid head section. It tells the browser "download these first."
High Impact, Developer Required
11. Implement a script loading strategy.
Instead of loading all app scripts on every page, load them conditionally:
- Review app scripts → only on product pages
- Quiz widget → only on the quiz page
- Pop-up script → only after 5 seconds (or on exit intent)
This requires editing your theme's Liquid code to wrap script tags in conditional logic.
Expected impact: 1-3 seconds improvement, especially on pages that don't need most app functionality.
12. Optimize Liquid template rendering.
Shopify's Liquid templating language can be slow if your theme uses excessive loops, nested includes, or complex conditional logic. This is more common in heavily customized themes.
Signs you need this: Server response time (TTFB) above 500ms. You can check this in PageSpeed Insights under the "Server Response Time" audit.
13. Consider a headless or hybrid approach (for $5M+ stores).
For high-traffic stores where every millisecond matters, a headless Shopify setup (using Hydrogen or a custom React/Next.js frontend) can dramatically improve performance. The trade-off: development complexity and cost.
Only consider this if: Your revenue justifies a $50K+ frontend rebuild and your traffic is high enough (100K+ monthly sessions) that speed improvements translate to meaningful revenue.
How to Measure Your Progress
Tools to use:
-
Google PageSpeed Insights — Your primary benchmark. Test mobile and desktop separately. Focus on Core Web Vitals: LCP (Largest Contentful Paint), FID/INP (Interaction to Next Paint), and CLS (Cumulative Layout Shift).
-
Shopify's Web Performance Dashboard — In your Shopify admin: Online Store → Themes → Your current theme → Speed score. This is Shopify's proprietary score and it's useful for relative comparisons, though less detailed than PageSpeed Insights.
-
GTmetrix — More detailed waterfall analysis. Shows you exactly which resources are slowing things down, in what order.
Target scores:
| Metric | Target | "Acceptable" | |---|---|---| | Mobile PageSpeed Score | 60+ | 40-60 | | Desktop PageSpeed Score | 85+ | 70-85 | | LCP (mobile) | Under 2.5s | 2.5-4.0s | | INP (mobile) | Under 200ms | 200-500ms | | CLS | Under 0.1 | 0.1-0.25 | | Total page weight | Under 2MB | 2-4MB |
Reality check: Very few Shopify stores score above 70 on mobile PageSpeed. Don't chase a perfect 100 — chase the fixes that actually impact conversion rate.
The Priority Order
If you're staring at this list feeling overwhelmed, here's the order we attack speed optimization:
- Remove unused apps (30 minutes, no risk, biggest impact)
- Compress images (1-2 hours with a bulk tool)
- Reduce homepage sections (30 minutes in the theme editor)
- Defer non-critical scripts (1 hour if you know basic HTML)
- Lazy-load below-fold images (theme setting or simple code edit)
- Replace GIFs (30 minutes per page)
- Implement conditional script loading (developer task, 4-8 hours)
- Font optimization (1-2 hours)
- Liquid template optimization (developer task, varies)
Most stores see a 30-50% improvement in load time from steps 1-4 alone.
The Revenue Impact
Let's do the math.
Before optimization: 3.5-second load time, 1.4% conversion rate, $75 AOV, 50,000 monthly sessions.
- Monthly revenue from traffic: $52,500
After optimization: 2.0-second load time (1.5-second improvement), conversion rate lifts to 1.65% (conservative 18% improvement based on load time correlation).
- Monthly revenue from traffic: $61,875
- Monthly gain: $9,375 / Annual gain: $112,500
That's from optimizing page speed alone. No additional ad spend. No new campaigns. Just making the site load faster.
The work takes 1-2 weeks. The revenue impact lasts forever.
Want us to speed-audit your Shopify store? We'll run the diagnostics, identify the exact bottlenecks, and tell you the 5 highest-impact fixes in priority order. Free. Book a time here.
Mark Cijo is the founder of GOSH Digital, a full-service digital marketing agency that's helped 150+ eCommerce brands generate over $23M in tracked revenue. He gets unreasonably annoyed by slow websites — because he's seen exactly how much money they cost.

Written by Mark Cijo
Founder of GOSH Digital. Klaviyo Gold Partner. Helping eCommerce brands grow revenue through data-driven marketing.
Book a free strategy call →