---
title: "Fix: Core Web Vitals Failing (LCP, INP, CLS)"
description: "Core Web Vitals fail when LCP is over 2.5 s, INP over 200 ms or CLS over 0.1 for real users. See how SeenLens scores them and which fix to try first."
url: https://seenlens.com/fixes/slow-page-core-web-vitals
last_updated: 2026-11-06
---

# 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: 2026-11-06

## 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".

| Metric | What it measures | Good | Poor |
| --- | --- | --- | --- |
| LCP (Largest Contentful Paint) | When the largest image or text block renders | 2.5 s or less | Over 4.0 s |
| INP (Interaction to Next Paint) | Worst response time to clicks, taps and key presses | 200 ms or less | Over 500 ms |
| CLS (Cumulative Layout Shift) | Unexpected layout movement | 0.1 or less | Over 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.

```text
<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.

```text
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](https://seenlens.com/)

## 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.

## Related checks

- [Content needs JavaScript](https://seenlens.com/fixes/content-needs-javascript)
- [Crawlers cannot load the page](https://seenlens.com/fixes/ai-crawlers-cannot-load-page)
- [Page not served over HTTPS](https://seenlens.com/fixes/serve-page-over-https)
- [Is my website visible to AI?](https://seenlens.com/guides/is-my-website-visible-to-ai)

## Sources

- [web.dev: Web Vitals](https://web.dev/articles/vitals) (LCP 2.5 s, INP 200 ms, CLS 0.1, 75th percentile, updated 2024-10-31)
- [web.dev: Largest Contentful Paint](https://web.dev/articles/lcp) and [Optimize LCP](https://web.dev/articles/optimize-lcp) (poor above 4.0 s, fetchpriority, TTFB share, checked 2026-11-06)
- [web.dev: Interaction to Next Paint](https://web.dev/articles/inp) and [Optimize INP](https://web.dev/articles/optimize-inp) (poor above 500 ms, long tasks, yielding, checked 2026-11-06)
- [web.dev: Cumulative Layout Shift](https://web.dev/articles/cls) and [Optimize CLS](https://web.dev/articles/optimize-cls) (poor above 0.25, dimensions, font and space fixes, checked 2026-11-06)
- [Google Search Central: Core Web Vitals](https://developers.google.com/search/docs/appearance/core-web-vitals) (relation to ranking systems, checked 2026-11-06)
