How to speed up a Shopify store without a speed app
I'm a Shopify Expert with 9+ years in this (I don't mean this in an arrogant way). You do not need a speed app to speed up a Shopify store. I scraped 47,420 stores. The median mobile PageSpeed score was 53. Shopify's own server answered in 7 milliseconds. The wait is JavaScript from apps and leftover theme code. A snippet in the theme is the first pass. Last tested in 2026.
Long story short: delete what you don't use, delay what you do use, then compress the images. That is the whole job. A monthly speed app usually adds another script on top of the pile.
This is the how-to. The numbers come from the 47,000-store study. The raw data is public. If you want to see which theme and apps a store is running, I also wrote how to detect the theme and apps from any Shopify store.
Works on Dawn, the other free OS 2.0 themes and most paid OS 2.0 themes. Download a backup of the theme first. If something breaks, you can roll back in about 10 seconds.
This tutorial is compatible only with Shopify's official free themes: Colorblock, Craft, Crave, Dawn, Origin, Publisher, Refresh, Ride, Sense, Spotlight, Studio, Taste & Trade.
Looking to install this on a premium or custom theme? Contact us.

What is actually making Shopify stores slow
Shopify's servers are not the bottleneck. Median TTFB in that dataset was 7ms. Only 0.1% of stores were over 600ms. Google's "good" LCP is 2.5 seconds. The median store in the study took 10.1 seconds for main content to show on a phone. 95.9% were in the poor range (over 4 seconds).
The median store loads 69 scripts per visit. Average is 78.6. Each extra app costs about 2 to 3 PageSpeed points. At 5 apps the median is already under 50. At 10 apps it is 42.
That is why buying another app to "fix speed" often makes the score worse. You are adding a 6th script loader to a page that already has 69.
Step 1. Measure the real problem
Open PageSpeed Insights. Paste your homepage. Run mobile. Ignore the big number for a minute. Look at Largest Contentful Paint and Total Blocking Time.
LCP is "when the main thing shows". On most stores that is the hero image or the first product photo. If LCP is 8 seconds, visitors on a phone are staring at a blank or half-drawn header. TBT is "the page looks there but taps do nothing". Median TBT in the study was 330ms. Google's good line is 200ms. 5.1% of stores were frozen for over 2 seconds.
Run the product page too. In the dataset, home and product were basically the same speed (53 vs 52). If product is much worse, reviews, upsells and extra pixels on that template are the usual reason.
Step 2. Count the apps, then uninstall the dead ones
In Shopify admin go to Settings > Apps and sales channels. If you are over 5, you are already on the slow side of the curve. I am not saying you must live with zero apps. I am saying each one has a cost, and most stores keep apps they stopped using months ago.
Uninstall is not enough. A lot of apps inject a script tag into theme.liquid or drop a snippet that still loads after you click Uninstall. Search the theme for the app name, the partner's domain and leftover <script> tags. If you are not comfortable doing that, that is the point where a manual cleanup beats a snippet.
Session recorders, Google Tag Manager, live chat, page builders and stacked pixels are the heavy groups in the data. That pattern is in the 47k study.
Step 3. Delay JavaScript that is not needed for first paint
The browser cannot draw the hero while it is downloading and running 70 scripts. Chat widgets, loyalty popups, pixel managers and "just in case" tracking do not need to run before the first image. They can wait until the page is usable.
That is what a theme snippet is for. You paste it once. It does not sit in the app store billing you every month. It also does not replace uninstalling 14 apps. The worst store in the study scored 1 out of 100 and ran 14 apps on every page. No snippet fixes that stack. You remove the stack.
Open Edit code from Online Store > Themes, 3 dots on the theme card, then Edit code.

If you want that first pass as copy/paste instead of writing the delay logic yourself, that is Ultimate Speed Enabler. After you buy it you get the snippet. You paste it in the theme (the product page has the file and the exact spot). Then you save and re-run PageSpeed on mobile.
From Edit code, the old 3-dots path to Customize is gone. Click the Shopify bag icon in the left toolbar, then Customize theme if you need to check the storefront from there.
Step 4. Images, only after the scripts
Images show up in every audit. They matter. They are usually not the first reason a store scores 30. The median homepage in the study was 3.7 MB. The fastest 1% averaged 2.7 MB and 132 requests. The slowest 1% averaged 8.8 MB and 314 requests. There was no fast store with a heavy page.
Use Shopify's CDN sizes. Don't upload a 4000px PNG for a 400px column. I keep the design. I just stop shipping a print file to a phone. Same story on a Dawn store that still took 23 seconds: Dawn, 23 seconds, apps on top.
Do not switch themes as the first move
Free themes in the study had a median of 60. Paid themes had a median of 51. That is not because paid themes are junk. Stores on Prestige, Impulse and Empire also install more apps. Switching themes first just moves the same app pile onto a new file. I kept Prestige and still took a store from 34 to 95: Prestige, 34 to 95.
Updating Dawn from an old version to v15.4.1 was about 5 points. Theme version is a weak lever. What you load on top of it is the lever.
If the score barely moves
You still have a heavy app running on every page. Or the snippet is in the wrong file. Or you tested desktop and the problem is mobile (18-point gap in the data, same stores).
Hard refresh. Test in an incognito window. PageSpeed is a lab test. It is still the thing merchants Google, so I use it, but your real visitors on 4G are the actual test.
If you get stuck, tell me which theme you're on and roughly how many apps. That is usually enough to know whether a snippet is enough or you need the leftover code pulled out.
Most stores in the 47k set were slow because of scripts, not because Shopify is slow.
If you want a first pass without a full audit
I still do the kind of work in these posts. For stores that just need a first pass, I also sell a snippet you paste into the theme. It is called Ultimate Speed Enabler. One-time buy, not a monthly app. If leftover apps have wrecked the theme, an audit is still the better move.
Related Shopify speed work
I wrote these as well. Same kind of work, different angle.
47,000 Shopify stores: themes, apps and speed
Subscribe for Shopify researches, tips & guides
Get high quality posts about Shopify insights. No spam, unsubscribe anytime.