Skip to main content
True MarginTrue Margin
Shopify Page Speed Optimization: 15 Fixes That Actually Work
← Back to blog

Shopify Page Speed Optimization: 15 Fixes That Actually Work

By Jack·March 27, 2026·12 min read

The fastest fix for most slow Shopify stores is removing apps you don't use. Not compressing images. Not upgrading your theme. Not buying a speed optimization service. Just deleting the 6 apps you installed, tried once, and forgot about. Each one is injecting JavaScript into every page load whether you realize it or not.

But that's just fix #1 of 15. Below is the full list, ranked roughly by impact, with specific instructions for each. I've worked through enough Shopify speed audits to know which fixes actually move the needle and which ones are performance theater.

Before you start optimizing, know your baseline. Run your homepage and a product page through Google PageSpeed Insights and save the results. You want numbers to compare against, not vibes. And if you're wondering how your store's overall authority looks to search engines and AI systems, run a quick authority check while you're at it.

Core Web Vitals: The Metrics That Matter

Google doesn't care about your Shopify speed score. It cares about three specific metrics called Core Web Vitals. These are what actually affect your SEO rankings and your customers' experience.

MetricWhat It MeasuresGoodNeeds ImprovementPoor
LCP (Largest Contentful Paint)How fast the biggest element loads≤ 2.5s2.5s - 4.0s> 4.0s
CLS (Cumulative Layout Shift)How much the page jumps during load≤ 0.10.1 - 0.25> 0.25
INP (Interaction to Next Paint)How fast the page responds to clicks≤ 200ms200ms - 500ms> 500ms

LCP is where most Shopify stores fail. The hero image or product image is almost always the largest contentful paint element, and if it's a 2MB uncompressed PNG, your LCP is going to be terrible regardless of what else you do.

The 15 Fixes (Ranked by Impact)

1. Audit and Remove Unused Apps

This is the single highest-impact change for most stores. Go to Settings → Apps and sales channels. Be honest about which apps you actually use. That countdown timer app from last Black Friday? The pop-up builder you tested for a week? The social proof tool showing "Someone in Texas just bought..." notifications? They're all loading JavaScript on every single page.

Here's the catch: uninstalling a Shopify app doesn't always remove its code from your theme. After uninstalling, go to Online Store → Themes → Edit Code, and search for any leftover snippets or script tags from removed apps. This orphaned code is invisible bloat.

2. Compress and Convert Images to WebP

Shopify automatically serves WebP to supported browsers through its CDN, but only if the original image is reasonably sized. Uploading a 4000x4000px product photo and letting Shopify downscale it is not the same as uploading a properly sized image.

Target sizes: Hero images at 1600px wide max. Product images at 1200px wide max. Collection thumbnails at 800px. Keep file sizes under 200KB per image whenever possible. Tools like TinyPNG or Squoosh handle this in seconds.

3. Lazy Load Below-the-Fold Images

Shopify's Online Store 2.0 themes support native lazy loading, but older themes and custom sections often load every image on the page immediately. Add loading="lazy" to any image that isn't visible in the initial viewport. This alone can cut initial page weight by 40-60% on image-heavy collection pages.

One important exception: never lazy load your hero image or above-the-fold product image. That's your LCP element. Lazy loading it will make LCP worse, not better.

4. Switch to a Lightweight Theme

Your theme choice matters more than most merchants realize. I'd go as far as saying theme selection is the second most important speed decision after your app stack.

Theme CategoryTypical JS SizeMobile PageSpeed RangeExamples
Minimal / Reference50-120 KB60-90Dawn, Refresh, Sense
Mid-weight150-300 KB35-60Impulse, Prestige, Impact
Feature-heavy400-800 KB15-35Older custom themes, heavily modified themes

Shopify's Dawn theme consistently scores the highest on speed benchmarks because Shopify built it as a performance-first reference. If your current theme scores below 30 on mobile, switching to a leaner theme will do more than any amount of optimization on the existing one.

5. Defer Third-Party Scripts

Every external script blocks rendering until it loads. Google Analytics, Meta Pixel, Klaviyo, Hotjar, TikTok Pixel, your live chat widget. They all fight for bandwidth during the critical first load.

Add defer or async attributes to non-critical scripts. For tracking pixels, consider loading them after the DOMContentLoaded event instead of in the head. Your analytics will still capture the session. It just won't block the page from rendering.

6. Preload Your LCP Image

Your hero image or main product image is almost certainly your LCP element. Tell the browser to start downloading it immediately by adding a preload link in the head:

<link rel="preload" as="image" href="your-hero-image.webp">

This is a small change that can shave 200-500ms off LCP. Without it, the browser discovers the image only after parsing the HTML and CSS, which adds unnecessary delay.

7. Reduce Liquid Template Complexity

Shopify's Liquid templates are server-rendered, and complex template logic adds to Time to First Byte (TTFB). Nested loops, excessive conditional blocks, and heavy use of the | json filter in large product collections can push TTFB past 800ms.

