Core Web Vitals
Performance Testing
Your Shopify store could be losing search rankings right now because of poor Core Web Vitals scores. Google has made these performance metrics a direct ranking factor, and most Shopify stores are failing at least one of them. Here is a complete breakdown of what Core Web Vitals are, how to check your scores, and exactly how to fix each metric on Shopify.
What Are Core Web Vitals?
Core Web Vitals are a set of three specific metrics that Google uses to measure the real-world experience people have on your website. They focus on three pillars of user experience: loading speed, interactivity, and visual stability.
Google introduced these metrics as ranking signals in 2021, and they have only become more important since then. The idea is simple. If your site loads slowly, responds sluggishly to taps and clicks, or has elements jumping around the page while it loads, that is a bad experience. And Google does not want to send people to sites with bad experiences.
The three Core Web Vitals metrics are:
1. Largest Contentful Paint (LCP)
LCP measures how long it takes for the largest visible element on the page to fully render. This is usually a hero image, a large text block, or a video poster. It answers the question: "How fast does the main content appear?"
A good LCP score is under 2.5 seconds. Anything between 2.5 and 4 seconds needs improvement. Over 4 seconds is poor and will actively hurt your rankings.
2. Interaction to Next Paint (INP)
INP replaced First Input Delay (FID) in March 2024 as Google's interactivity metric. It measures the responsiveness of your site by tracking the delay between a user interaction (clicking a button, tapping a link, pressing a key) and the browser's visual response.
A good INP score is under 200 milliseconds. Between 200ms and 500ms needs improvement. Over 500ms is poor. For Shopify stores, INP problems usually come from heavy JavaScript blocking the main thread.
3. Cumulative Layout Shift (CLS)
CLS measures how much the content on your page shifts around unexpectedly while loading. You have experienced this yourself: you are about to click a button and suddenly the page jumps because an image loaded above it, and you tap the wrong thing. That is layout shift.
A good CLS score is under 0.1. Between 0.1 and 0.25 needs improvement. Over 0.25 is poor. This is measured on a scale, not in seconds. The number represents the fraction of the viewport that shifted multiplied by the distance it moved.
Score Targets at a Glance
- LCP: Under 2.5 seconds (loading speed)
- INP: Under 200 milliseconds (interactivity)
- CLS: Under 0.1 (visual stability)
Why Core Web Vitals Matter for SEO
Google has been clear that Core Web Vitals are a ranking factor within their page experience signals. While content relevance still matters most, CWV acts as a tiebreaker. When two pages are equally relevant to a search query, the one with better Core Web Vitals will rank higher.
For competitive e-commerce keywords, this tiebreaker effect is significant. You are often competing against dozens of stores selling similar products. Core Web Vitals can be the difference between page one and page two.
Beyond rankings, poor performance directly impacts your bottom line. Google's own research shows that as page load time increases from 1 to 3 seconds, the probability of a bounce increases by 32%. Going from 1 to 5 seconds increases bounce probability by 90%. Every millisecond matters when money is on the line.
How to Check Your Core Web Vitals
Before you can fix anything, you need to know where you stand. There are several tools you can use, and each gives you a slightly different perspective.
Google PageSpeed Insights
Head to pagespeed.web.dev and enter your store's URL. This is the fastest way to see your scores. PageSpeed Insights shows both "field data" (real user measurements from actual visitors) and "lab data" (simulated tests). Field data is what Google actually uses for rankings, so pay closer attention to those numbers.
The tool gives you a pass or fail for each Core Web Vital and provides specific recommendations for improvement. Test your homepage, your top product pages, and your collection pages individually. Each page can have different scores.
Google Search Console
If your store is connected to Google Search Console (it should be), navigate to the "Core Web Vitals" report under the Experience section. This gives you a site-wide overview of which URLs are good, which need improvement, and which are poor. It groups similar pages together so you can identify patterns. For instance, you might discover that all your product pages fail CLS while your blog posts pass everything.
Chrome UX Report (CrUX)
CrUX is the dataset that powers the field data in PageSpeed Insights. It collects anonymized performance data from real Chrome users who visit your site. You can access it through the CrUX Dashboard on BigQuery or through the CrUX API. For most store owners, PageSpeed Insights and Search Console provide enough detail. CrUX is more useful if you want to track trends over time or do competitive analysis.
Chrome DevTools
For hands-on debugging, open Chrome DevTools (F12), go to the Performance tab, and record a page load. This shows you exactly what is happening during load, including which resources are blocking rendering and what is causing layout shifts. The Lighthouse tab in DevTools runs a full audit similar to PageSpeed Insights but with more detailed diagnostics.
Common Shopify Core Web Vitals Problems
Shopify stores tend to struggle with predictable issues. Here are the most common culprits for each metric.
LCP Problems on Shopify
- Oversized hero images: The number one LCP killer on Shopify. Stores upload 3000px wide, uncompressed JPEG hero images that take several seconds to download. The hero image is almost always the LCP element.
- Render-blocking resources: CSS and JavaScript files that block the browser from rendering anything until they are fully downloaded and parsed. Shopify themes often load multiple stylesheets and scripts in the head.
- Slow server response time (TTFB): Shopify hosting is generally fast, but heavy Liquid template rendering, especially on collection pages with hundreds of products, can push TTFB above acceptable limits.
- Third-party app scripts: Review widgets, analytics tools, chat widgets, and popup apps all add scripts that compete for bandwidth during the critical loading phase.
INP Problems on Shopify
- Heavy JavaScript execution: Shopify apps inject scripts that run on the main thread. When a user taps "Add to Cart" and the browser is busy executing app code, the response feels sluggish.
- Complex DOM structures: Themes with deeply nested elements and excessive DOM nodes force the browser to do more work when updating the page after interactions.
- Unoptimized event handlers: Poorly written JavaScript attached to scroll, resize, or input events can block the main thread during interactions.
CLS Problems on Shopify
- Images without dimensions: When images do not have explicit width and height attributes, the browser does not know how much space to reserve. Once the image loads, everything below it shifts down.
- Late-loading app elements: Review stars, trust badges, upsell widgets, and other app-injected elements that appear after the initial page render push existing content around.
- Web fonts causing FOUT: When custom fonts load and replace the fallback font, text can reflow due to different sizing, causing layout shifts throughout the page.
- Dynamic content injection: Banners, popups, and promotional bars that inject themselves into the page layout after load cause shifts.
How to Fix LCP on Shopify
LCP is usually the most impactful metric to fix because it is the one most Shopify stores struggle with. Start here.
Optimize Your Hero Image
Since the hero image is almost always the LCP element, this single fix can dramatically improve your score. Resize it to the exact display dimensions (no larger than 1600px wide for most layouts). Convert to WebP format for better compression. Aim for a file size under 200KB. On Shopify, you can use the image_url filter in Liquid to request specific sizes.
Preload the LCP Image
Add a preload link tag in your theme's head to tell the browser to start downloading the hero image immediately, before it encounters it in the HTML. This can shave hundreds of milliseconds off your LCP.
<link rel="preload" as="image" href="{{ hero_image | image_url: width: 1200 }}" fetchpriority="high">Defer Non-Critical JavaScript
Move scripts to the bottom of the page or add the defer attribute. This prevents JavaScript from blocking the browser while it tries to render your hero content. Review your installed apps and remove any you are not actively using. Each app adds scripts that slow down loading.
Inline Critical CSS
Instead of loading your entire stylesheet before rendering anything, inline the CSS needed for above-the-fold content directly in the HTML. This lets the browser start rendering immediately. Some Shopify themes like Dawn already do this to some degree, but many third-party themes do not.
How to Fix INP on Shopify
Reduce JavaScript Execution Time
Audit every app installed on your store. Each one likely adds JavaScript that runs on every page. Remove apps you do not need. For apps you do need, check if they offer a "performance mode" or lightweight script option. Some apps let you limit which pages their scripts load on. A review app probably does not need to load on your homepage.
Defer Third-Party Scripts
Chat widgets, analytics tools, and marketing pixels do not need to load immediately. Use the defer or async attribute on these scripts. Better yet, load them after the page has finished rendering using a small JavaScript snippet that waits for user interaction.
Break Up Long Tasks
If you have custom JavaScript running, break long-running functions into smaller chunks using requestAnimationFrame or setTimeout. This lets the browser handle user interactions between chunks instead of being locked up for hundreds of milliseconds.
How to Fix CLS on Shopify
Set Explicit Image Dimensions
Every image on your site should have width and height attributes in the HTML. This tells the browser exactly how much space to reserve before the image downloads. Shopify's Liquid image_tag filter automatically includes these attributes. If you are using custom HTML, always add them manually.
Reserve Space for Dynamic Elements
If apps inject content into your pages (review stars below product titles, trust badges, upsell widgets), reserve the space for those elements using CSS min-height. This prevents the rest of the page from shifting when the app content finally loads.
.review-widget-container {
min-height: 24px; /* Reserve space for star rating */
}Handle Fonts Properly
Use font-display: swap in your font-face declarations so text is visible immediately with a fallback font while your custom font loads. Better yet, preload your most important font files with a link rel="preload" tag. Consider using font-display: optional for non-critical fonts so the browser skips them entirely if they do not load fast enough, avoiding any layout shift.
Avoid Dynamic Content Injection Above the Fold
Announcement bars, promotional banners, and cookie consent notices that push content down should either be part of the initial HTML (not injected via JavaScript) or overlay the page content instead of pushing it down. If you use a sticky header, make sure it is accounted for in the page layout from the start.
Tools and Apps That Help
While you should be cautious about adding more apps (each one can hurt performance), some tools specifically help you improve Core Web Vitals.
- Shopify's built-in speed report: Found in your Shopify admin under Online Store, this gives you a basic speed score and comparison against similar stores.
- Google PageSpeed Insights: Free, detailed, and uses real user data. Test regularly after making changes.
- Google Search Console: The Core Web Vitals report shows site-wide trends and flags problem URLs. Set this up immediately if you have not already.
- web-vitals JavaScript library: Google's open-source library that you can add to your theme to track real Core Web Vitals data from your own visitors and send it to your analytics.
- Image optimizer apps: Apps like TinyIMG or Crush.pics automatically compress and convert images to WebP as you upload them, preventing LCP issues before they start.
- Script manager apps: Tools that let you control when and where third-party scripts load, helping you defer non-critical JavaScript to improve both LCP and INP.
A word of caution about speed optimization apps
Some apps claim to dramatically improve your speed scores by lazy loading everything, deferring all scripts, and minifying code. Be careful. Aggressive lazy loading can actually hurt LCP if it delays your hero image. Deferring critical scripts can break functionality. Always test thoroughly after installing these tools and verify that your actual PageSpeed Insights scores improve, not just the app's internal metrics.
The Relationship Between CWV and Rankings
Let us be honest about how much Core Web Vitals actually affect rankings. Google has said that content relevance is still the most important factor. A page with great content and poor CWV can still outrank a page with poor content and perfect CWV.
But that does not mean you should ignore them. In practice, here is how Core Web Vitals impact your store's search performance:
- Tiebreaker effect: When competing pages have similar content quality and authority, CWV tips the scale. For commercial keywords where many stores sell the same products, this happens frequently.
- Indirect ranking benefits: Fast, stable pages have lower bounce rates, higher engagement, and better conversion rates. These user behavior signals can further reinforce your rankings.
- Mobile search impact: Core Web Vitals matter even more for mobile search results, where most e-commerce traffic comes from. Poor mobile performance can significantly hurt your visibility.
- Google Shopping: While Google has not explicitly confirmed CWV as a ranking factor in Shopping results, fast-loading product pages contribute to better quality scores and lower cost per click in paid campaigns too.
The bottom line is that Core Web Vitals are not the most important ranking factor, but they are one of the few you have direct control over. Unlike building backlinks or creating viral content, improving your CWV scores is a technical exercise with predictable outcomes.
A Step-by-Step Action Plan
If your scores need work, here is the order to tackle things:
- Audit your current scores using PageSpeed Insights on your five most important pages (homepage, top product pages, main collection page).
- Remove unused apps. This is the single highest-impact change you can make. Every app you remove reduces JavaScript, improves LCP, and improves INP.
- Optimize your hero images. Resize, compress, convert to WebP, and add preload tags. This directly fixes LCP on most pages.
- Add image dimensions to every img tag that does not already have them. This fixes most CLS issues.
- Defer non-critical scripts to after the page loads. This helps both LCP and INP.
- Reserve space for dynamic elements like review widgets and trust badges using CSS min-height.
- Re-test after every change to confirm your scores improved. Sometimes a fix for one metric can hurt another.
The Bottom Line
Core Web Vitals are not optional for Shopify stores that care about organic search traffic. Google uses them as ranking signals, and poor scores mean you are leaving visibility on the table. The good news is that most Shopify CWV issues have straightforward fixes. Optimize your images, clean up your app stack, defer non-critical scripts, and set explicit dimensions on all media elements.
The difference between a 4-second LCP and a 2-second LCP is not just a number on a report. It is the difference between a customer who stays and a customer who bounces back to Google and clicks on your competitor instead.
Want a Shopify theme that handles all of this out of the box? Clyro generates themes with Core Web Vitals baked in from the start. Optimized images, clean code, minimal JavaScript, and proper layout handling so you can focus on selling instead of debugging performance issues.
Clyro Team
E-commerce & AI Insights