Core Web Vitals are three metrics Google uses to measure real user experience: Largest Contentful Paint, Interaction to Next Paint, and Cumulative Layout Shift. They are part of ranking, but the stronger argument for fixing them is that each one maps directly to something users find annoying.
Key Takeaways
- LCP under 2.5s, INP under 200ms, CLS under 0.1 — those are the thresholds that count as good.
- Most LCP problems are image and font problems, not JavaScript problems.
- CLS is almost always missing dimensions on images, ads or injected banners.
Largest Contentful Paint: how fast the main thing appears
LCP measures when the largest element in the viewport finishes rendering — usually a hero image, a video poster or a large heading. Google considers under 2.5 seconds good and over 4 seconds poor.
The common causes are predictable: an unoptimised hero image, a render-blocking stylesheet, a font that delays text painting, or a slow server response before anything can start.
- Serve the hero image in AVIF or WebP at the size it is displayed
- Preload the LCP image and mark it priority rather than lazy
- Use font-display: swap so text paints before the font arrives
- Cut server response time — LCP cannot beat time to first byte
Interaction to Next Paint: how fast the page responds
INP replaced First Input Delay in 2024. It measures the delay between a user interacting and the page visually responding, across the whole visit rather than just the first interaction. Under 200 milliseconds is good.
Poor INP is almost always long JavaScript tasks blocking the main thread — oversized bundles, expensive re-renders, or third-party scripts doing work during interaction.
- Break long tasks up and yield to the main thread
- Ship less JavaScript: audit the bundle before optimising it
- Defer third-party scripts that are not needed for interaction
- Memoise expensive component work in React
Cumulative Layout Shift: how much the page moves
CLS measures unexpected movement of visible content. Under 0.1 is good. It is the easiest of the three to fix and the most often ignored.
Almost every CLS problem is an element that arrives without reserved space: an image without width and height, a cookie banner injected at the top, a web font that changes text metrics, or an ad slot that expands.
- Always set width and height, or an aspect-ratio, on images and video
- Reserve space for banners and ad slots before they load
- Match fallback font metrics to the web font to avoid reflow
- Never insert content above existing content after first paint
Measure real users, not just your laptop
Lighthouse runs a simulated load on your machine. Core Web Vitals as Google uses them come from the Chrome User Experience Report — real visits, on real devices, mostly on worse connections than yours.
Use lab tools to debug and field data to decide. A site can score well in Lighthouse and still fail Core Web Vitals for actual users.
Frequently asked questions
What are Core Web Vitals?
Core Web Vitals are three metrics Google uses to measure user experience: Largest Contentful Paint (loading, good under 2.5 seconds), Interaction to Next Paint (responsiveness, good under 200 milliseconds), and Cumulative Layout Shift (visual stability, good under 0.1).
Do Core Web Vitals affect SEO rankings?
Yes, they are a confirmed ranking signal, but a comparatively weak one. Relevance and content quality matter more. Core Web Vitals act as a tiebreaker between pages of similar quality, and they affect conversion regardless of ranking.
What is a good LCP score?
Under 2.5 seconds is good, 2.5 to 4 seconds needs improvement, and over 4 seconds is poor. The measurement is taken at the 75th percentile of real page loads, so it must be fast for most visitors, not just fast on average.
Why does my site pass Lighthouse but fail Core Web Vitals?
Lighthouse is a simulated lab test on your machine and connection. Google ranks using field data from the Chrome User Experience Report, collected from real visits on real devices and slower networks. Lab tools are for debugging; field data decides.

