How to Improve Core Web Vitals: Fixes for LCP, INP, and CLS
Learn how to improve Core Web Vitals with practical fixes for LCP, INP, and CLS. Diagnose issues and speed up your site with this step-by-step guide.
# How to Improve Core Web Vitals: Fixes for LCP, INP, and CLS
Core Web Vitals are Google's user experience metrics — and while they are a confirmed ranking signal, their bigger impact is usually on your users. Slow, janky, shifting pages frustrate visitors long before they affect rankings. The good news: most Core Web Vitals problems come from a short list of fixable causes. This guide walks through what each metric measures, how to diagnose your specific issues, and the fixes that actually move the needle.
## What the Three Metrics Actually Measure
Google measures Core Web Vitals at the 75th percentile of real user visits, using these thresholds:
| Metric | Measures | Good score | Usual culprits |
|---|---|---|---|
| **LCP** (Largest Contentful Paint) | How fast the main content appears | ≤ 2.5s | Slow server response, oversized hero images, render-blocking CSS/JS |
| **INP** (Interaction to Next Paint) | How fast the page responds to clicks and taps | ≤ 200ms | Heavy JavaScript, long tasks, third-party scripts |
| **CLS** (Cumulative Layout Shift) | How much the page jumps around while loading | ≤ 0.1 | Images without dimensions, late-loading ads and fonts, injected content |
Note that INP replaced FID as the interactivity metric in March 2024, so older audits referencing FID are out of date.
## Start With Field Data, Not Lab Data
Before changing anything, know which metric is actually failing and for which pages. There are two types of data:
- **Field data** comes from real Chrome users via the Chrome User Experience Report (CrUX). Google Search Console's Core Web Vitals report shows this per page group. This is what Google evaluates.
- **Lab data** comes from controlled test runs (like Lighthouse). It won't match your field data, but it's far better for debugging because you can see exactly what happens during load.
A sensible workflow: use Search Console to find failing page groups, then run lab tests on the worst URLs to find the cause. Running a [free SEO audit](https://seodone.ai) gives you lab-level diagnostics for LCP, INP, and CLS in one pass, so you can skip straight from "this page fails" to "here's why."
## How to Improve LCP
LCP almost always refers to a hero image, a large headline, or a background image. Your job is to make that specific element appear faster.
1. **Optimize the LCP image.** Compress it, serve it in WebP or AVIF, size it responsively with `srcset`, and never serve a 3000px-wide image into a 600px slot.
2. **Preload the hero image.** Add `` so the browser starts downloading it immediately instead of waiting for CSS to parse.
3. **Reduce server response time (TTFB).** Enable page caching, use a CDN, and check whether slow database queries or missing object caching are dragging down your first byte.
4. **Eliminate render-blocking resources.** Inline critical CSS, defer non-essential JavaScript, and preload web fonts.
5. **Do not lazy-load the LCP image.** This is the most common self-inflicted wound. `loading="lazy"` on your hero image delays it deliberately. Lazy-load below-the-fold images only.
## How to Improve INP
INP measures the worst (or near-worst) interactions on your page. If a click takes half a second to visually respond, that's usually JavaScript blocking the main thread.
1. **Find and break up long tasks.** Use Chrome DevTools' Performance panel to record a typical interaction. Any task over 50ms blocks the page. Split large work into chunks with `setTimeout`, `requestIdleCallback`, or `scheduler.yield()`.
2. **Ship less JavaScript.** Audit your bundles, remove unused dependencies, code-split so routes only load what they need, and prefer server-side rendering for content pages.
3. **Tame third-party scripts.** Chat widgets, heatmaps, A/B testing tools, and tag managers are frequent INP killers. Load them lazily or after user interaction, and remove the ones you don't actively use.
4. **Optimize event handlers.** Show visual feedback immediately (a spinner, a pressed state), then do the heavy processing. Perceived responsiveness counts.
## How to Improve CLS
CLS is usually the easiest of the three to fix because the causes are mechanical.
- **Set explicit `width` and `height` (or an aspect-ratio) on every image and video**, so the browser reserves space before loading.
- **Reserve space for ads, embeds, and dynamic content** with fixed-size placeholders, so late-arriving content doesn't push everything down.
- **Load fonts carefully.** Use `font-display: swap` with a fallback font of similar size, or preload your primary font to reduce the swap window.
- **Never inject new content above existing content** after the page has rendered — banners, cookie notices, and promo bars included. Animate them in from a reserved slot instead.
## Prioritization Checklist
Work top-down. Fixes that help every user beat fixes that help one page.
| Priority | Symptom | Do this first |
|---|---|---|
| 1 | LCP fails site-wide | Fix TTFB and caching at the server/CDN level |
| 2 | LCP fails on image-heavy pages | Compress and preload hero images; un-lazy them |
| 3 | INP fails on specific interactions | Profile in DevTools; break up long tasks |
| 4 | INP fails after adding a tool | Audit and delay third-party scripts |
| 5 | CLS fails everywhere | Add dimensions to images and embeds in your templates |
| 6 | CLS fails on one template | Reserve space for ads or injected content on that template |
## Don't Stop at Speed: Connect Vitals to Conversions
Faster pages set the stage, but they don't sell anything by themselves. Once your vitals are green, look at what happens next: is your CTA visible without scrolling? Does your hero actually explain what you do? Does the page guide visitors toward action? The [CRO analysis features](https://seodone.ai/features) examine your pages from a conversion perspective alongside performance and SEO, so you can fix what slows users down and what stops them from converting — in the same workflow.
Core Web Vitals improvement isn't a one-time project, either. New plugins, redesigned templates, and third-party scripts quietly reintroduce problems. Re-check your key templates after every significant change.
## Run Your Free Audit
You don't need to guess which of these fixes applies to your site. Run the [free SEO audit](https://seodone.ai) to get your Core Web Vitals breakdown, prioritized performance issues, and CRO insights for any URL — then work the list from the top.