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
Benji
Your life OS
The companion app that keeps every area of your world in sync.
Zero to Shipped
Ship products, not side projects
The ultimate Next.js boilerplate for building and launching real products.
DMX
Mindful Twitter/X
The intentional X client for macOS. Reclaim your attention span.
Sotto
Voice-to-text for macOS
Speak naturally. Type instantly. 100% local & private.
Passlock
Password manager with willpower
Lock passwords with time delays, word challenges, or hand the keys to someone you trust.
Glink
Changelogs that slap
Beautiful changelogs and roadmaps for your product.
JoinRepo
GitHub access control
Monetize your GitHub repositories with ease.
Tubely
YouTube Studio for Mac
Manage multiple YouTube channels in one native app.
JustWrite
Distraction-free writing
A minimal writing app that helps you focus on what matters.