You picked a polished theme, shot great product photos, and your ads are finally sending real traffic. So why does your store still feel like it’s wading through mud? If shoppers leave before your hero image even appears, Shopify speed optimization is probably the highest-return fix you haven’t tackled yet. This guide explains why Shopify stores slow down, how Google’s Core Web Vitals judge your pages, and exactly what to change, in the order that gets results fastest.
We look at a lot of Shopify stores, and the story is almost always the same. A store launches lean, then quietly collects a dozen apps, three tracking pixels, a slider, a chat widget, and a folder of uncompressed images. Nobody made one terrible decision; the slowness just crept in. The good news is that it can be reversed, and a big chunk of the work doesn’t require a developer.
Speed feels like a developer detail until you see what it does to money. A Deloitte study commissioned by Google, “Milliseconds Make Millions,” found that shaving just 0.1 seconds off mobile load times lifted retail conversions by 8.4% and average order value by 9.2%. Portent’s analysis of millions of page views found that conversion rates fall by roughly 4% with every extra second of load time in the first five seconds. And Google’s own research has shown that the chance of a visitor bouncing jumps by about a third as a page goes from one to three seconds.
Those numbers matter even more for US stores than you might expect. Most Shopify traffic now arrives on phones, often over cellular connections, and often from paid social ads where patience is thin. Slow pages also make your ad spend less efficient, because you pay for the click whether or not the page ever finishes loading.
There’s an SEO angle too. Google uses Core Web Vitals as part of its page experience signals. It’s not a magic ranking switch, and great content and relevance still matter most, but between two similar stores the faster, more stable one has an edge.
Core Web Vitals are three metrics Google uses to describe how a page feels to a real person:
Google judges these using real-user data at the 75th percentile, separately for mobile and desktop. In other words, three out of four visits need to hit the “good” mark for the page to pass.
| Metric | What it measures | Good | Needs improvement | Urgently improvement |
|---|---|---|---|---|
| LCP | Loading speed | 2.5 s or less | 2.5 to 4 s | Over 4 s |
| INP | Responsiveness | 200 ms or less | 200 to 500 ms | Over 500 ms |
| CLS | Visual stability | 0.1 or less | 0.1 to 0.25 | Over 0.25 |
Before you change anything, get a baseline. Otherwise you won’t know whether your work actually helped.

