Skip to content

Core Web Vitals for e-commerce: what breaks LCP, INP and CLS on product and category pages

Published 7 October 20269 min readBy the SmoothSeen editorial team

In an online shop, Core Web Vitals are won or lost on templates: product page, category page and home page. What breaks them most is a lazy-loaded main image (LCP), images and banners with no reserved space (CLS) and third-party scripts on filters and buttons (INP). Google rates them good at LCP ≤ 2.5 s, INP ≤ 200 ms and CLS ≤ 0.1.

Key points

  • In an online shop, Core Web Vitals are won or lost on templates (product, category, home page), not single pages; Google rates them good at LCP ≤ 2.5 s, INP ≤ 200 ms and CLS ≤ 0.1 at the 75th percentile.
  • Low-traffic product pages have no field data of their own: PageSpeed Insights falls back to the whole origin, and Search Console groups similar URLs.
  • The usual culprits are a lazy-loaded main image, images without dimensions, banners and widgets that arrive late, and third-party scripts.
  • In a Google Flights lab test, giving the main image high fetch priority cut LCP from 2.6 to 1.9 seconds.
  • Google uses them in ranking, but says it always seeks to show the most relevant content: on a shop, the product page comes before speed.

To check it on your own site: Online shops

On this page

This guide sticks to what is specific to a shop; the rest of the work is in the guide to e-commerce SEO for AI search. What each metric measures on any website is in the general guide to Core Web Vitals, and how to read the report, in the one on PageSpeed Insights. A declaration of interest: this blog belongs to SmoothSeen, a web audit tool that measures visibility in search engines and AI assistants.

The thresholds, applied to a shop

Each metric covers one part of the experience: loading (LCP), interactivity (INP) and visual stability (CLS)1. Google sets a "good" threshold for each and another above which it is "poor"; in between, it "needs improvement"2. The last column is what usually sits behind each metric in a shop:

Metric
LCP (Largest Contentful Paint)
Good
Up to 2.5 s
Poor
Over 4 s
What it usually measures in a shop
The main product image, the first row of the category grid or the home page carousel image
Metric
INP (Interaction to Next Paint)
Good
Up to 200 ms
Poor
Over 500 ms
What it usually measures in a shop
Opening a filter, picking a size or colour, pressing "Add to basket"
Metric
CLS (Cumulative Layout Shift)
Good
Up to 0.1
Poor
Over 0.25
What it usually measures in a shop
Images without dimensions, the free-delivery banner, trust badges or the reviews widget

The value that counts is the 75th percentile of page loads, separately for mobile and desktop1: a template passes if three visits in four get a good experience. And the responsiveness metric is INP, which replaced FID as a Core Web Vital on 12 March 20243; an e-commerce guide that still talks about FID is out of date.

Why does a shop measure by template, not by product?

Because almost no product page has field data of its own. Field data comes from CrUX (the Chrome User Experience Report), which only includes pages that are public and have a minimum number of visitors; Google does not disclose that minimum4. A new product, or one of the hundreds that get few visits, does not qualify.

When a URL lacks enough data, PageSpeed Insights falls back to the whole origin, meaning the entire domain2. Search Console, for its part, groups URLs with a similar experience in its Core Web Vitals report, and each group takes the status of its worst metric5: a group with good LCP and poor CLS shows as "poor".

For a shop, that has three practical consequences:

  1. What you see for a product page may be the domain average. If the home page is fast and product pages are slow, the average hides it.
  2. Search Console's groups almost always match your templates. A "poor" group of hundreds of product URLs is the product template, not hundreds of separate problems.
  3. A fix is confirmed after four weeks. When you validate a fix, Search Console starts a 28-day monitoring session5, the same window PageSpeed Insights uses for field data2.

If your domain has no field data either, work with PageSpeed Insights' lab data, which simulates the load with Lighthouse2, on one URL per template.

What breaks each metric on an online shop?

Shop templates fail in the same places again and again. This table sorts them by metric, with a source for each:

