Core Web Vitals

Core Web Vitals are Google's standardized metrics for measuring real-world page experience — specifically how fast a page loads, how quickly it responds to input, and how visually stable it is as it loads. They matter for two reasons: they're a (modest) ranking signal, and, more importantly, they directly reflect the user experience that drives bounce rate, engagement, and conversion. A page that loads slowly, jumps around, or lags when tapped frustrates users regardless of how good its content is.

There are three vitals, each capturing a distinct facet of experience: LCP (loading), INP (interactivity), and CLS (visual stability). They're measured from real users (field data), not just lab tests, and each has a clear "good" threshold. For engineers, they translate the vague goal of "make the site feel fast" into concrete, measurable targets — and most fixes connect directly to web performance work.

TL;DR

Quick Example

The three vitals and their "good" thresholds (at the 75th percentile):

The Three Vitals

LCP — Largest Contentful Paint (loading)

Measures when the largest visible element (usually the hero image or main heading) finishes rendering — a proxy for "when does the page look loaded?" Good: < 2.5s. Poor LCP usually comes from slow servers, render-blocking resources, large unoptimized images, or slow-loading fonts.

INP — Interaction to Next Paint (interactivity)

Measures the responsiveness to user interactions — the delay between a tap/click and the page visibly responding, across the whole visit. (It replaced First Input Delay in 2024.) Good: < 200ms. Poor INP comes from heavy JavaScript blocking the main thread when users interact.

CLS — Cumulative Layout Shift (visual stability)

Measures unexpected layout shifts — content jumping around as the page loads (the classic "I tapped the button but an ad loaded and I tapped the wrong thing"). Good: < 0.1. Caused by images/ads without reserved space, late-injected content, and fonts that reflow text.

How They're Measured

Improving Each Vital

These overlap heavily with general web performance — fast, lean pages tend to score well across all three.

Best Practices

Common Mistakes

Optimizing only lab scores, ignoring field data

Images and ads with no reserved space (CLS)

FAQ

What are the three Core Web Vitals and their thresholds?

LCP (Largest Contentful Paint) measures loading — when the largest visible element renders; "good" is under 2.5 seconds. INP (Interaction to Next Paint) measures responsiveness — the delay between user interactions and the page responding; "good" is under 200 milliseconds (it replaced First Input Delay in 2024). CLS (Cumulative Layout Shift) measures visual stability — how much content unexpectedly jumps as the page loads; "good" is under 0.1. Each is assessed at the 75th percentile of real users, and a page needs all three in the "good" range to pass.

Do Core Web Vitals actually affect SEO rankings?

Yes, but modestly. They're a confirmed ranking signal as part of Google's page-experience signals, but they're a relatively minor factor compared to relevance and content quality — a fast page with poor content won't outrank a slow page with great content. Their bigger value is in user experience: poor vitals increase bounce rate and hurt conversion regardless of rankings. So treat them as both a small ranking benefit and, more importantly, a direct measure of the experience that affects engagement and revenue. Good vitals are worth pursuing for users first, SEO second.

What's the difference between field data and lab data?

Field data (real-user monitoring, from the Chrome User Experience Report) measures actual visitors' experiences across their real devices and networks — this is what Google uses to assess your Core Web Vitals. Lab data (synthetic tests like Lighthouse) measures a single simulated load in a controlled environment, useful for debugging and reproducing issues but not the official score. The two often diverge because your test machine is faster than many real users' devices. Always validate against field data (Search Console's Core Web Vitals report) — optimizing only lab scores can leave real users with poor experiences.

How do I fix a poor INP score?

INP measures responsiveness, and poor scores almost always trace to JavaScript blocking the main thread when users interact. Fix it by reducing the amount of JavaScript you ship, breaking up long tasks into smaller chunks (so the browser can respond to input between them), deferring or lazy-loading non-critical scripts, and minimizing expensive work in event handlers. Avoid heavy synchronous computation on interaction. Because INP samples the worst interactions across a visit, also look for specific slow interactions (a heavy filter, an expensive re-render) and optimize those. It's fundamentally a main-thread-work problem.

Related Topics

References