Page Speed on Shopify: What to Fix First
---
title: "Page Speed on Shopify: What to Fix First"
permalink: /blog/page-speed-on-shopify-what-to-fix-first/
---
We run conversion audits on Shopify stores every week, and page speed problems show up almost every single time. Not occasionally. Almost every time. And the pattern is consistent enough that we can usually predict where the bloat is coming from before we even open DevTools.
The frustrating part is that most of these issues are fixable. They just require knowing what to look at first and being willing to make some decisions that feel uncomfortable, like removing apps you paid for or compressing images your designer worked hard on.
Here is what we actually find when we audit stores, and how we prioritize the fixes.
Images Are Usually the First Problem
This is where we start every audit because it is almost always contributing to the problem. We routinely see product pages loading 4MB to 8MB of uncompressed images. On a page where the hero image is 3000px wide and displayed at 600px, that extra resolution is pure waste.
Shopify does serve responsive images through its native image CDN, but only if the theme is using the image_url filter with width parameters correctly. A lot of older themes and some newer ones still load full resolution images regardless of screen size. Check your theme code or ask your developer to confirm this is implemented properly.
For compression, we use Squoosh or Imageoptim before upload. WebP format is supported across all modern browsers and typically cuts file sizes by 25 to 35 percent compared to JPEG without visible quality loss. If you are on a store with hundreds of SKUs, look at an app like Crush.pics or TinyIMG to handle bulk compression automatically.
The specific thing to look for: open your product page on a mobile device in Chrome, open DevTools, go to the Network tab filtered by image, and sort by size. If anything is above 300KB, it needs attention.
Apps Are the Quiet Performance Tax
Every app you install on Shopify has the potential to inject JavaScript into your storefront. Some inject it on every page. Some load multiple scripts. Some load scripts from third party servers that are slow to respond.
We have audited stores running 40 plus apps. Not all of them are active in any meaningful way but the scripts are still loading. A review app that was replaced six months ago. A loyalty program that got paused. A size guide app that someone installed to test and forgot about.
Use the Shopify Admin to see your installed apps, but that only tells part of the story. Go to your theme code and look at theme.liquid and any relevant section files. You will often find script tags from apps that were uninstalled but never cleaned up from the theme code.
The practical test: run your store through Google PageSpeed Insights and look at the "Reduce unused JavaScript" recommendation. It will list the scripts by size. That list is your audit starting point.
For apps you actually need, prioritize ones that load asynchronously and defer non critical scripts. Klaviyo, for example, has a lot of flexibility in how it is implemented. A poorly placed Klaviyo script can block rendering. Placed correctly with async and defer attributes, it is much less of a problem.
Render Blocking Scripts and How to Spot Them
A render blocking script is one that prevents the browser from displaying your page until the script has finished loading and executing. When someone lands on your site and sees a blank or partial page for two seconds before content appears, this is usually why.
The fix is not always removing the script. Sometimes it is just changing where it loads or adding the right attributes. Scripts that do not need to run before the page is visible to the user should have defer or async on them.
To find them, go to PageSpeed Insights and look at "Eliminate render blocking resources." You can also use WebPageTest and look at the waterfall chart. Any script loading in the critical path before your first contentful paint is worth investigating.
Third party chat widgets are a common culprit. Gorgias, Intercom, Tidio, these are all loaded on every page even when the user never opens the chat. Most of them support lazy loading, meaning the script loads after the page content is visible. If you are using a chat app, check their documentation for a deferred loading option. It is almost always available.
Theme Code and Liquid Performance
Themes are not all built the same way. We have seen premium themes from reputable developers that load 600KB of JavaScript on the homepage. That is a lot for a page that might just need a hero banner, featured products, and a newsletter signup.
Heavy themes often include features that are built in but not used. Video backgrounds, 3D product viewers, advanced mega menus. If those features are in the theme code but not enabled, the JavaScript may still be loading.
The practical approach here is to audit what your theme is actually loading using the Coverage tab in Chrome DevTools. It shows you how much of each loaded JavaScript file is actually being executed on the page. If you are loading a 200KB script and using 15 percent of it, that is a conversation worth having with your developer.
Dawn, Shopify's free default theme, consistently outperforms most third party themes on speed benchmarks. That does not mean you have to use it, but it does mean that if your current theme is dramatically underperforming, switching to a leaner theme with custom design work on top is sometimes more efficient than trying to optimize an inherently heavy one.
Third Party Tracking Scripts Need a Closer Look
Google Analytics 4, Meta Pixel, TikTok Pixel, Pinterest Tag, Snapchat Pixel. Most stores are running several of these. Each one adds weight and each one makes external requests to servers you do not control.
The best practice we recommend is loading all of these through Google Tag Manager rather than hardcoding them individually into your theme. GTM gives you control over when and how each tag fires, and it consolidates external requests in a more manageable way. It also makes it easier to audit what is actually running.
One thing we see regularly is stores with duplicate tracking scripts. The Meta Pixel installed natively through Shopify's Facebook channel AND hardcoded in the theme. GA4 configured through GTM and also installed via an app. Each duplication means the script is loading twice and events are potentially firing twice, which corrupts your attribution data and slows down your pages.
Do a tag audit in GTM if you are using it, or use a browser extension like Tag Inspector to see everything that is loading on a given page. Clean up duplicates before you do anything else.
Page speed is a conversion problem, not just a technical one. A one second delay in load time can reduce conversions by 7 percent. On a store doing meaningful volume, that math adds up fast.
If you want a second set of eyes on what is actually slowing your store down and what it is costing you in revenue, our conversion audit covers page speed alongside the other friction points that keep visitors from buying. You can learn more about it on our services page.