Cause
Lazy loading (loading="lazy") on the main product image or the first images in a listing
Metric
LCP
Why
Google says lazy-loading the LCP image will always lead to unnecessary resource load delay6
Cause
Home page carousel whose image is injected by JavaScript
Metric
LCP
Why
Large above-the-fold carousels often contain the LCP element, and their content should be in the HTML7
Cause
Slow server or no caching
Metric
LCP
Why
Time to first byte is one of the four parts of LCP; web.dev suggests, as a guideline, keeping it to roughly 40% of the total6
Cause
Product images without width and height
Metric
CLS
Why
Images of unknown size are one of the causes of layout shift web.dev lists8
Cause
Cookie banner, free-delivery notices, trust badges or chat injected late
Metric
CLS
Why
Content added after the page loads pushes down what was already there8
Cause
Third-party scripts: chat, reviews, ad pixels, tag manager
Metric
INP, and loading in general
Why
web.dev warns that if your site is still slow after you have optimised your own code, third-party scripts are the likely culprit9, and long tasks on the main thread delay the response to interactions10
Cause
Filters, size picker or "Add to basket" running a lot of code on click
Metric
INP
Why
Google advises doing as little work as possible in event callbacks11

Fixes in order of impact

The order starts with what can be fixed in the template with little effort and ends with what needs more engineering. Measure each change in the lab before and after, and confirm it in field data a few weeks later.

  1. Remove lazy loading from the main image. On a product page, the product photo; on a category page, the first images in the grid. The web.dev study on lazy loading found that deferring only the images below the first screen fully reversed the LCP regression12.
  2. Give that image priority with fetchpriority="high"6. In a Google Flights lab test, giving the background image high priority cut LCP from 2.6 to 1.9 seconds13.
  3. Set width and height on every image, or reserve the space with CSS aspect-ratio14. Formats, sizes and compression for product photos are in the guide to image SEO.
  4. Reserve space for anything that arrives late (banners, notices, badges, review widgets) with min-height or aspect-ratio14.
  5. Audit third-party scripts. Load anything not needed to buy with async or defer, remove what adds nothing and control who can add tags to the tag manager9. This means agreeing with marketing what stays.
  6. Break up long tasks. Any task over 50 ms is a long task; yielding to the browser between chunks, for example with scheduler.yield(), lets it respond to the user sooner10.
  7. Stop the autoplaying carousel or, if you keep it, pause it on hover, and move slides with transform rather than left or top7.
  8. Improve the server: page caching, a CDN and hosting that matches your traffic. It costs the most, so leave it until after the rest.

What it looks like in the template

The first four points are written once in the theme and reach every product page. This snippet is a commented example; paths, sizes and class names are illustrative:

<!-- PRODUCT PAGE: the main image is usually the LCP element.
     No loading="lazy", high priority and explicit dimensions. -->
<img src="/img/moka-6-front.webp"
     alt="Six-cup aluminium stovetop espresso maker, front view"
     width="800" height="800" fetchpriority="high">

<!-- CATEGORY PAGE: images in the first row load normally;
     from the first row that sits off-screen, they are lazy-loaded. -->
<img src="/img/product-13.webp" alt="Ten-cup drip coffee maker"
     width="400" height="400" loading="lazy">

<!-- REVIEWS WIDGET injected late: space reserved before it arrives. -->
<div class="product-reviews"></div>
/* Height taken from the loaded widget, measured on mobile. */
.product-reviews { min-height: 320px; }

If your platform adds loading="lazy" to every image by default, the first point usually needs a theme change or a setting in the image module: check it in the HTML of the live product page, not in the admin panel.

Are Core Web Vitals a ranking factor?

Yes, but a tie-breaker. Google says Core Web Vitals are used by its ranking systems and recommends getting them into good shape15. On the same page it adds two caveats worth reading together15:

  • Google Search always seeks to show the most relevant content, even if the page experience is sub-par.
  • Good results in the Core Web Vitals report do not guarantee top rankings. Where there is plenty of helpful content available, a great page experience can contribute to success.

For a shop, that means a fast product page with a copied description will not beat a slightly slower one that answers the shopper better. Product pages, categories and markup come first; speed comes after. What a product page's markup needs is in the guide to Product schema.

What the PageSpeed score does not tell you

The 0 to 100 score in PageSpeed Insights is a lab result and changes with every run, with network availability, the testing hardware and resource contention2. A shop adds two more sources of variation, both listed in the Lighthouse documentation: A/B tests and ads that change from one load to the next16.

That score is not the Core Web Vitals assessment, either. According to the Lighthouse documentation, the metric with the most weight in it is TBT, Total Blocking Time (30%), followed by LCP and CLS (25% each)16, and TBT is a lab metric. Two rules to avoid chasing ghosts:

  • Decide with field data, template by template. The score is for diagnosis.
  • Repeat the lab test several times and take the median: Lighthouse says the median of five runs is twice as stable as a single run17.

