Core Web Vitals
Definition
Core Web Vitals (CWV) are Google's standardized metrics quantifying real-world web user experience: Largest Contentful Paint (LCP) for loading speed, Interaction to Next Paint (INP) for responsiveness, and Cumulative Layout Shift (CLS) for visual stability across all device form factors.
Why It Matters
Google uses Core Web Vitals as an explicit ranking factor in Search page experience evaluations. Sites passing all three thresholds experience lower bounce rates, higher user engagement, and improved conversion rates, while failing sites risk reduced search visibility.
Google Core Web Vitals Official Thresholds (75th Percentile)
| Criterion / State | Requirement / Target | Status |
|---|---|---|
| LCP (Loading) | ≤ 2.5 seconds (Good) | Optimal |
| INP (Responsiveness) | ≤ 200 milliseconds (Good) | Optimal |
| CLS (Visual Stability) | ≤ 0.1 score (Good) | Optimal |
Practical Implementation Example
Using the official web-vitals library captures field measurements directly from end-user devices and beacons them to analytics endpoints without blocking main thread execution.
import { onCLS, onINP, onLCP, Metric } from 'web-vitals';
function sendToAnalytics(metric: Metric) {
const body = JSON.stringify({ name: metric.name, value: metric.value, id: metric.id });
navigator.sendBeacon('/api/vitals', body);
}
export function reportWebVitals() {
onCLS(sendToAnalytics);
onINP(sendToAnalytics);
onLCP(sendToAnalytics);
}How to Audit CWV in ScanWise
ScanWise audits full Core Web Vitals using Chrome DevTools Protocol and real-user data, measuring 75th percentile LCP, INP, and CLS across mobile and desktop.
Audit your Core Web Vitals in ScanWiseCommon CWV Mistakes & How to Fix Them
| Mistake | Why It Hurts | The Fix |
|---|---|---|
| Testing only on high-spec developer laptops under perfect network conditions. | Core Web Vitals evaluate real-user field data (CrUX) collected primarily on mid-tier mobile devices on cellular networks. | Audit using 4x CPU throttling, simulated 4G network conditions, and review the CrUX dashboard. |
| Focusing solely on LCP while ignoring INP and layout instability. | A site that loads rapidly but freezes on user interaction or jumps layout fails the Core Web Vitals assessment. | Optimize long tasks with scheduler.yield() and reserve dimensional layout space for dynamic elements. |
Related Engineering Guides
Core Web Vitals in Next.js: The 2026 Developer Guide
Architectural strategies to achieve sub-2.5s LCP, zero layout shifts, and responsive interaction in production.
INP Optimization for React Applications: Breaking Down Long Tasks
Eliminate main thread blocking and optimize React state updates for sub-200ms interaction latency.
Eliminating Cumulative Layout Shift (CLS) in Dynamic React Frameworks
Prevent sudden visual reflows from fonts, ads, and dynamic hydration.