All articles
Performance

Core Web Vitals Explained for Developers

What LCP, INP, and CLS measure, the thresholds Google uses, and a practical workflow for finding and fixing each on real pages.

8 min read - Updated 2026-06-15

Use this guide as a compact release reference, then validate the same breakpoints in Sizzy with synchronized devices and screenshot evidence.

The three metrics and their thresholds

Core Web Vitals are Google's user-experience signals. LCP (Largest Contentful Paint) measures loading - how fast the main content appears. INP (Interaction to Next Paint) measures responsiveness - how quickly the page reacts to input. CLS (Cumulative Layout Shift) measures visual stability - how much the layout jumps. Each has a 'good' threshold worth memorizing.

LCP good: under 2.5 seconds

INP good: under 200 milliseconds

CLS good: under 0.1

All three are ranking-relevant user-experience signals

Lab vs field data

Lab tools like Lighthouse simulate a single run in a controlled environment - great for debugging. Field data (CrUX, the Web Vitals JS library) reflects what real users experience across devices and networks, which is what Google actually uses for ranking. Optimize against field data and use lab runs to diagnose specific regressions.

Lab data: Lighthouse, DevTools - repeatable, for debugging

Field data: CrUX and the web-vitals library - real users

Google ranks on field data, not lab scores

Mobile field data usually matters most

Fix on the devices users actually have

Vitals are usually worse on mobile, where CPU and network are constrained. Test with throttling and at real mobile widths rather than on your fast desktop. Sizzy includes network throttling and accurate mobile viewports so you can reproduce the conditions that produce poor field scores and confirm your fixes under realistic constraints.

Throttle CPU and network to mimic mid-range phones

Measure at real mobile widths, not desktop

Re-measure after each fix to confirm improvement

Prioritize the metric failing in field data

Release checklist

You know the good thresholds for LCP, INP, and CLS.

Optimization decisions are driven by field data.

Testing uses throttling and real mobile widths.

Each fix is re-measured to confirm it helped.

Frequently asked questions

What are good Core Web Vitals scores?

Good thresholds are LCP under 2.5 seconds, INP under 200 milliseconds, and CLS under 0.1. Meeting these for most real users (the 75th percentile of field data) is the goal Google measures.

What replaced First Input Delay?

INP (Interaction to Next Paint) replaced FID as a Core Web Vital. INP measures responsiveness across all interactions during a visit, giving a fuller picture than FID, which only measured the first input.

Why are my Core Web Vitals worse on mobile?

Mobile devices have slower CPUs and networks, so loading, responsiveness, and layout stability all suffer more than on desktop. Test with CPU and network throttling at mobile widths to reproduce and fix the real conditions.

Related guides