The fix: paginate collections (never load 500+ products in one template), minimize nested for-loops, and avoid calling all_products globally. If you need product data on non-product pages, use the AJAX API instead of Liquid globals.

8. Inline Critical CSS

Your browser can't render anything until it downloads and parses your entire CSS file. If that file is 300KB of styles for every possible page type, your homepage is waiting on CSS it will never use.

Extract the CSS needed for above-the-fold content and inline it directly in the <head>. Load the rest asynchronously. This is a developer-level task, but it regularly cuts First Contentful Paint by 300-800ms.

9. Replace Heavy Apps with Lightweight Alternatives

Not all apps in the same category have the same performance cost. Review apps are a prime example. Some load every review on page load with a massive JavaScript bundle. Others use lazy loading and lightweight iframes. The feature set might be similar, but the performance impact can differ by 500ms+.

Before installing any app, check its Lighthouse impact. Install it on a staging theme, run PageSpeed before and after, and compare. If an app adds more than 200ms to your load time, look for a leaner alternative.

10. Optimize Fonts

Custom fonts are one of the sneakiest performance killers on Shopify. Each font weight you load is another 20-50KB. A brand using a custom font in regular, bold, italic, and bold italic across two font families is loading 160-400KB just in fonts.

Fixes: Limit to 2-3 font weights maximum. Use font-display: swap so text is visible immediately (with a fallback font) while the custom font loads. Better yet, use system fonts. They load instantly because they're already on the user's device.

11. Minimize Redirects

Each redirect adds a full round-trip to your load time. On mobile networks, that's 100-300ms per redirect. Common culprits: HTTP to HTTPS redirects (should be one, not chained), old product URLs redirecting to new ones, and the www to non-www redirect.

Audit your redirects in Shopify's URL Redirects section. Remove any chains (A → B → C should be A → C directly). Update internal links to point to final URLs instead of relying on redirects.

12. Use Shopify's Built-In CDN Properly

Shopify serves all assets through its global CDN (Fastly), but merchants sometimes break this by hosting images or scripts on external servers. If you're loading product images from a separate hosting service, an external media library, or a custom domain for assets, you're adding DNS lookups and losing CDN edge caching.

Keep everything on Shopify's infrastructure. Use the | image_url Liquid filter instead of hardcoded URLs. This ensures images are served from the nearest CDN node with proper cache headers.

13. Eliminate Layout Shift (CLS)

Layout shift happens when elements jump around as the page loads. The biggest CLS offenders on Shopify stores: images without explicit width/height attributes, late-loading banners that push content down, font-swap flashes that change text size, and dynamic content injected by apps after page load.

Set explicit width and height attributes on all images. Reserve space for dynamic elements with CSS min-height. If an app injects a banner or notification bar, make sure the space is pre-allocated in the DOM.

14. Optimize Collection Page Pagination

Collection pages with 50+ products loading all at once are a common bottleneck. Each product means another image, another set of variant data, another block of HTML. Paginate at 24-36 products per page. Use Shopify's built-in pagination rather than infinite scroll, which loads all products behind the scenes and kills performance.

If you want the UX of infinite scroll without the performance hit, use a "Load More" button with AJAX that fetches the next page only when clicked. This gives you the progressive feel without the upfront weight.

15. Remove Render-Blocking JavaScript in the Head

Check your theme's theme.liquid file. Any <script> tag in the <head> without async or defer is blocking your page from rendering. Move non-critical scripts to the bottom of the body, or add the defer attribute.

The only scripts that belong in the head without defer are those needed for above-the-fold content rendering. Everything else (analytics, chat widgets, review scripts, tracking pixels) should defer.

Speed vs. Conversion: Where the Line Actually Is

There's a point where speed optimization starts hurting instead of helping. Stripping out your review widget to save 200ms might cost you more conversions than those 200ms were costing you. This is my honest take: once you're under 3 seconds on LCP, the marginal gains from further speed work are smaller than the gains from improving your product pages, copy, and trust signals.

LCP RangePriorityWhere to Focus Instead
> 5 secondsSpeed is your #1 problemNothing else until LCP is under 4s
3 - 5 secondsSpeed is a significant dragImage optimization + app audit first
2.5 - 3 secondsSpeed is adequate, not greatQuick wins only, then focus on conversion rate
< 2.5 secondsSpeed is a non-issueProduct pages, SEO, margin optimization

I've seen store owners spend weeks chasing a perfect Lighthouse score while their product descriptions are two sentences and they have zero reviews. Speed matters. But it's not the only thing that matters. Once you're in the "good" range on Core Web Vitals, redirect that energy into things that directly generate revenue.

How Speed Connects to Visibility

Page speed doesn't just affect the people already on your site. It affects whether people find you in the first place. Google's ranking algorithm weights Core Web Vitals as a factor. Slow pages get crawled less frequently, meaning new products and content take longer to appear in search results.

And it goes beyond traditional search. AI systems like ChatGPT and Perplexity factor in page quality signals when deciding which sources to cite. A fast, well-structured page is more likely to be pulled into AI-generated recommendations than a slow, bloated one. If you're thinking about your store's AI visibility, speed is part of that equation.

