Skip to content
SeenLens

Core Web Vitals failing: how to fix LCP, INP and CLS

Core Web Vitals fail when LCP is above 2.5 seconds, INP above 200 milliseconds or CLS above 0.1 for real visitors. Find the failing metric first, then fix that one. A first improvement often takes one to three days, and field data needs about 28 days to show it.

By SeenLens · Last updated

Run the free 43-check scan on your page

core-web-vitals: do real visitors get good LCP, INP and CLS?

SeenLens asks the Google PageSpeed Insights API for the page, on mobile. If Google has field data for the page, or for the whole origin, SeenLens uses its 28 day verdict. Otherwise it uses the lab values from the test run. If the API gives no data, the check reports "not tested".

Core Web Vitals thresholds (web.dev, measured at the 75th percentile of page loads)
MetricWhat it measuresGoodPoor
LCP (Largest Contentful Paint)When the largest image or text block renders2.5 s or lessOver 4.0 s
INP (Interaction to Next Paint)Worst response time to clicks, taps and key presses200 ms or lessOver 500 ms
CLS (Cumulative Layout Shift)Unexpected layout movement0.1 or lessOver 0.25
  • Field data: pass for a good verdict, warn for needs improvement, fail for poor.
  • Lab data: the check compares LCP with 2.5 s, CLS with 0.1 and INP with 200 ms. When INP is missing it uses total blocking time. It warns when one value is over its limit. It fails when two are over, or when LCP is above 4 s.

performance-score: how does Lighthouse score the page?

The same PageSpeed Insights run returns a Lighthouse performance score from 0 to 100. The check passes at 90 or above, warns from 50 to 89 and fails below 50. The score comes from a lab test on an emulated phone, so it can differ from real visitor data.

How to confirm the problem

  1. Open PageSpeed Insights for the URL and read the field data at the top. It names the failing metric.
  2. Open the Core Web Vitals report in Google Search Console for the same page group.
  3. Use the lab section to find the cause: the LCP element, long tasks and shifting elements.

Google says it highly recommends good Core Web Vitals for success with Search, and that they align with what its ranking systems seek to reward. It does not state a weight.

How to fix it

Fix the failing metric. The steps below come from web.dev.

LCP

  • Keep the LCP image in the initial HTML so the browser finds it early. Preload it if CSS or JavaScript adds it.
  • Add fetchpriority="high" to the one or two images that are likely the LCP element. Never lazy load the LCP image.
  • Shrink the file and use a modern format. Serve it from a CDN.
  • Cut redirects and server response time. web.dev puts about 40% of an ideal LCP in time to first byte.
  • Avoid client side rendering for the main content, and defer scripts that block rendering.
HTML
<img src="/hero.avif" width="1200" height="630" fetchpriority="high" alt="Product overview">

INP

  • Break up long tasks, especially script work during page load.
  • Keep event handlers light. Do the visual update first, then yield to the main thread before slower work.
  • Keep the DOM small and use content-visibility for off screen sections.
JavaScript
button.addEventListener("click", async () => {
  showSpinner();                         // visual update first
  await new Promise((r) => setTimeout(r, 0)); // yield to the main thread
  runHeavyWork();
});

CLS

  • Set width and height on images and video, or use CSS aspect-ratio.
  • Reserve space with min-height for ads, embeds and late loading widgets.
  • Use font-display: optional or a close fallback font with size-adjust, and preload critical fonts.
  • Animate with transform, not with top, left, width or height.

WordPress, Shopify and Next.js

The same fixes apply. On WordPress and Shopify, remove plugins or apps that add scripts you do not need and test after each change. In Next.js, keep content in Server Components and send less JavaScript to the browser.

How to verify the fix

  1. Run PageSpeed Insights again. The lab values update at once.
  2. Wait for field data. Google's field report covers a rolling 28 days, so it improves slowly.
  3. Run the SeenLens scan and compare the two checks.

Run the free SeenLens scan on your page

When can you ignore it?

Ignore a low lab score when field data is good. Real visitor data decides the Core Web Vitals verdict. Do not chase a perfect score of 100.

Sources