How to Speed Up a Shopify Store: 5 Steps That Work
Shopify already handles hosting, CDN and caching. A slow store is almost always the theme, the apps or the scripts. Here is the order I fix them in.
To speed up a Shopify store, work on the three things you control: the theme, the apps and the third-party scripts. Shopify already handles hosting, the CDN, caching and compression, so most slow stores are slow because of what was added on top. Measure first with Shopify’s own web performance reports, then work through the five steps below in order.
I’m Zain Saeed, a Shopify Partner and WordPress and Shopify developer. I’ve shipped 120+ projects over 8+ years and won Fiverr’s Millionaire Award for $1M+ in orders. This is the order I follow when a store owner asks me to fix a slow store.
Short answer: the 5 steps
- Measure with real visitor data. Use the web performance reports in your Shopify admin, then PageSpeed Insights for detail.
- Fix the main image on each key page. It is usually the element that decides your loading score.
- Clean up the theme. Fewer sections per page, deferred scripts, no leftover code.
- Audit your apps. Remove the ones that do not pay for themselves, and remove their leftover code too.
- Control third-party scripts. Pixels, tag manager tags, chat widgets and A/B testing snippets.
Steps 1, 2 and 4 are things most store owners can do themselves. Steps 3 and 5 usually need someone who can read theme code.
What Shopify already does for you
Speed test tools often suggest fixes that do not apply to Shopify. Before you spend time on them, know what the platform already does. According to Shopify’s guide to improving store performance, every store gets:
- A CDN run by Cloudflare, with assets served over HTTP/2.
- Browser caching set to one year for cacheable files.
- Gzip compression on CSS, JavaScript and pages.
- Image optimization through the image CDN, which compresses images and often serves them as WebP.
- Minified CSS and JavaScript when the storefront requests them.
So if a tool tells you to “add a CDN”, “enable compression” or “set cache headers”, you can ignore it. Shopify names the three biggest factors you do control: your theme, the apps you have installed, and any third-party code you added by hand, including tag managers and the tags inside them.
Step 1: Measure with real visitor data
Start in your Shopify admin. The Themes page under Online Store shows a performance summary for the three Core Web Vitals, based on real visitors over the past 30 days. Under Analytics, then Reports, you will find reports for each metric over time, by page type and by page URL.
These are the rankings Shopify uses, taken from its web performance reports documentation:
| Metric | What it measures | Good | Moderate | Poor |
|---|---|---|---|---|
| Largest Contentful Paint (LCP) | Loading speed | 2,500 ms or less | Up to 4,000 ms | Over 4,000 ms |
| Interaction to Next Paint (INP) | Response to clicks and taps | 200 ms or less | Up to 500 ms | Over 500 ms |
| Cumulative Layout Shift (CLS) | Layout stability | 0.1 or less | Under 0.25 | 0.25 or more |
Three things to know before you read the numbers:
- The report can lag. Shopify says the data may be delayed by up to 36 hours and only covers the last 90 days.
- Use the page type report first. It tells you whether the problem is on product pages, collection pages or the home page, so you fix the right template.
- Use the over time report to find the cause. It marks events such as app installs and theme updates on the chart. A score that dropped the week you installed an app is a strong clue.
Write down the three numbers for mobile before you change anything. Then use PageSpeed Insights on one slow product page and one slow collection page to see which element is the LCP element and which scripts take the longest.
Step 2: Fix the main image on each key page
On most stores the LCP element is an image: the hero banner on the home page, or the first product photo on a product page. Shopify’s image CDN handles format and compression, but the theme decides how that image is loaded. Shopify’s performance best practices for themes are specific here:
- Never lazy-load the LCP image. Images visible when the page opens should load right away. Lazy loading is for images further down the page.
- Add
fetchpriority="high"to that one image so the browser requests it early. - Do not hide it behind a fade-in or reveal animation. The animation delays the moment the image counts as visible.
- Use a real image tag, not a CSS background image, for hero content.
- Use the theme’s
image_tagfilter withsrcsetandsizes, so phones do not download the desktop-size file. It also adds width and height, which prevents layout shift.
What you can do without code: upload images at a sensible size for where they appear, replace an autoplay slideshow with a single hero image, and turn off “reveal on scroll” animation for the first section if your theme has that setting. Then compare the numbers. Shopify itself advises comparing performance before and after turning on page transitions or other animations, because they can slow pages down.
Step 3: Clean up the theme
Shopify’s first recommendation is to use an up-to-date theme that is built for performance. If your theme is several years old and heavily edited, a cleanup may cost more than moving to a current one. I cover how to judge that in signs your Shopify theme is costing you sales.
If the theme is worth keeping, this is the cleanup list:
- Reduce sections per page. Shopify states that a high number of sections on a page template can lower performance. A very long home page is a common cause.
- Paginate large collections. Limit how many products load at once.
- Defer non-critical scripts. Scripts that are not needed for the first view should load with
defer. - Keep preload hints to one or two. Shopify’s theme guidance says to use them only for resources the browser finds late. Preloading everything makes nothing a priority.
- Host fonts on the Shopify CDN instead of an external font service, or use system fonts.
- Fix slow Liquid. Nested loops over products, variants or options are the usual cause. In Shopify’s words, a theme that is fast on 10 products can be slow on 100.
Always do this work on a duplicate of the live theme and test it before publishing.
Step 4: Audit your apps
Apps are the most common reason an otherwise good theme is slow. Many of them load their own JavaScript on every page, including pages where they do nothing.
- List every installed app and what it does on the storefront.
- For each one, ask whether it brings in enough value to justify its cost in speed and fees. Shopify gives the same advice: make sure apps create enough value to offset the performance loss.
- Remove duplicates first. Two review apps, two popup apps or two upsell apps doing the same job is the easy win.
- After uninstalling, check the theme for leftover code.
That last step matters. Shopify’s documentation says that uninstalling an app does not automatically remove its code from your theme, and you may need to contact the app developer for removal instructions. I regularly find snippets from apps that were uninstalled long ago still loading on every page.
Some app features can be replaced with a small amount of theme code, such as a size chart, a trust row or a simple announcement bar. That removes both the script and the monthly fee.
Step 5: Control third-party scripts
Poor INP almost always comes from too much JavaScript. Shopify says so directly: if INP is poor, you most likely have too much JavaScript from theme code, app code or tag manager code, and you should clean up the worst offenders first.
- Audit your tag manager. Remove unused and low-value tags. Old campaign pixels are common here.
- Remove A/B testing snippets when no test is running. Shopify’s theme guidance calls out anti-flicker snippets specifically, because they hold back the page while they wait.
- Delay what is not needed at first view. A chat widget can load after the visitor interacts with the page.
- Do not put a proxy in front of the storefront. Shopify advises against routing the store through a request proxy.
How to check the result
Change one group of things at a time, then wait. Field data is collected from real visits, so the report will not move the same day. Check the over time report after a few days and compare it to the numbers you wrote down in step 1.
Do not chase a perfect score on every page. Shopify notes that a visitor’s device, network and location are outside your control, and that some pages or dates falling into moderate is fine as long as the overall metric is good. If the work needs code and you would rather hand it over, this is what my Core Web Vitals optimization service covers.
Frequently asked questions
What is a good speed score for a Shopify store?
Look at Core Web Vitals instead of a single score. Shopify ranks a store as Good when LCP is 2,500 ms or less, INP is 200 ms or less and CLS is 0.1 or less, measured on real visitors.
Why is my Shopify store slow when Shopify hosting is fast?
Hosting is rarely the cause. The usual causes are a heavy or outdated theme, too many apps loading scripts on every page, and extra tracking or marketing scripts. Those are the three factors Shopify lists as having the biggest impact.
Does removing an app remove its code?
Not always. Shopify states that uninstalling an app does not automatically remove its code from the theme. Check the theme files after uninstalling, or ask the app developer for removal steps.
Can I speed up my store without a developer?
Partly. You can read the reports, remove apps you do not need, cut sections from long pages, resize images and switch off animations. Changing how the theme loads images and scripts, and removing leftover app code, needs someone comfortable editing Liquid.
How much does Shopify speed work cost?
It depends on the theme, the number of templates and how many apps are involved, so I quote it per store after looking at the reports. My fixed-price tiers for full builds are on the pricing page.
If you want a fixed-price quote for your WordPress or Shopify project, send me a short brief and I’ll tell you what it will take.