AlgoPlusAlgoPlus
Learn/Web
Lesson

Core Web Vitals

Three numbers stand in for one feeling — is this page good? LCP times loading, CLS measures visual stability, INP measures responsiveness.

8 min read Watch it move Build it

Core Web Vitals are the three metrics Google uses to grade a page's real-world experience. Each captures a different feeling: LCP — does it *look* loaded fast? CLS — does it hold still or jump around? INP — does it *answer* my taps quickly? A page only passes when *all three* are good.

LCP — loading (Largest Contentful Paint)

LCP is the moment the *largest visible element* — often the hero image or headline — finishes rendering. It's the honest answer to 'when did the page look loaded?', better than older paint metrics that fire before the main content arrives. Slow LCP usually comes from a slow server, render-blocking CSS/JS, or a heavy unoptimized hero image.

CLS — visual stability (Cumulative Layout Shift)

CLS is a *unitless* score of how much visible content unexpectedly jumps as the page loads — you go to tap a button and an image loads above it, shoving everything down. Each shift adds to the score. The usual culprits: images and ads without reserved space, and late-injected banners. The fix is to reserve space up front (set width/height or aspect-ratio on media).

INP — interactivity (Interaction to Next Paint)

INP measures the delay from a tap or click to the *next frame the browser draws* in response — how snappy the page feels. In March 2024 it replaced FID (First Input Delay) as a Core Web Vital: FID only timed the *first* interaction's input delay, while INP watches *all* interactions across the whole visit and reports a near-worst one, including the time to run the handler and repaint. Long-running JavaScript on the main thread is the main cause; break up long tasks to fix it.

The thresholds

Metric  Measures            Good       Needs work    Poor
------  ------------------  ---------  -----------   --------
LCP     loading             <= 2.5 s    <= 4.0 s       > 4.0 s
CLS     visual stability    <= 0.1      <= 0.25        > 0.25
INP     interactivity       <= 200 ms   <= 500 ms      > 500 ms
Judged at the 75th percentile of real visits
Vitals are scored on *field data* from real users, at the 75th percentile — a page passes only if it's good for at least three out of four visitors, not just on a fast test machine.
INP replaced FID, not LCP or CLS
As of March 2024 the trio is LCP, CLS, INP. FID is retired. Grading all three good is what makes a page pass the Core Web Vitals assessment.
Check yourself
Which Core Web Vital did INP replace in 2024, and what does INP measure?