Google PageSpeed Insights is the best starting point. Scroll past the headline score and look at the top section showing what real users experience. That’s field data from actual Chrome visitors, and it’s what Google cares about. The lab data below it (Lighthouse) is a simulation that’s great for diagnosing problems but varies from run to run.
Google Search Console has a Core Web Vitals report that groups your URLs by status. Because Shopify stores use templates, fixing one product page template often fixes hundreds of pages at once.
Shopify’s built-in speed report in your admin gives a quick Lighthouse-based score. Treat it as a rough guide, not a verdict.
GTmetrix or WebPageTest show a waterfall of every file your page loads, which is invaluable for spotting the one app script that quietly takes two seconds.
Test your homepage, a collection page, and a product page separately, on mobile, and run each test a few times. Write the numbers down.
This is the number one culprit we see. Many apps load their own JavaScript and CSS on every page, even pages where the feature isn’t used. Worse, uninstalling an app doesn’t always remove the code it left in your theme, so ghost scripts keep loading for apps you canceled a year ago.
The fix: List every installed app, what it does, and whether it earns its keep. Remove what you don’t need, then search your theme files (theme.liquid and the snippets folder) for leftover references. Where possible, swap an app for a native Shopify feature. Always test on a duplicate theme first.
Images are the heaviest part of most pages and the most common cause of a poor LCP. A 4 MB hero photo straight from a camera will wreck your mobile score no matter how good your hosting is.
The fix: Shopify’s CDN can serve modern formats like WebP and resize images automatically, but only if your theme requests the right sizes. Upload images at sensible dimensions (around 2000 px on the longest side is plenty for most products), compress them with a tool like Squoosh or TinyPNG, and make sure your theme uses responsive images. For your hero image, tell the browser it’s a priority:
{{ section.settings.hero_image | image_url: width: 1600 | image_tag:
widths: ‘400, 800, 1200, 1600’,
sizes: ‘100vw’,
loading: ‘eager’,
fetchpriority: ‘high’ }}
Lazy-load everything below the fold, but never lazy-load the main image people see first.
Some themes ship with dozens of features, animations, and libraries you’ll never use, and every one of them is code your visitors have to download. Heavy page-builder apps stack even more on top.
The fix: Use a well-built Online Store 2.0 theme (Shopify’s free Dawn is a solid benchmark) and run any theme’s demo store through PageSpeed Insights before you commit. Remove unused sections, switch off animations you don’t need, and consider migrating instead of piling more customizations onto an old theme.
Meta Pixel, TikTok Pixel, Google Ads, GA4, heatmaps, review widgets, live chat, pop-up tools. Each looks harmless alone. Together they hog the browser’s main thread, which is exactly what hurts INP.
The fix: Audit what’s actually firing (Google Tag Manager’s preview mode or Chrome DevTools will show you). Delete duplicate pixels; installing the same pixel through an app and again by hand is surprisingly common. Delay non-essential tools such as chat and session recordings until the page has loaded or the visitor interacts. Keep the tracking you truly use to make decisions and drop the rest.
Custom fonts are another hidden cost. Each weight and style is a separate download, and text can stay invisible or jump around when the font finally arrives.
The fix: Stick to two font families and only the weights you need. Use Shopify’s built-in font library, which is served from Shopify’s own CDN, set font-display to swap, and preload your main font if you use a custom one. System fonts for body text are a perfectly good, instant option.
Carousels load every slide plus the JavaScript to animate them, yet most visitors never get past the first slide. Autoplay hero videos and aggressive pop-ups add more weight and often cause layout shifts.
The fix: Replace the slider with one strong hero image and a clear call to action. If you use video, show a poster image and load the video on click or lower on the page. Delay pop-ups by a few seconds, and avoid full-screen ones on mobile, which can also run afoul of Google’s guidelines on intrusive interstitials.
Shopify renders your pages on the server using Liquid, so inefficient loops, dozens of sections on the homepage, mega-menus with hundreds of links, and collection pages showing 100+ products all slow the initial response.
The fix: Paginate collections (12 to 24 products per page is typical), trim your navigation, cut homepage sections that don’t drive sales, and have a developer review any custom Liquid with nested loops. This is where professional help tends to pay off.
To improve LCP: Compress and correctly size your hero and main product images, give the LCP image high priority, preload key fonts, and remove render-blocking scripts from the top of your pages.
To improve INP: Cut or defer JavaScript, remove apps that run on every click, and be wary of heavy cart drawers, variant pickers, and mega-menus that do a lot of work on each tap.
To improve CLS: Always set width and height on images, reserve space for announcement bars, review stars, and app widgets, and avoid injecting banners at the top of the page after it loads.
Work through these in order. The early steps usually deliver the biggest gains.
Plenty of the fixes above are DIY-friendly: trimming apps, resizing images, simplifying your homepage. But deferring scripts, rewriting Liquid, and fixing layout shifts at the code level take experience, and a mistake can break your theme. For a store doing meaningful monthly revenue, professional Shopify speed optimization often pays for itself, since even a small lift in conversion rate on the same traffic compounds every month. If you’d rather hand it off, the team at Infylo can audit your store, pinpoint what’s dragging it down, and fix it without disrupting sales.
Fast stores aren’t built by accident; they’re maintained. Treat Shopify speed optimization as an ongoing habit rather than a one-time project: review your apps every quarter, compress images before every upload, and re-check Core Web Vitals after every big theme change or new tool. Start with the biggest wins, the hero image and the app audit, and you may be surprised how much faster your store feels by the end of the week. Your customers, and Google, will notice.
Rather than chasing a number, aim to pass all three Core Web Vitals in PageSpeed Insights’ field data. Many well-optimized stores land somewhere in the 70s to 90s on mobile Lighthouse, but real-user data matters more.
Yes, though modestly. Core Web Vitals are one of many ranking signals. The bigger win is indirect: faster pages keep visitors engaged and convert better.
Expect about 28 days, because Google reports field data over a rolling window.
Not for everything. App audits, image compression, and simplifying your homepage are DIY-friendly. Script deferral and custom Liquid changes are best left to a developer.