Shopify handles hosting, the CDN, caching and checkout infrastructure for you, which means most of the speed work on a Shopify store happens in your theme, your images and especially your apps. You cannot tune a server, so the useful question is "what did I add on top of the platform that slows it down?" This guide shows how to measure, find the heavy parts and fix them in a sensible order.
Measure before changing anything
Pick three page types, because they behave differently: the home page, a collection page and a product page. Test each on a phone profile, since that is where most stores lose speed.
- Run the Website Speed Test and note time to first byte, total requests and total size.
- Check the field-style metrics in the Core Web Vitals checker: Largest Contentful Paint (LCP), Interaction to Next Paint (INP) and Cumulative Layout Shift (CLS). The Core Web Vitals guide explains the thresholds Google publishes.
- Shopify's admin includes an Online Store speed report in the analytics area, based on Lighthouse runs of your home, collection and product pages. Treat the score as a trend line rather than a grade; scores move a few points between runs.
- Save the numbers in a spreadsheet with the date. Without a baseline you will not know whether an app removal helped.
Lab tools simulate a device. Real visitors differ, so give any change a couple of weeks of data before deciding it worked.
Time to first byte is mostly out of your hands
On Shopify, server response for cached storefront pages is handled by the platform. If a page has a slow first byte, the usual causes on your side are heavy Liquid logic (nested loops over large collections, many all_products lookups) or a redirect chain before the page loads. Test the chain with the Redirect Checker. Reduce time to first byte covers what applies to self-hosted sites; for Shopify, focus on the front end.
Apps are usually the biggest cost
Every installed app can add JavaScript, CSS, fonts, tracking pixels or widgets to every page, and uninstalling an app does not always remove its code from the theme. This is the highest-yield area.
- List what loads. Open the Third-Party Script Checker on a product page. Group scripts by owner: reviews, upsell, chat, popups, loyalty, analytics, heatmaps, currency converters.
- Ask of each: does it earn its weight? A widget that adds 300 KB of script and a second font to every page must produce measurable revenue. If you cannot show that, remove it.
- Remove leftovers. After uninstalling an app, search the theme code for its snippets (in
theme.liquid,snippets/andsections/) and delete references. Make a theme duplicate first so you can roll back. - Load scripts late. Chat widgets and heatmaps rarely need to load before the page is interactive. Ask the vendor about delayed loading, or load them on user interaction.
- Consolidate. Three apps that each do slightly different pop-ups can often be one.
Tracking tags deserve the same scrutiny. Several overlapping analytics and ad pixels, installed by different people over the years, are common. Keep what you actively use.
Images
Product stores are image-heavy, so this is the second biggest lever.
- Use Shopify's image URL parameters (the
image_urlfilter in Liquid with awidthargument) so the CDN serves a size matching the layout, and use theimage_tagfilter to producesrcsetandsizesattributes. Check your theme's documentation for the exact filters it supports. - Do not upload originals larger than needed. A very large source file is resized by the platform, but you also pay in the admin and in any place the full file is referenced directly.
- Lazy-load below-the-fold images with
loading="lazy", but never on the largest above-the-fold image. The hero or first product image should load eagerly, and you can hint its priority withfetchpriority="high". Getting this wrong is a classic cause of poor LCP. - Set width and height (or aspect ratio) so the browser reserves space and the layout does not jump, which is what CLS measures.
- Prefer modern formats. Shopify's CDN can deliver modern formats to browsers that support them; see image optimization with WebP and AVIF for the principles.
- Videos. Autoplaying background video on the home page is expensive. Use a poster image and load the video on interaction.
The Page Weight Analyzer breaks down a page by resource type and shows which individual images and scripts weigh the most.
Theme code
- Use a current Online Store 2.0 theme if you can. Newer themes are generally lighter and let you add sections without extra apps. A major theme migration is a project, so schedule it instead of doing it in a sales week.
- Remove unused sections and sliders. Carousels with many large slides are a common LCP problem; show one strong image instead.
- Limit fonts. Each weight and style is a separate download. Two weights of one family is a reasonable budget. Use
font-display: swapso text appears while fonts load, and preload the one font used in the first screen. - Trim CSS and JS you do not use. Look for libraries bundled for a single feature. Do not minify by hand; Shopify's theme tooling and most modern themes handle compression and delivery.
- Avoid heavy Liquid loops over entire catalogs on the home page. Limit with
limit:and paginate. - Reduce DOM size. Mega menus rendering hundreds of links on every page add parsing time; consider collapsing them.
Collection and product pages
- Cut the number of products per collection page and use pagination. Hundreds of product cards with images is a heavy page even with lazy loading.
- Keep filters server-rendered where your theme supports it, rather than loading a heavy third-party filter app.
- On product pages, limit gallery images loaded at once and avoid auto-loading recommendation carousels above the fold.
- Review third-party review widgets: some load their own jQuery.
Checkout
Shopify controls the checkout experience, and the options for custom code there are limited by design and by plan. Apps that add checkout extensions should be tested for impact on completion time. Treat the speed of checkout as a revenue issue, and monitor it as one; payment gateway downtime monitoring explains what to watch.
A prioritized order of work
- Remove unused apps and leftover code.
- Fix the above-the-fold image: size, format, priority, no lazy-loading.
- Delay or remove non-essential third-party scripts.
- Reduce font files.
- Simplify the home page: fewer sections, fewer carousels.
- Re-test and compare against the baseline.
- Repeat monthly, particularly after installing anything new.
A store that was fast in January can be slow by March simply because five apps were added. Make "check speed after every install" a habit, and schedule a quarterly app audit.
Watch for speed regressions
Speed is not a one-time job. Put key pages under an uptime monitor to catch slow responses and outright failures, and use the website health check after theme changes. For slow-loading causes beyond the store, website slow diagnosis gives a general method. Before big sales, also read the Black Friday readiness checklist.
Next steps
- Benchmark your pages with the Website Speed Test and Core Web Vitals tools.
- Identify heavy scripts with the Third-Party Script Checker.
- See what makes pages heavy in the Page Weight Analyzer.
- Understand the metrics in the Core Web Vitals guide.
- Monitor availability with the uptime monitor.
FAQ
Is Shopify fast by default?
The platform infrastructure is managed for you, but the finished page depends on your theme, apps and images. Two stores on the same platform can differ widely in speed because of what has been added.
What slows a Shopify store the most?
In most audits it is third-party apps and scripts, followed by oversized or incorrectly loaded images. Start there before spending time on theme micro-optimizations.
Does uninstalling an app remove its code?
Not always. Some apps leave snippets or script tags in the theme. After uninstalling, search your theme files for the app name and remove leftovers, working on a duplicate theme first.
Should I lazy-load every image?
No. Lazy-load images below the first screen only. The main above-the-fold image should load immediately, or your Largest Contentful Paint gets worse.
How often should I test store speed?
Test after every theme change or app install, and review the main pages monthly. Compare against your saved baseline so you notice slow creep.
Get notified when this guide updates
Plus occasional practical tips on uptime and monitoring, nothing else. Unsubscribe anytime.
This page is general information written by our editorial team and updated when documentation changes. Servers and providers differ, so test changes safely first. See our editorial policy and disclaimer.