Why is my Shopify store so slow?
Shopify stores get slow from app scripts on every page, oversized images, too many font files and old theme code; Shopify's hosting is rarely the cause. Google calls a page good at LCP of 2.5 seconds or less, INP of 200 milliseconds or less and CLS of 0.1 or less, measured at the 75th percentile of page loads.
Slow is expensive twice: buyers leave before the page paints, and the ad platforms charge you more to send traffic to a page they score as bad. The causes rank in a predictable order.
The thresholds to measure against
Google’s Core Web Vitals define “good” as a Largest Contentful Paint of 2.5 seconds or less, an Interaction to Next Paint of 200 milliseconds or less, and a Cumulative Layout Shift of 0.1 or less. Google measures each at the 75th percentile of page loads, split by mobile and desktop (web.dev, checked October 21, 2026). Those are the numbers to hold a store against, on the pages your ads actually land on.
Cause one: app scripts
Every app you install earns the right to inject script on every page, and most take it whether the page uses the app or not. The review widget loads on the blog. The bundle app loads on the contact page. The abandoned-cart tool loads on a policy page nobody abandons a cart from.
Uninstalling helps less than founders expect, because many apps leave their code in the theme after removal. That’s the sediment problem in cause four, arriving early.
Diagnosis: open your storefront with your browser’s network tab and list the third-party domains. Any you can’t match to an app you use is a suspect. Then cross-check against your app list and your billing. Plenty of stores are paying for at least one app nobody has opened in a year, and it’s still loading on every page view.
The fix: an app audit. Remove what you don’t use, then have the leftover code stripped from the theme. This is the highest-return speed work on most stores.
Cause two: images
Furniture-sized hero images shipped at 4,000 pixels wide for a phone screen. Product photos uploaded straight from the supplier at print resolution.
Shopify’s CDN resizes images when the theme asks correctly. Older themes and hand-edited ones often don’t ask correctly, so the browser downloads the full-resolution file and shrinks it on the client, paying the full transfer cost for none of the benefit.
Diagnosis: if your largest homepage image weighs more than a few hundred kilobytes on your phone, the theme isn’t sizing responsively.
The fix: lives in the theme’s image rendering, not in manually shrinking uploads forever. Fix it once in the template and every future upload inherits the fix.
This is worth real attention for high-consideration catalogs, where buyers want to see the product at full scale and much of the traffic arrives on phones. The imagery has to be big enough to sell and small enough to arrive, and only the template can hold both.
Cause three: fonts
Each font family and weight is a file the browser must fetch before text settles. Themes configured with a display font, a body font, and five weights of each ship ten font files when the design uses a few.
Two families, two or three weights total, covers almost any brand and cuts font weight by half or more. This is a theme settings change on most modern themes, which puts it inside the founder’s own reach.
Cause four: the theme itself
Legacy themes and heavily patched ones carry years of sediment: sliders nobody uses, scripts from apps deleted in 2023, CSS for sections that no longer exist.
Past a point, cleanup inside the old theme costs more than moving to a current one. That threshold decision is covered in facelift or full rebuild.
What’s almost never the cause
Shopify’s hosting. The platform serves fast globally, and switching plans won’t fix a slow store.
Two more false leads worth naming. A speed-optimizer app, which adds a script to fix a script problem. And a theme swap bought for speed alone, which moves your slow content into a fast frame and leaves you at roughly the same number.
Where speed sits in the build, and why that saves money
Speed work costs less inside a project than after one.
On my storefront builds, page speed is a build spec item measured before launch rather than a cleanup engagement later. A build that starts at $5,000 includes it, and most of my builds launch in two to three weeks from kickoff. Bought as remediation afterward, the same work is a separate engagement, plus whatever the slow months cost in ad spend on pages the platforms were scoring down.
The pattern repeats with tracking, which is the other thing redesigns leave for later. Wired during the build it’s part of the number. Bought afterward it’s typically a $2,500 project on its own. The published prices are on my pricing page.
The fix order and the measurement rule
Apps first, images second, fonts third, theme sediment last. That order is by return per hour, and it holds on almost every store I open.
Measure on a phone over cellular before the first change and after every change, using the same page each time. One variable, one measurement, or you’ll never know which change earned the improvement.
When the fix lives in a new or edited theme, my method is to compare two unpublished themes against each other: a fresh duplicate of the live theme and the edited one. Shopify’s preview bar loads on any theme you preview, and it skews Lighthouse, so a preview tested against the live store isn’t a fair comparison.
Measure your paid landing pages specifically, not your homepage. Speed there is priced into every click you buy, and the homepage is rarely where paid traffic lands. Which page paid traffic should land on is its own decision, covered at product page or landing page.
What to do this week
If you have never audited the apps, start there and nowhere else. Open the network tab, count the domains, match them to your app list and your invoice, and remove what nobody uses. Then have the residue stripped out of the theme, because uninstalling an app doesn’t uninstall its code.
If the store is already lean and still slow, the problem is the theme’s age, and the honest fix is structural. When I build or facelift a storefront, speed ships inside the project rather than as a cleanup later, which is cheaper in both directions. The way that works is on my Shopify storefronts page.
When to bring me in
Bring me in when paid traffic lands but doesn’t buy, when the theme fights your catalog, or when you’re weighing a rebuild and need to know if a facelift would do.
I'm Conner Crowe, and I write every audit myself. Send the free audit request with your store URL and add me as a read-only user on the ad account, and within 24 hours of access you'll have a written read on where the store loses paid traffic and what to fix first. No call needed, and nothing in your account or store changes.
Home or furniture store? The catalog audit reads the public store, so there’s nothing to grant. Request the free catalog audit
Tools for this diagnosis
-
Websites & Landing Pages
The build offer: custom Shopify themes, facelifts, landing pages.
Related questions
-
How much does it cost to customize an existing Shopify theme?
Shopify theme customization by scope: free settings work, hourly section builds, and the coordinated facelift from $5,000 that beats piecemeal edits.
-
Should my Shopify ads land on product pages or a landing page?
When paid traffic should land on a Shopify product page, when a collection wins, and when a dedicated landing page earns its build cost.
-
How much does a custom Shopify theme cost?
What a custom Shopify theme costs in 2026: premium themes, custom builds by catalog size, and large catalogs or migrations, with what each band includes.
-
Will redesigning my Shopify store hurt SEO?
A careless Shopify redesign burns rankings through changed URLs, lost internal links, and vanished structured data. The five risks and how to close each.
Back to the full shopify storefront questions: the decision library
Same read,
run on your store.
Send the store link and I'll write you a read on where it loses paid traffic and what to fix first. Home and furniture stores get the catalog audit; any other store gets the ad account audit from read-only access. No call needed.