Shopify Core Web Vitals: What They Are and How to Pass
Google made its position clear when it rolled out the Page Experience update: slow, janky websites pay a ranking penalty, and fast, smooth ones earn a reward. For Shopify merchants, that stakes-raisin
Google made its position clear when it rolled out the Page Experience update: slow, janky websites pay a ranking penalty, and fast, smooth ones earn a reward. For Shopify merchants, that stakes-raising moment landed at an awkward time — most stores run on a shared platform with third-party apps, heavy product images, and theme code they didn't write themselves. The result is that far too many stores are sitting on technically fixable performance problems that quietly suppress organic traffic every single day. If your store converts well but you're still struggling to rank, Core Web Vitals are one of the first places to look.
The good news is that passing Core Web Vitals on Shopify is genuinely achievable without rebuilding your store from scratch. You don't need to be a developer, and you don't need to strip your store down to plain HTML. What you do need is a clear understanding of which metrics matter, how Shopify's architecture affects them specifically, and which lever to pull first. Merchants supplying enterprise clients and high-volume direct-to-consumer brands have both passed these thresholds without sacrificing the rich content experiences that drive conversions.
In this post, you'll learn exactly what the three Core Web Vitals measure, why Shopify stores commonly fail them, and the specific actions you can take this week to move your scores into the green — all without a costly development sprint.
What Core Web Vitals Actually Measure
Core Web Vitals are a set of three real-world performance metrics that Google uses to evaluate the user experience of any webpage. Unlike older technical metrics that only developers cared about, these three are designed to reflect what actual shoppers experience when they land on your store. They feed directly into Google's ranking algorithm, which means poor scores don't just hurt user experience — they cost you search visibility and, by extension, revenue.
The first metric is Largest Contentful Paint (LCP), which measures how long it takes for the largest visible element on the page to load. On most Shopify product pages, that element is typically your hero image or the main product photo. Google considers anything under 2.5 seconds to be good, 2.5–4 seconds needs improvement, and anything above 4 seconds is classified as poor. Many default Shopify themes load unoptimized product images that push LCP well past the 4-second mark on mobile.
The second is Interaction to Next Paint (INP), which replaced First Input Delay in 2024 and measures how responsive your page is to any user interaction — clicking the Add to Cart button, opening a dropdown menu, or selecting a product variant. The third is Cumulative Layout Shift (CLS), which tracks unexpected movement in your page layout as it loads. If your price or CTA button jumps around before the page fully renders, that's a CLS problem — and it's one of the most common complaints from shoppers who abandon before purchasing.
Why Shopify Stores Specifically Struggle
Shopify is an outstanding commerce platform, but its architecture introduces specific performance challenges that don't exist on custom-built sites. Every Shopify store runs through Shopify's CDN and shared infrastructure, which helps with some performance aspects but doesn't eliminate the bottlenecks created by theme code and third-party apps. Understanding where the drag comes from is the first step toward fixing it systematically rather than guessing.
The biggest culprit in most Shopify stores is render-blocking JavaScript. When you install a review app, a loyalty programme, a currency converter, and a cookie consent banner, each one typically adds a JavaScript file that the browser must download and execute before it can fully render your page. These files stack up silently — you don't see them in your Shopify admin, but PageSpeed Insights will list them clearly. A store with eight or nine third-party apps can easily accumulate 400–600 kilobytes of JavaScript that loads synchronously, devastating both LCP and INP scores.
Unoptimised images are the second major factor. Shopify does offer automatic WebP conversion through its CDN, but this only works if your theme requests images correctly using the | image_url Liquid filter with explicit size parameters. Many older themes — and even some popular paid themes — still load full-resolution images and rely on CSS to resize them visually, which means the browser downloads a 4MB image just to display it at 600 pixels wide. That single mistake can push your LCP from 2 seconds to 6 seconds on a mid-range Android device.
How to Audit Your Store's Current Scores
Before you start making changes, you need a clear baseline so you can measure progress accurately. The best free tool is Google PageSpeed Insights, available at pagespeed.web.dev. Paste in your homepage URL, a collection page URL, and your most important product page URL — scores vary significantly between page types, and fixing just one won't give you a complete picture. Pay close attention to the "Field Data" section at the top, which shows real-user data from the Chrome User Experience Report, rather than just the lab data from the simulated test.
Google Search Console also provides aggregate Core Web Vitals data under the Experience section in the left navigation. This is particularly useful because it groups your pages by status — Good, Needs Improvement, or Poor — and shows you which URL groups are dragging your overall assessment down. If your product pages are failing but your blog posts are passing, that tells you the problem is likely related to product page-specific elements such as variant pickers, image galleries, or product-specific apps rather than something global like your header or footer scripts.
For a more granular breakdown, run your store through WebPageTest with a mobile device profile set to a 4G connection. This mirrors the conditions Google uses for mobile scoring and gives you a waterfall diagram showing exactly which resources are loading in what order. Look for any large JavaScript or CSS files loading early in the waterfall that could be deferred — these are often your quickest wins.
Fixing LCP: Images, Fonts, and Server Response
Improving your Largest Contentful Paint usually comes down to three changes applied in order of impact. Start with your hero image on the homepage and your primary product image on product pages — these are almost always your LCP elements. Compress them to under 100KB using a tool like Squoosh or ShortPixel before uploading, make sure your theme requests them using Shopify's image_url filter with a specific width, and add the loading="eager" and fetchpriority="high" attributes to the image tag in your theme code so the browser prioritises it immediately.
Next, address font loading. Many themes load Google Fonts or custom brand fonts using a standard link tag that blocks rendering until the font file downloads. Swap this for a link rel="preconnect" for the font domain, and use font-display: swap in your CSS so text renders immediately in a system font while the custom font loads in the background. This alone commonly improves LCP by 300–500 milliseconds, which can be the difference between a passing and failing score on mobile.
Finally, check your Time to First Byte (TTFB), which measures how quickly your server starts responding. Shopify's infrastructure is generally fast here, but stores using excessive Liquid logic, deeply nested loops, or heavy metafield lookups can slow server response significantly. If PageSpeed Insights shows TTFB above 600 milliseconds, review your theme's Liquid templates for inefficient collection loops or redundant API calls that could be simplified or cached.
Fixing INP and CLS: JavaScript and Layout Stability
Interaction to Next Paint is most commonly degraded by JavaScript that runs on the main thread and blocks the browser from responding quickly to user input. The first step is auditing which apps are loading JavaScript on your key pages and determining which are truly necessary at page load versus which could load after the page is interactive. Most review widgets, upsell pop-ups, and loyalty programme widgets don't need to load immediately — wrapping their script tags with a defer or async attribute, or loading them on user interaction, can dramatically improve INP without removing the functionality entirely.
Cumulative Layout Shift is most often caused by images and embeds that load without defined dimensions, causing content below them to jump downward. The fix is straightforward: always include explicit width and height attributes on your img tags so the browser can reserve the correct space before the image downloads. Dynamic content injected by apps — like promotional banners, cookie notices, or personalisation widgets — can also cause severe CLS if they push other content around. Set these elements to fixed or absolute positioning, or pre-reserve their space in CSS using a minimum height, so they appear in place without shifting anything.
Maintaining Scores After You Pass
Passing Core Web Vitals once is a meaningful achievement, but the bigger challenge is maintaining your scores as your store grows and changes. Every new app you install, every theme update you apply, and every new content type you add has the potential to regress your performance. Building a simple monthly audit into your operations — checking PageSpeed Insights scores on your three most important page types — takes less than 15 minutes and gives you early warning before a small regression becomes a significant ranking drop.
Be particularly careful when installing new Shopify apps. Before adding any app to a live store, install it on a development theme and run a PageSpeed Insights test to measure the before-and-after impact on your key pages. Many apps inject scripts globally across every page of your store even when the feature is only relevant on one or two specific pages — most reputable app developers will remove this script from pages where their functionality isn't active if you contact their support team and request it. If your store relies heavily on content marketing to drive organic traffic, a tool like BlogFlow can help you publish optimised content without adding performance overhead that undermines the SEO gains you're working toward.
Conclusion
Core Web Vitals are not a mysterious or untouchable part of SEO — they are specific, measurable, and fixable with the right approach. LCP improves when you optimise images and eliminate render-blocking resources. INP improves when you defer non-essential JavaScript and reduce main-thread congestion. CLS improves when you define image dimensions and stabilise dynamically injected content. Together, these changes compound: a store that passes all three signals to Google that it delivers a genuinely good user experience, which supports stronger rankings across every page you've worked hard to build.
Start with a PageSpeed Insights audit today, identify your worst-performing page type, and fix one category of issue at a time. Small, consistent improvements consistently beat expensive one-time overhauls.
Try BlogFlow free at saltai.app — no credit card required.
SaltAI Team
SaltAI builds focused Shopify apps for food merchants and general merchants. Every app is tested in production at a real food store — including Vanda's Kitchen — before it ships.