SmoothSeen includes speed with Core Web Vitals, lab and field data when PageSpeed Insights has them, in the report for every page it analyses, alongside the rest of its search visibility checks. It analyses one page at a time, so for a shop it is worth giving it one URL per template; it does not replace Search Console's Core Web Vitals report.

Frequently asked questions

Which page of my shop should I measure first?

A product page and a category page from among those with the most traffic, on mobile. They are the templates shared by the most URLs: a fault in them is repeated across the whole catalogue, and so is a fix. Then the home page, if it has a carousel. Check in Search Console which URL group scores worst and start with the template behind it.

Do review, chat and advertising widgets hurt Core Web Vitals?

They can hurt two of them. If they are injected late with no space reserved, they push content around and raise CLS; if they run a lot of JavaScript on the main thread, they delay the response to clicks and raise INP. Reserve their space in CSS, load them with async or defer when they are not needed to buy, and remove the ones nobody uses.

Why does my shop have no field data?

Because CrUX only includes public pages and origins with a minimum number of visitors, a figure Google does not disclose. If a product page does not qualify, PageSpeed Insights uses data for the whole domain; if the domain does not qualify either, you will only see lab data. In the meantime, test one URL per template in the lab and repeat each test several times.

Are Core Web Vitals a ranking factor for an online shop?

Yes. Google says its ranking systems use them, but also that it always seeks to show the most relevant content even when page experience is sub-par, and that good results do not guarantee top rankings. For a shop, original descriptions, product data and a clear catalogue structure matter before speed does.

What to do next

Run PageSpeed Insights on one product page and one category page, see which metric fails in the field data block and apply the fixes in the order listed, starting with the template. Once it is sorted, go back to the guide to e-commerce SEO for AI search for the rest of the work.

Sources

  1. 1Web Vitals, Philip Walton, web.dev (Google), updated 31 October 2024.
  2. 2About PageSpeed Insights, Google for Developers, updated 21 October 2024.
  3. 3Interaction to Next Paint becomes a Core Web Vital on March 12, Jeremy Wagner and Rick Viscomi, web.dev (Google), 31 January 2024.
  4. 4CrUX methodology, Chrome for Developers, updated 20 June 2024.
  5. 5Core Web Vitals report, Search Console Help, accessed 7 October 2026.
  6. 6Optimize Largest Contentful Paint, Philip Walton and Barry Pollard, web.dev (Google), updated 31 March 2025.
  7. 7Best practices for carousels, Katie Hempenius, web.dev (Google), updated 26 January 2021.
  8. 8Cumulative Layout Shift (CLS), Milica Mihajlija and Philip Walton, web.dev (Google), updated 12 April 2023.
  9. 9Load Third-Party JavaScript, Addy Osmani and Arthur Evans, web.dev (Google), updated 19 February 2024.
  10. 10Optimize long tasks, Jeremy Wagner and Brendan Kenny, web.dev (Google), updated 19 December 2024.
  11. 11Optimize Interaction to Next Paint, Jeremy Wagner, Philip Walton and Barry Pollard, web.dev (Google), updated 2 September 2025.
  12. 12The performance effects of too much lazy loading, Felix Arntz and Rick Viscomi, web.dev (Google), updated 31 March 2022.
  13. 13Optimize resource loading with the Fetch Priority API, Addy Osmani, Leena Sohoni, Patrick Meenan and Barry Pollard, web.dev (Google), updated 14 November 2023.
  14. 14Optimize Cumulative Layout Shift, Addy Osmani and Barry Pollard, web.dev (Google), updated 7 February 2025.
  15. 15Understanding page experience in Google Search results, Google Search Central, updated 22 September 2026.
  16. 16Lighthouse performance scoring, Chrome for Developers, accessed 7 October 2026 (Lighthouse 10 weightings).
  17. 17Score Variability, Lighthouse documentation (GoogleChrome), accessed 7 October 2026.

How to cite this article

SmoothSeen. (2026, October 7). Core Web Vitals for e-commerce: what breaks LCP, INP and CLS on product and category pages. https://smoothseen.com/en/blog/core-web-vitals-ecommerce/

Who writes this

SmoothSeen is a website audit tool that measures visibility in search engines and AI assistants and delivers reports under the agency's own brand.

This blog belongs to SmoothSeen: when an article discusses the product, it does so knowing the product is ours. Third-party figures link to their original source.

Change history

  • First published version, sources checked.

Keep reading

Core Web Vitals for e-commerce: what breaks and the fixes