How visible is your store to search engines and AI?

Speed is one piece of the puzzle. See how your store ranks across Google, ChatGPT, Perplexity, and other AI systems with a free authority check.

Check Your Store's Authority Score →

The Testing Workflow

Don't make all 15 changes at once. You won't know what helped and what didn't. Here's how to approach it:

  1. Benchmark first. Run PageSpeed Insights on your homepage, a collection page, and a product page. Record LCP, CLS, INP, and the overall score for each. Screenshot it.
  2. Start with the top 5 fixes. App audit, image compression, lazy loading, theme evaluation, and script deferral. These five account for the majority of speed gains on most stores.
  3. Re-test after each group of changes. Compare to your baseline. If LCP dropped under 2.5 seconds, you might be done. If not, move to fixes 6-10.
  4. Fixes 11-15 are refinements. They matter for stores chasing every last millisecond, but they won't transform a 6-second page into a 2-second one. Get the big wins first.

Common Mistakes That Waste Your Time

A few things I see merchants doing that either don't help or actively hurt:

  • Installing a "speed optimization" app to speed up your store. The irony is thick. Most of these apps add their own JavaScript to your page. Some provide marginal caching benefits, but you're adding weight to remove weight.
  • Obsessing over the Lighthouse score number. A score of 45 with good Core Web Vitals (LCP under 2.5s, CLS under 0.1) is better than a score of 70 with poor real-user metrics. The score is a proxy. Core Web Vitals are the actual ranking signal.
  • Using AMP pages on Shopify. Google no longer gives AMP a ranking boost, and Shopify's AMP support is limited. The effort isn't worth the return.
  • Removing all images to improve speed. Yes, a page with no images loads fast. It also converts terribly. High-quality product imagery is non-negotiable for ecommerce. Optimize images, don't remove them.

Speed and Revenue: Putting It Together

The reason any of this matters is money. A faster store converts better. Google's own data shows that as page load time increases from 1 to 3 seconds, bounce probability increases by 32%. From 1 to 5 seconds, it increases by 90%. Those bounced visitors aren't coming back.

For a Shopify store doing $50,000/month with a 2% conversion rate and a 5-second LCP, fixing speed alone could meaningfully impact revenue. Not because speed directly equals sales, but because every friction point you remove keeps more visitors in the funnel. Combine that with strong conversion rate fundamentals and you're compounding improvements.

Speed is infrastructure. It's the foundation everything else sits on top of. Your ads, your SEO, your AI visibility, your email campaigns. All of them drive traffic to pages. If those pages are slow, you're leaking money from every channel simultaneously.

Frequently Asked Questions

What is a good page speed score for Shopify?

A good Shopify speed score is 50+ on Google PageSpeed Insights for mobile and 80+ for desktop. The average Shopify store scores around 30-40 on mobile, so anything above 60 puts you in the top tier. That said, focus on Core Web Vitals (LCP under 2.5s, CLS under 0.1, INP under 200ms) rather than the overall score. The individual metrics matter more for both SEO and user experience.

Why is my Shopify store so slow?

The most common causes: too many installed apps (each adds JavaScript), unoptimized images (no WebP, no lazy loading), bloated themes with dozens of unused features, excessive third-party scripts (chat widgets, analytics, social proof pixels), and render-blocking CSS. Most stores can cut load time significantly by auditing apps and compressing images alone.

Do Shopify apps slow down my store?

Yes. Every Shopify app that adds front-end code increases your page load time. Some apps add 200-500ms each. The worst offenders are live chat widgets, review apps that load all reviews on page load, pop-up builders, and social proof notification tools. Even uninstalling an app doesn't always remove its code from your theme files. Check your theme code after uninstalling.

Does Shopify page speed affect SEO?

Yes. Google uses Core Web Vitals as a ranking signal. A slow Shopify store with poor LCP, CLS, or INP scores will rank lower than a faster competitor, all else being equal. Speed also affects crawl budget. Google may index fewer of your pages if your site is slow. And beyond Google, AI search systems also factor page quality into their citation decisions. See our guide on GEO vs SEO for Shopify for the full picture.

Should I pay for a Shopify speed optimization service?

Most stores can handle the highest-impact fixes themselves: compressing images, removing unused apps, and evaluating their theme. Paid services make sense if you need custom Liquid code optimization, script defer/async implementation, or critical CSS extraction that requires developer knowledge. Expect to pay $500-2,000 for a professional speed audit and implementation.

Does switching Shopify themes improve page speed?

It can, dramatically. Bloated themes with dozens of built-in features load significantly more JavaScript and CSS than minimal themes. Shopify's Dawn theme is one of the fastest because it was built as a performance-first reference implementation with minimal bloat. Switching from a heavy theme to a lean one can improve your mobile PageSpeed score by 15-30 points without any other changes. Just make sure to test your customizations on the new theme before going live.

Stop guessing. Start calculating.

True Margin gives ecommerce founders the tools to make data-driven decisions.

Try True Margin Free