Shopify Speed Optimization That Actually Moves Orders
Most Shopify slowdowns come from apps and images added after launch. Here's how to find them, cut what you don't need, and measure the pages that actually make you money.

You ran your store on your phone in the truck, on cellular, and it took long enough that you closed it. That's the same experience your customers are getting, and most of them don't wait around to see the add-to-cart button appear.
Then you check a speed tool, see a red score, and get pointed at a list of technical fixes that don't mean much. Or someone tells you to switch platforms.
Most of what makes a Shopify store slow was installed by a person, not built in by Shopify. Optimizing a Shopify store's speed is mostly subtraction: finding the scripts, widgets and oversized images loading before anyone sees a product, and getting rid of them.
By the end of this page you'll know which of your own pages to test first, and what to cut.
Shopify speed optimization means removing work, not chasing a score
Core Web Vitals is a readout, not a project. It tells you the browser is doing too much before the customer sees anything useful. It doesn't tell you what to do, and no amount of staring at it will move it.
The number moves when the work goes away.
Think about what a phone actually has to do when someone taps your product link. Download the page. Download the theme's scripts. Download every app's script that hooks into the product page. Fetch the fonts. Fetch the images. Run all of it, in order, on a mid-range Android on a weak signal in a customer's driveway. Every one of those things is work. Page speed is just the total of that work divided by how fast the phone can chew through it.
Here's the part nobody selling you a fix wants to say: most of that work was added by a person. Someone clicked Install on a review widget, a currency converter, an upsell popup, a live chat, a countdown timer, a loyalty program, an analytics pixel. Each one looked small. Each one added scripts that load on every page, including the ones that make money.
Shopify's own platform is fast. The hosting, the checkout, the CDN: that part is handled, and you can't tune it anyway. What you can control is what you asked the browser to load on top of it.
So the work here is opening your app list and your theme code, finding what runs before a customer can see a product and a price, and taking it out. Subtraction is the whole job.
Three steps to fix page speed, in order
Most people start by installing something. Start by measuring instead.
Three steps, in this order:
- Measure the pages that make money. A collection page and a product page, on a phone, on cellular. Not the homepage, not your desktop at the office on office wifi.
- Find what loads before the customer sees anything. Open the network tab and watch what the browser fetches first. Scripts, fonts, tracking, chat widgets, anything that runs ahead of the product photo and the price.
- Cut it or defer it. Delete what you don't use. Push what you do use until after the page renders.
Skip step one and you'll spend a weekend fixing something that was never slow. Skip step two and you'll guess. Skip step three and you've just got a nicer report.
Run your product and collection pages through Google PageSpeed Insights
Pull up your Shopify analytics and look at landing pages. Most stores find that paid traffic, Google results and shared links drop people straight onto a product page or a collection. The homepage is where you land because you type the domain in. Customers usually arrive somewhere deeper.
So test those pages. Pick your best-selling product page and the collection page most of your traffic lands on. Run both through Google PageSpeed Insights and read the mobile tab, not desktop. The desktop numbers will look better and they won't tell you much about the person standing in a parking lot with two bars.
Then test it the way a customer does. Take your phone off wifi, turn off wifi entirely so it doesn't reconnect, and load the product page cold. Watch it with a timer or just watch it honestly. How long until you can see the photo and the price? How long until the Add to Cart button stops moving? That second one matters. A button that jumps down the screen while you're reaching for it costs you the tap.
Do the same on the collection page. Scroll it. If images pop in late or the layout shifts as you scroll, that's the CLS problem, and it's work the browser is doing that you can probably take away.
Write down what you see for both pages before you change anything. A date, the page, the score, and what the page felt like on your phone. That's your baseline. Without it you can't tell whether a change helped, and a few weeks from now you won't remember.
The point of picking these pages is that they're the ones tied to your conversion rate. Whatever you fix here shows up in orders. Whatever you fix on the homepage mostly shows up in a dashboard.
Find the third-party scripts loading ahead of your product photo
Open your product page in Chrome on a desktop, right-click, choose Inspect, and click the Network tab. Reload the page. You'll get a list of every file the browser had to fetch, in the order it fetched them, with sizes and timings. It looks like a lot. You only care about the top of that list, because those are the files loading before your customer sees a product photo or a price.
Sort by size. Anything near the top that isn't your main product image is worth a question: what is this, and did I install it?
Three things tend to show up.
Render-blocking JavaScript/CSS. Scripts and stylesheets in the head of the page stop the browser cold until they finish downloading. PageSpeed Insights lists these under "Eliminate render-blocking resources" and names the file. Read the filenames. Ones with an app's name in them came from an app.
Oversized images. Your LCP is almost always the biggest image above the fold, the hero banner or the main product photo. If that file is measured in megabytes, that's your number right there, and nothing else you do will matter as much.
Third-party scripts. Chat widgets, review stars, pop-up builders, upsell bars, analytics, pixels, a currency converter someone added in 2022. These load from someone else's server. If that server is slow today, your store is slow today, and you have no control over it.
Make a list. File, what it does, which app it came from. Check it against your installed apps in the Shopify admin. You will usually find two or three scripts from apps you stopped using and never uninstalled, still loading on every page view, for every customer, on every phone.
Delete the dead code and defer the JavaScript and CSS you keep
A list of heavy files is worth nothing until you act on it. Every item on that list gets one of two decisions: delete it, or make it load later.
Start with delete. Uninstalling an app in the Shopify admin does not always pull its code out of your theme. Older apps left snippets behind, and those snippets keep running. Open your theme code, search for the app's name, and look at what's still referenced in theme.liquid. Duplicate your theme first so you have a copy to fall back on. Then remove what belongs to apps you no longer use, save, and reload a product page on your phone to confirm nothing broke.
What's left, you defer. The JavaScript for a chat widget, a review carousel or an upsell bar does not need to run before the customer can read the price and hit Add to Cart. Loading that script after the page is usable is a code change, usually a small one, and it's the single highest-leverage thing a developer can do for you in an afternoon. Same idea with CSS: a stylesheet that blocks rendering stops the page cold until it finishes downloading.
Images get their own treatment. Resize the file to the size it actually displays at, let Shopify serve modern formats, and set every image below the fold to lazy-load so the phone isn't downloading footer photos before the hero shows up. Image optimization is boring Shopify work, and on most stores it does more for speed than anything else you can change.
Then measure the same two pages again, on the same phone, on cellular. Change one thing, re-measure, write down what happened. Change five things at once and you'll never know which one helped, or which one quietly broke your Add to Cart button on mobile.
Why your store runs slow — and it's usually not Shopify
Shopify runs the checkout, the CDN, the servers, the inventory. That part is fast and you don't touch it. What arrives in the customer's browser, though, is mostly stuff you or someone you hired put there.
Think about how a store actually gets built. You pick a theme. You add a review widget. Then a currency converter, a live chat bubble, an upsell popup, a countdown timer for a sale that ended last spring, a second analytics tag because the agency wanted their own. Each one felt like a small decision. Each one drops its own script into the page, and most of them load on every page, whether the customer needs them or not.
Then there's the theme itself. Stock themes from the Shopify store are usually built with reasonable care. What happens next is the problem: a developer adds a custom section, someone pastes tracking code into the layout file, a font gets swapped, and nobody ever goes back and removes the old code. Six months of little edits stack up into a page that asks the browser to do a lot of work before anything appears.
The pattern shows up the same way every time. A store that was quick at launch got slower one install at a time, and no single change was big enough to notice.
So when you open your site on a phone and it hangs, don't start by blaming the platform. Open the page source or your app list and count what's loading. The things you added are the things you can remove.
The apps you installed are probably the problem
Every app you install has to run somewhere, and on a storefront that means it drops its own code into the page your customer is waiting on. A review widget loads a script to fetch the stars, plus a stylesheet so they look right, plus sometimes a font. An upsell popup loads a script that has to check which product is on screen, then decide whether to show an offer. A tracking pixel loads a script from the ad platform, which often loads a second script from somewhere else.
None of these feel heavy on their own, so they pile up.
The part owners miss is that uninstalling an app often leaves its code in the theme. Plenty of apps ask you to paste a snippet into your theme, and when you remove the app, the snippet stays. So does the leftover section, and the settings file, and the request to a server that no longer answers. Your phone browser still tries to fetch all of it.
Here's what to do this week. Open your Shopify admin, go to Apps, and write down every one you have. Next to each, write what it does for you and the last time you used it. Anything you can't explain is a candidate for removal.
Then check the storefront side. In Chrome on your desktop, right-click a product page, choose Inspect, and open the Network tab. Reload. You'll see every file the page requests, including the third-party scripts coming from domains that aren't yours. Sort by size. The names usually tell you which app is responsible, and a few of them will surprise you.
Image optimization is the biggest win on most stores
A photographer sends you a folder of product shots straight off the camera. Somebody uploads them as-is. Now every phone that lands on that page is downloading print-quality files to show them at the width of a hand.
That's the most common slow page we see, and the easiest one to fix.
Start with the hero image on your home and collection pages. It's usually the single heaviest file on the site, and it loads first, so the customer stares at a blank block while it arrives. Then check your product photos, especially older ones uploaded before anyone thought about mobile.
Here's how to find them. In your Shopify admin, go to Content, then Files. You'll see the file size next to each image. Anything measured in megabytes is too big for a phone on cellular, full stop. Sort by size and you'll have your list in about a minute.
Then run those files through a compressor before you re-upload. Squoosh is free, made by Google, and runs in the browser. You can usually drop the file size a lot without a customer ever seeing the difference on a phone screen.
Two other things worth checking with your theme. Shopify's CDN can resize images and serve modern formats, but only if the theme asks for the right size instead of the original. And images below the fold should load lazily, so they don't compete with the one the customer is actually looking at.
Image optimization is unglamorous. It also moves pages faster than anything else on this list.
Skip the speed app and clean out your apps and theme code
The Shopify app store has a whole category of tools that promise to make your store faster. They work by deferring scripts, lazy-loading things, or stripping code the browser doesn't need yet. Some of them do help a little.
But look at what you just did. Your page was slow because it was loading eight scripts from eight apps. So you installed a ninth script whose job is to manage the other eight. The browser now has more to do, not less, and the speed app has to run first before it can defer anything.
The honest move is to open your app list and go down it one at a time. For each one, ask two questions: did this make us money last quarter, and does it still run on pages where it isn't used? A review widget belongs on product pages. It does not belong on the cart. An upsell tool you tested in the spring and never turned off is still loading on every page view today.
Uninstall the ones you can't justify. Then check the theme code, because some apps leave scripts behind after you remove them from the admin. Search your theme files for the app's name.
Speed optimization on a Shopify store comes down to work coming off the page. Adding another app is adding work.
A perfect homepage score won't fix your conversion rate
Most people never see your homepage.
They click an ad and land on a product page. They search for a part and land on a collection page. They tap a link a friend texted them and land wherever that link points. The homepage is the page you look at every morning because it's the one you built, so it's the one you test, and it's usually the one that's already fine.
So a green score on the homepage tells you almost nothing about the pages doing the work. A collection page with forty product cards, a filter widget and a review star rating on every tile is a different animal. A product page with an image gallery, a size chart popup, a bundle builder and a live chat bubble is a different animal again. Those are where the money moves, and those are where the work piles up.
Pull your analytics and sort landing pages by sessions. Take the top three that aren't the homepage. Those are your test pages from now on.
Then watch what happens after they load: tap a filter or a variant and count how long the page takes to answer, which is what INP measures. A page that renders fast but shifts around while the customer is reaching for Add to Cart will still cost you orders. Page speed and conversion rate are related, but they aren't the same number, and one doesn't automatically drag the other up.
Fix the pages people actually arrive on. The homepage can wait its turn.
What Shopify controls, and what's on you
Shopify runs the servers, the CDN and the checkout. You can't move those. Your product images and theme assets are already served from edge locations close to the customer, and your checkout pages are locked down. Shopify limits what can run there for good reason. If checkout feels slow, that's usually a payment gateway handshake or an app injecting a script where it's allowed to, not something you can tune.
Liquid renders on Shopify's servers before the page ever reaches the browser. It's fast, and it has limits. A collection loop that pulls metafields for every product, or nested loops across variants, adds server time you'll see as a slow first byte. Shopify caps how much of that work a page can do, and themes that push against the cap feel sluggish in a way no image compression will fix.
Everything after that is yours.
The theme is yours. Every section you enabled, every app block sitting in a template, every font you loaded from a third party. The JavaScript and CSS that ships with your theme is yours to audit, and so is everything an app appended to it. Third-party scripts, like chat widgets, review carousels, tracking pixels and popups, are entirely your call. Those don't come from Shopify. Someone installed them.
So a useful test: before you open a support ticket, ask whether the thing you're blaming existed in the theme when you bought it. If the answer is no, it's on your side of the line and you can remove it this week.
Shopify's job is to serve the page. Your job is to keep the page from asking the browser to do more work than it needs to. Most stores we look at have a fine foundation with too much stacked on top.
A checklist ordered by impact, not alphabet
Start at the top and stop when you run out of time this week. The first three items cost almost nothing and do most of the work.
- Delete apps you don't use. Open your app list and be honest about each one. If you can't remember the last time it earned an order, uninstall it. Then check the product and collection page source afterward to see whether its scripts actually left. Some don't, and you'll need to pull the leftover code out of the theme by hand.
- Fix your image optimization. Export the images on your top-selling product page and look at the file sizes. Anything that came off a camera or a manufacturer's site is almost certainly bigger than it needs to be. Resize to the largest size the page actually displays, then compress. This is boring and it works.
- Cull the third-party scripts. Chat widget, popup builder, two analytics tools, a review carousel, an old pixel from an ad campaign you stopped running. Each one loads before the customer sees anything. Remove what isn't tied to a real business reason.
- Defer what's left. Anything below the fold, like reviews, related products and Instagram feeds, should load after the page is usable.
- Lazy-load images that aren't on screen yet. Your hero image should load immediately. The ninth photo in a gallery should not.
- Trim the theme. Old sections, leftover sliders, fonts you stopped using. Every unused font file is a download.
- Re-measure the same two pages on a phone. Compare against what you saw before you started.
Do them in that order. Owners who start at item six spend a weekend on theme code and never touch the four apps that were the actual problem.
Speed is not the goal — orders and fewer bounces are
A store is a business asset. It either brings in orders or it doesn't, and a dashboard score has no opinion on that.
So before you change anything, write down the numbers you'll be judged on. Open Shopify's analytics and pull, for your two money pages: sessions, add-to-cart rate, checkout starts, and conversion rate split by device. Mobile separate from desktop. Then do the work. Then look again after a couple of weeks of similar traffic.
That comparison is the only one that pays you. Page speed is an input. Orders placed and customers who stay long enough to see a price are the output, and they don't always move together. You can shave load time and see nothing if the real issue is a product photo nobody can make sense of on a small screen, or shipping costs that show up late in checkout.
Watch the exits too. Shopify will show you where sessions end. If people are landing on a collection page and leaving without touching a product, that's a page asking too much of a phone on a weak signal. If they reach the product page and stop there, your problem lives further down the funnel.
Neither of us can promise you a specific lift from a specific change. Anyone who does is guessing. What you can do is measure the same two pages, in the same way, before and after, and keep the changes that moved the business numbers.
Is Shopify still worth it in 2026?
Yes, for most small shops. The hosting is fast, checkout is handled, and you're not patching a server at 11pm. We've rebuilt store pages that were crawling, and almost every time the slowness was sitting in the theme or in the apps stacked on top, not in Shopify itself.
The honest caveat is that the platform makes it very easy to add weight. One click installs a script that runs on every page, forever, whether you use the feature or not. That's a discipline problem, and it's yours to manage.
So the question worth asking is whether anyone has looked at your store's actual code in the last year and removed what stopped earning its keep. If the answer is no, you don't have a platform problem. You have a housekeeping problem, and it's fixable this week.
We'll look at your real pages and tell you what's actually slowing them down
Most speed audits arrive as a PDF full of red bars and generic advice. That doesn't help an owner who has a truck to load in the morning.
Here's what we do instead. Send us the store URL and tell us which collection page and which product page bring in the most orders. We pull both up on a phone, on cellular, the way your customers actually see them. Then we go through the code and tell you what's loading, what's running before anything appears on screen, and which of it you'd never miss.
You get a plain answer. This app adds weight on every page and you stopped using it in spring. These images are five times larger than the space they sit in. This slider runs before the product photo loads. That's the whole report: what's there, what it costs you, and what order to remove it in.
Nobody talks about a rebuild in that conversation. Sometimes the page speed problem is three apps and a hero image, and you or your developer can handle it in an afternoon. Sometimes the theme is the issue and a rebuild is the honest answer. Either way, you'll know before you spend anything.
We work on Shopify stores the same way we work on field service software: find the work nobody needs to be doing, then remove it.
If that's useful, book a New Project Consultation.
Keep Reading
