Core Web Vitals Scoring Thresholds — Complete Reference
Complete reference for all Web Vitals scoring thresholds. Good, needs-improvement, and poor ranges for LCP, INP, CLS, FCP, TTFB, and TBT with percentile methodology.
Detailed Explanation
Web Vitals Scoring Thresholds
Google defines three scoring buckets for each Web Vital: Good (green), Needs Improvement (yellow), and Poor (red). These thresholds determine your Core Web Vitals status in Google Search Console and PageSpeed Insights.
Core Web Vitals Thresholds
| Metric | Good | Needs Improvement | Poor |
|---|---|---|---|
| LCP | ≤ 2,500ms | ≤ 4,000ms | > 4,000ms |
| INP | ≤ 200ms | ≤ 500ms | > 500ms |
| CLS | ≤ 0.1 | ≤ 0.25 | > 0.25 |
Supplementary Metric Thresholds
| Metric | Good | Needs Improvement | Poor |
|---|---|---|---|
| FCP | ≤ 1,800ms | ≤ 3,000ms | > 3,000ms |
| TTFB | ≤ 800ms | ≤ 1,800ms | > 1,800ms |
| TBT | ≤ 200ms | ≤ 600ms | > 600ms |
The 75th Percentile Rule
Google uses the 75th percentile (p75) of field data to determine a page's status. This means:
- Your page is "Good" if 75% of visits have a good score
- Your page is "Poor" if the 75th percentile falls in the poor range
- The 75th percentile was chosen because it captures typical user experience while being robust to outliers
Example: 100 page visits with LCP values (sorted):
- 25 visits: 1.0s - 1.5s (good)
- 25 visits: 1.5s - 2.0s (good)
- 25 visits: 2.0s - 2.5s (good) ← 75th percentile = 2.5s ✅
- 25 visits: 2.5s - 6.0s (mixed)
Result: Page passes (p75 = 2.5s = Good)
Passing Core Web Vitals
A page passes Core Web Vitals assessment if it meets the "Good" threshold at the 75th percentile for all three Core Web Vitals (LCP, INP, CLS). Failing even one metric means the page does not pass.
Mobile vs Desktop
Google assesses mobile and desktop separately:
- Mobile thresholds are the same as desktop
- But mobile devices have slower CPUs and networks
- Most sites have worse mobile scores than desktop
- Google uses mobile-first indexing, making mobile scores especially important
Origin vs URL-Level Data
CrUX reports two levels of data:
- URL-level: Data for a specific page URL (used when enough traffic exists)
- Origin-level: Aggregated data for the entire domain (fallback when URL data is insufficient)
A page needs at least 200 visits in 28 days to have URL-level data in CrUX.
Historical Context: FID to INP
| Period | Core Web Vitals |
|---|---|
| June 2021 – March 2024 | LCP, FID, CLS |
| March 2024 – Present | LCP, INP, CLS |
FID had a good threshold of 100ms. Many sites passed FID easily because it only measured the first interaction's delay. INP at 200ms is more stringent because it measures the worst interaction's full latency.
Use Case
Understanding the exact thresholds and methodology is essential for performance teams setting targets and reporting to stakeholders. Knowing the 75th percentile rule helps interpret CrUX data correctly. The distinction between URL-level and origin-level data matters when diagnosing why Search Console shows different results than PageSpeed Insights.
Try It — Web Vitals Reference
Related Topics
LCP Optimization Strategies — Largest Contentful Paint Guide
Core Web Vitals
INP Explained — Interaction to Next Paint Deep Dive
Core Web Vitals
CLS Layout Shift Causes and Fixes — Cumulative Layout Shift Guide
Core Web Vitals
Performance Monitoring Tools for Web Vitals
Tools & Workflow
TTFB Optimization — Time to First Byte Best Practices
Supplementary Metrics