Shopify Speed Optimization: A Practical Checklist for Faster Stores
How to measure Shopify page speed with the admin web performance reports and PageSpeed Insights, which Core Web Vitals targets to hit, and a prioritized checklist of fixes you can verify.

On this page
Shopify speed optimization means making your store load, respond and stay stable faster for real shoppers. Google's three Core Web Vitals measure it: Largest Contentful Paint (LCP) of 2.5 seconds or less, Interaction to Next Paint (INP) of 200 milliseconds or less and Cumulative Layout Shift (CLS) of 0.1 or less, at the 75th percentile of visits.
To speed up a Shopify store, check the performance summary on your admin's Online Store page, then work through the checklist below in order: theme, unused apps and leftover code, third-party scripts, images, fonts, sections and sliders, video, and Liquid. Change one thing at a time, test on a duplicate theme where you can, and judge each change by real-user data, not a single test score.
This guide was checked on 26 October 2026 against Shopify's Help Center, Shopify's developer documentation and Google's web.dev guidance. Admin labels can differ slightly between stores.
How do you check your Shopify page speed?
Use two kinds of data. Field data comes from real visitors on their own devices and networks, and Core Web Vitals are judged on it. Lab data comes from one simulated test. It helps you find causes and compare changes, but it isn't what shoppers experience.
Shopify's web performance reports
Shopify's web performance reports are built into admin:
- Go to Online Store. The Themes page shows LCP, INP and CLS at the 75th percentile, each rated Good, Moderate or Poor, plus sessions by device type. The date picker offers Today, Last 7 days and Last 30 days.
- For detail, go to Analytics > Reports and search for "contentful", "next" or "cumulative".
- Each metric has Over Time, Page URL and Page Type reports. The Over Time charts mark app installs, theme updates and other changes with numbered lines, which helps you connect a slowdown to its cause.
You need the Reports staff permission. The reports page says data can arrive up to 36 hours late and is kept for 90 days, and that low-traffic stores can group reports by week or month to smooth out noise. Shopify's web performance overview says the data currently comes from real visitors on Chromium-based browsers and Firefox, with Safari support expected in a future Safari version, and that a store in private mode (password protected) has no data.
PageSpeed Insights and Lighthouse
PageSpeed Insights tests any public URL. Its top section is field data from the Chrome UX Report for the previous 28 days, falling back to your whole site (the origin), or nothing, when a page has too little traffic. Below that is a Lighthouse lab test of a mid-tier phone on a mobile network (About PageSpeed Insights), with a 0 to 100 performance score. Test your home page, top collection and top product page, mobile first, and use the diagnostics to see where to look.
Chrome UX Report and Search Console
The Chrome UX Report (CrUX) is Google's dataset of real Chrome user experiences. It also feeds Search Console's Core Web Vitals report, which groups similar URLs and rates mobile and desktop separately. The CrUX methodology covers Chrome on desktop and Android, not Chrome on iOS or other browsers, and only public pages with enough visitors. If most of your shoppers use iPhones, CrUX shows only part of your audience.
Field data vs lab data
| Field data | Lab data | |
|---|---|---|
| Where you see it | Shopify's reports, the top of PageSpeed Insights, Search Console | Lighthouse in PageSpeed Insights or Chrome DevTools |
| What it measures | Real shoppers, devices and networks | One simulated device and connection |
| INP | Measured | Not measured; Total Blocking Time stands in |
| Reacts to a change | Over days to weeks | Immediately |
| Use it for | Deciding whether there's a problem and whether a fix worked | Finding causes and comparing before and after |
What happened to the Shopify speed score?
Shopify used to show a single speed score based on Lighthouse. In January 2024 it replaced that score with the Core Web Vitals dashboard, because one lab score didn't always reflect what shoppers experienced. Today's 0 to 100 score comes from Lighthouse, usually via PageSpeed Insights. Lighthouse's scoring documentation lists the weights, in its most recent table (labelled Lighthouse 10), as Total Blocking Time 30%, LCP and CLS 25% each, and First Contentful Paint and Speed Index 10% each. It also notes that scores move between runs because of ads, A/B tests, network routing and browser extensions.
What counts as a fast Shopify store?
Google's Core Web Vitals are measured at the 75th percentile of page loads, on mobile and desktop separately. A page passes when all three are Good.
| Metric | What it measures | Good | Needs improvement | Poor |
|---|---|---|---|---|
| LCP | When the main image or text block appears | 2.5 s or less | 2.5 to 4 s | Over 4 s |
| INP | How quickly the page responds to taps, clicks and keys | 200 ms or less | 200 to 500 ms | Over 500 ms |
| CLS | How much the layout jumps while loading | 0.1 or less | 0.1 to 0.25 | Over 0.25 |
Shopify's reports use the same Good thresholds and call the middle band Moderate.
What does Shopify already do for speed?
Shopify hosts your store, so some common speed advice doesn't apply. Shopify's guide to improving online store performance lists these as built in:
- a CDN for your store's files, served over HTTP/2;
- browser caching of cacheable files for one year;
- gzip compression for CSS, JavaScript and pages;
- JPG compression, with images often served as WebP;
- automatic minification of CSS and JavaScript files when the storefront requests them.
Shopify's theme performance best practices add that render-blocking scripts and stylesheets are preloaded through Early Hints. So you don't need to add a CDN, switch on compression or run theme files through a minifier, and the improvement guide warns that scanning tools may suggest server, CDN or compression changes Shopify already handles. What Shopify can't control is what you add: the theme, apps, scripts and content. That's what the checklist below covers.
How do you speed up a Shopify store?
Work through this Shopify speed optimization checklist in order. The early items are cheap, reversible and often affect every page; the later ones need more care or a developer.
| # | Fix | Main metric it helps | Who usually does it |
|---|---|---|---|
| 1 | Update or replace the theme | All three | Merchant |
| 2 | Remove unused apps and leftover app code | INP, LCP | Merchant, developer for code |
| 3 | Cut third-party scripts and tags | INP, LCP | Merchant or marketer |
| 4 | Fix the largest images | LCP, CLS | Merchant |
| 5 | Load fewer fonts | LCP, CLS | Merchant |
| 6 | Trim sections, animations and sliders | LCP, CLS, INP | Merchant |
| 7 | Handle video carefully | LCP | Merchant, developer for custom code |
| 8 | Fix slow Liquid and render-blocking code | LCP, INP | Developer |
First, duplicate your theme: in Online Store, open the theme's ... menu and click Duplicate. Shopify allows up to 20 themes in your admin.
1. Start with an up-to-date theme
The theme sets the baseline for every page. Shopify's improvement guide recommends an up-to-date, optimized theme, pointing to its Horizon family and free Online Store 2.0 themes. Theme Store themes must average a Lighthouse performance score of at least 60 across the home, product and collection pages, according to Shopify's theme performance best practices.
- Update before you optimize. On the Online Store page, a notification replaces the version number when an update is available. Click it, then Add to draft themes. Theme editor settings carry over; code edits carry over only if they don't conflict, so save a copy of custom code first. Only Theme Store themes get these updates, and vintage themes no longer get them.
- Compare themes on real data. Shopify's theme performance data table shows, for popular themes, the share of stores where at least 75% of real visitors had Good LCP, CLS and INP. Results include each store's apps and customizations, so treat them as a rough guide. To look up the theme a store you like runs, use our free Shopify theme detector.
2. Remove unused apps and the code they leave behind
Storefront apps load their own scripts and styles, often on every page. Shopify's improvement guide says to remove apps that aren't essential.
- Go to Settings > Apps and ask, for each app, whether you still use it and whether it shows anything on the storefront.
- Go to Online Store, click Edit theme, then click the App embeds icon in the sidebar. Switch off embeds for apps you no longer use and click Save.
- Check the app's documentation for removal steps. Shopify's uninstall guide warns that some apps add theme code that isn't removed when you uninstall them.
- In Settings > Apps, open the app's menu, click Uninstall and confirm.
- On your duplicate theme, open the ... menu and click Edit code, then search for the app's name or domain in
theme.liquid, snippets and sections. Ask the developer before deleting anything you're unsure about.
Apps built with theme app extensions (app blocks and app embeds) don't edit your theme code, so they're easier to switch off cleanly. Shopify's Built for Shopify requirements also say an app must not reduce the storefront Lighthouse performance score by more than ten points. To see which apps load on your storefront, run the checks in our guide to seeing what apps a Shopify store uses on your own store.
3. Cut third-party scripts and tracking tags
JavaScript drives interactivity, so it's the first suspect when INP is poor. Shopify's improvement guide says a poor INP most likely means too much JavaScript from the theme, apps, or third-party and tag manager code.
- Find the heaviest scripts. Shopify's performance team describes three ways to find your worst JavaScript offenders: the Lighthouse treemap (bytes), the Chrome DevTools Performance panel (scripting time) and WebPageTest (blocking time). The post also uses network request blocking to reload the page without one script so you can see its cost.
- Clean up your tag manager. Google's tag best practices say to pause or remove unused tags rather than blocking them with trigger exceptions, remove tags that are both hard-coded and in the tag manager, and fire non-essential tags after the page loads.
- Move tracking into Customer events. Pixels in Settings > Customer events run in an isolated sandbox, and Shopify's pixels overview says the pixel manager helps stop third-party code from running poorly performing JavaScript. Our guide to Shopify customer events covers the move.
- Check tracking after every removal. Dropping a duplicate tag is a win; dropping your only purchase tag is not. Re-test with our GA4 conversion tracking checklist.
Chat widgets, review carousels, popups and social feeds count too. Ask whether each needs to load on every page or only where shoppers use it.
4. Fix the largest images
Images are often the LCP element on home, collection and product pages. Shopify already resizes, compresses and converts images as it serves them, so the work is mostly what you upload and how the theme loads it:
- Don't lazy-load the main image visible when the page opens; lazy-load only images below the fold. Shopify's theme guidance also recommends
fetchpriority="high"on the LCP image. - Upload images at the recommended sizes for each place in the theme, not straight camera exports, and show fewer large images per page. Our free Shopify image resizer resizes and compresses them in your browser before you upload.
- Make sure the theme sets image width and height, as Liquid's
image_tagdoes, so the layout doesn't jump.
Our Shopify image optimization checklist covers these step by step, and our Shopify image sizes guide lists the dimensions to upload. ShopOpsy is also building an Image Optimizer app to find large images, compress them and keep track of what changed; it's in development and not yet on the Shopify App Store.
5. Load fewer fonts
Shopify's font documentation explains that fonts are a separate download the browser needs before it renders text, and that system fonts, already on the shopper's device, avoid it.
- In the theme editor's typography settings (names vary by theme), consider a system font for body text, or one font family for headings and body.
- Each extra weight or style usually means another font file to download, so drop weights you barely use.
- Use Shopify's font library rather than an external font service; Shopify's theme guidance recommends serving fonts from the Shopify CDN instead of Google Fonts.
- Developers can set
font_displayon thefont_facefilter. Shopify's CLS guide shows how to tune the fallback font withsize-adjustto reduce the jump when the web font swaps in.
6. Trim sections, animations and sliders
- Sections. Shopify says a high section count lowers performance. Remove hidden, outdated and duplicate sections, starting with the home page.
- Animations. Shopify says animations can slow down pages and suggests comparing performance with page transitions and animations on and off.
- Sliders. In our experience, a hero slideshow usually loads more images and JavaScript than one banner. Google's carousel guidance says loading slides with JavaScript delays the LCP image and that autoplay is rarely a good choice. Our suggestion: test a single static hero image instead.
- Large collections. Shopify suggests pagination so fewer products load at once. Lower the products-per-page setting if your theme has one.
- Late-loading widgets. Content injected after load, such as some app banners and review widgets, pushes the page down and raises CLS. Prefer theme sections, such as the built-in announcement bar, or ask the app developer how to reserve space.
7. Handle video carefully
Video can be the LCP element too. Shopify's video_tag filter lazy-loads videos lower on the page by default, advises against lazy-loading videos above the fold, and for MP4 uploads adds a streaming source that adapts to the shopper's connection. That adaptive source isn't used when the video loops.
- Give every hero video a poster image. Shopify's performance team shows a responsive poster approach where the poster loads first, with high priority, and the video covers it once it plays.
- Our recommendation: autoplay only short, muted background loops. Shopify's poster example uses muted, looping, inline playback.
- For YouTube or Vimeo embeds below the fold, lazy-load the iframe or use a lightweight placeholder that loads the player on click, as web.dev recommends, and set a width and height to reserve space.
8. Fix slow Liquid and render-blocking code
These are developer tasks, but knowing them helps you brief one.
- Slow server response. Complex Liquid, such as nested loops, requesting more data than a page needs, or hundreds of product data checks, delays the server's first response and everything after it. Shopify's Theme Inspector for Chrome shows Liquid render time as a flame graph, and Shopify's guide to slow Liquid storefronts covers common causes.
- Render-blocking scripts. Shopify's theme guidance says to use
deferfor most non-critical scripts, keepasyncfor independent third-party scripts, and remove or defer render-blocking app scripts. Theme Check flags parser-blocking scripts and assets loaded from other domains. - CSS and assets. Keep theme assets in the
/assetsfolder so Shopify's CDN serves them, and animate withtransformandopacityrather than layout properties. - Preloading. Shopify recommends preloading only one or two resources the browser discovers late.
Do speed booster apps work?
Be careful with them. Some apps and freelancers raise test scores without making the store faster. Shopify's guide to identifying fake performance apps describes three tricks: making an invisible element the LCP, serving testing tools a different page, and holding scripts back until the first scroll, mouse move or touch. Warning signs:
- the score jumps, but the store looks and feels the same;
- PageSpeed Insights and a Lighthouse run in an incognito window differ by roughly 20 points or more;
- the test screenshot is blank or half-built, or the LCP element is a transparent image or empty block;
- Shopify's real-user reports don't improve, or look slower than the lab test, when real users are usually faster;
- the variant picker, menu or add to cart button doesn't respond straight away.
As Shopify puts it, deferring a chat widget is reasonable; deferring the core variant selector is not.
How do you check that a speed fix worked?
- Record a baseline. Note LCP, INP and CLS from Shopify's reports for the last 30 days. Because lab scores vary between runs, our suggestion is to run PageSpeed Insights three times on the same three pages and keep the middle result.
- Change one thing at a time, on a duplicate theme where possible, and note the date.
- Re-run the lab test on the same URLs and device type after publishing, and look at the trend rather than one run.
- Watch the field data. In Shopify's Over Time reports, compare the period before and after your change's annotation, allowing up to 36 hours for data. CrUX data in PageSpeed Insights covers a rolling 28 days, and Search Console monitors 28 days before confirming a fix.
- Check the store still works: tracking, your consent banner, the variant picker, cart and checkout.
Why is my Shopify store slow?
Match what you see to its likely cause before you change anything.
| What you see | Likely cause | What to check |
|---|---|---|
| No data in Shopify's reports | Private mode, a new store or little traffic | Remove the password; group by week |
| Low PageSpeed score, Good in Shopify's reports | Simulated slow phone vs real shoppers | Trust field data; use the lab to find causes |
| No field data in PageSpeed Insights | Not enough traffic for CrUX | Use Shopify's reports |
| Poor LCP on the home page | Lazy-loaded or oversized hero, slideshow or video | Items 4, 6 and 7 |
| Poor INP | Too much JavaScript from apps, tags or theme | Items 2 and 3 |
| Poor CLS | Images without dimensions, late banners, font swap | Items 4, 5 and 6 |
| No faster after uninstalling an app | Leftover code or an embed still on | App embeds and a code search |
| Monitoring tools report the store slow or down during a sale | Shopify prioritizes real customers over bots at peak times | Shopify Status and real-user data |
For help, Shopify's improvement guide says Shopify Support may assist with basic improvements on free themes. Otherwise, contact your theme or app developer, or hire a Shopify Partner.
Frequently asked questions
Does page speed affect Google rankings for Shopify stores?
It can. Google's CrUX documentation says Search uses CrUX data for its page experience ranking factor, and Shopify's overview notes that Google uses page speed as a ranking factor. It is one factor, so treat speed as part of a good shopping experience, not a ranking shortcut.
What is a good Shopify speed score?
You don't need 100. Shopify's overview says there's no perfect speed score, that scores get harder to improve the closer they are to 100, and that you should optimize for your business needs rather than the highest possible score. The score is also a lab result, while the Core Web Vitals assessment uses field data only. For reference, Theme Store themes must average at least 60. Aim for Good LCP, INP and CLS for real shoppers.
Sources
- Web performance reports — Shopify Help Center, accessed 26 October 2026.
- Overview of web performance — Shopify Help Center, accessed 26 October 2026.
- Improving your online store performance — Shopify Help Center, accessed 26 October 2026.
- Updating themes — Shopify Help Center, accessed 26 October 2026.
- Duplicating themes — Shopify Help Center, accessed 26 October 2026.
- Editing theme code — Shopify Help Center, accessed 26 October 2026.
- Extend your theme with apps — Shopify Help Center, accessed 26 October 2026.
- Uninstalling apps — Shopify Help Center, accessed 26 October 2026.
- Pixels overview — Shopify Help Center, accessed 26 October 2026.
- Shopify Status — Shopify, accessed 26 October 2026.
- Performance best practices for Shopify themes — Shopify developer documentation, accessed 26 October 2026.
- Identify and remove fake performance apps — Shopify developer documentation, accessed 26 October 2026.
- Fonts — Shopify developer documentation, accessed 26 October 2026.
- Liquid filters: font_face — Shopify developer documentation, accessed 26 October 2026.
- Liquid filters: video_tag — Shopify developer documentation, accessed 26 October 2026.
- Shopify Theme Inspector for Chrome — Shopify developer documentation, accessed 26 October 2026.
- Theme Check checks — Shopify developer documentation, accessed 26 October 2026.
- About theme app extensions — Shopify developer documentation, accessed 26 October 2026.
- Built for Shopify requirements — Shopify developer documentation, accessed 26 October 2026.
- Shopify's new web performance dashboard with real user insights — Performance @ Shopify, accessed 26 October 2026.
- Aggregated Core Web Vitals performance by Shopify theme — Performance @ Shopify, accessed 26 October 2026.
- 3 ways to find your worst JavaScript offenders for page load — Performance @ Shopify, accessed 26 October 2026.
- How to optimize Cumulative Layout Shift (CLS) on Shopify sites — Performance @ Shopify, accessed 26 October 2026.
- Fast video banners that work on every device — Performance @ Shopify, accessed 26 October 2026.
- Debugging common causes for slow loading in Shopify Liquid storefronts — Performance @ Shopify, accessed 26 October 2026.
- Web Vitals — web.dev, Google, accessed 26 October 2026.
- Largest Contentful Paint (LCP) — web.dev, Google, accessed 26 October 2026.
- Interaction to Next Paint (INP) — web.dev, Google, accessed 26 October 2026.
- Cumulative Layout Shift (CLS) — web.dev, Google, accessed 26 October 2026.
- Best practices for tags and tag managers — web.dev, Google, accessed 26 October 2026.
- Best practices for carousels — web.dev, Google, accessed 26 October 2026.
- Best practices for using third-party embeds — web.dev, Google, accessed 26 October 2026.
- About PageSpeed Insights — Google for Developers, accessed 26 October 2026.
- Lighthouse performance scoring — Chrome for Developers, accessed 26 October 2026.
- Overview of CrUX — Chrome for Developers, accessed 26 October 2026.
- CrUX methodology — Chrome for Developers, accessed 26 October 2026.
- Core Web Vitals report — Search Console Help, Google, accessed 26 October 2026.


