Core Web Vitals checker
Type in the 75th-percentile numbers from PageSpeed Insights, Search Console or your own analytics and see exactly where you stand against Google's thresholds.
Core Web Vitals assessment
Enter LCP, INP and CLS
- LCP
- CLS
- INP
- FCP
- TTFB
Zones: good up to the first threshold, needs improvement up to the second, poor beyond. Values are saved in this browser so you can compare after a fix.
The thresholds
| Metric | Measures | Good | Poor |
|---|---|---|---|
| LCP Largest Contentful Paint | Loading | ≤ 2.5 s | > 4.0 s |
| INP Interaction to Next Paint | Responsiveness | ≤ 200 ms | > 500 ms |
| CLS Cumulative Layout Shift | Visual stability | ≤ 0.1 | > 0.25 |
| FCP First Contentful Paint (supporting) | First content | ≤ 1.8 s | > 3.0 s |
| TTFB Time to First Byte (supporting) | Server response | ≤ 0.8 s | > 1.8 s |
Source: Google's web.dev metric documentation. All thresholds apply at the 75th percentile of page loads, split by mobile and desktop.
Measure any page in your own browser
Open the page you want to check, open DevTools → Console, paste this and interact with the page. It uses the same browser APIs Google's web-vitals library is built on, and logs the LCP element and the slowest interaction.
// Paste into the DevTools console, then use the page. Logs LCP, CLS and INP as they change.
(() => {
let cls = 0, inp = 0;
const log = (m, v, u = 'ms') => console.log('%c' + m, 'font-weight:bold;color:#e0561b', u ? Math.round(v) + ' ' + u : v.toFixed(3));
new PerformanceObserver(l => { const e = l.getEntries().at(-1); log('LCP', e.startTime); console.log(e.element); })
.observe({ type: 'largest-contentful-paint', buffered: true });
new PerformanceObserver(l => { for (const e of l.getEntries()) if (!e.hadRecentInput) cls += e.value; log('CLS (running total)', cls, ''); })
.observe({ type: 'layout-shift', buffered: true });
new PerformanceObserver(l => { for (const e of l.getEntries()) if (e.interactionId && e.duration > inp) { inp = e.duration; log('INP (worst so far)', inp); console.log(e.name, e.target); } })
.observe({ type: 'event', durationThreshold: 16, buffered: true });
})();This page, right now
Measured in your browser while you read this — a small sanity check that the APIs work on your device.
Measuring…
INP needs interactions — try it on the INP page.
Lab numbers vs field numbers
A lab test — Lighthouse, or our waterfall speed test — loads the page once under fixed conditions. It's repeatable, so it's how you diagnose. Field data comes from real visitors on real phones and networks, and it's what Google's assessment uses. When they disagree, trust the field for "is there a problem?" and the lab for "what is causing it?".
Most LCP problems are visible in a waterfall: slow TTFB, render-blocking files, or a hero image that starts late. CLS and INP problems usually live in the page's JavaScript and layout rather than the network.
Questions developers ask
What are the Core Web Vitals?
Three metrics Google uses to describe real-world page experience: Largest Contentful Paint (loading, good ≤ 2.5 s), Interaction to Next Paint (responsiveness, good ≤ 200 ms) and Cumulative Layout Shift (visual stability, good ≤ 0.1). INP replaced First Input Delay in March 2024.
How does Google decide if a page passes?
Each metric is taken at the 75th percentile of real Chrome visits over the previous 28 days (the Chrome UX Report). A page or origin passes the Core Web Vitals assessment when all three metrics are in the "good" range at that percentile.
Where do I get my real-user numbers?
PageSpeed Insights shows CrUX field data at the top of its report for URLs and origins with enough traffic. Google Search Console has a Core Web Vitals report grouped by URL pattern. You can also collect your own with the open-source web-vitals library.
Can a lab test measure Core Web Vitals?
Partly. Lab tools can measure LCP and CLS during page load, but not INP, which needs real interactions — they report Total Blocking Time instead. Lab numbers are for diagnosing; the pass/fail assessment uses field data.
Are Core Web Vitals a ranking factor?
Google says page experience, including Core Web Vitals, is one of many signals its ranking systems use, and that relevance of content matters more. Good vitals will not rescue irrelevant content, but they do affect how visitors experience your site.