Core Web Vitals explained: what each metric measures and how to move it
Three numbers, each measuring a different way a page can feel bad: slow to appear, slow to respond, and unstable while you use it.
Lab (synthetic) data comes from a controlled test on simulated hardware and network conditions — reproducible, good for debugging. Field data comes from real visits on real devices and is what Google uses for Core Web Vitals. When they disagree, the field data is what matters; use the lab to diagnose and verify fixes.
| Lab (synthetic) | Field (RUM) | |
|---|---|---|
| Source | One scripted test run | Real visits, aggregated |
| Device | Simulated throttling | Whatever users own |
| Network | Simulated | Real, variable |
| Cache | Cold by default | Mixed cold and warm |
| Interactions | None or scripted | Real user behaviour |
| Reproducible | Yes | No |
| Used by Google for ranking | No | Yes |
Because the lab tests one idealised visit and the field measures every visit, including the slow ones.
import { onCLS, onINP, onLCP, onTTFB } from "web-vitals/attribution";
function report(metric) {
navigator.sendBeacon("/api/vitals", JSON.stringify({
name: metric.name,
value: metric.value,
rating: metric.rating,
attribution: metric.attribution, // which element, which phase
path: location.pathname,
connection: navigator.connection?.effectiveType,
}));
}
onLCP(report); onINP(report); onCLS(report); onTTFB(report);Network variability, CPU contention on the machine running the test, and randomness in third-party responses. Run three or five times and take the median; a single run is not a measurement.
The Chrome UX Report needs enough visits to report a URL or group. Your own RUM works at any volume, which is one of the reasons to run it.
Yes — it shows both, with CrUX field data at the top and a Lighthouse lab run below. Read the field section first; that is the assessment.
The public dataset is a rolling 28-day window, so allow four to six weeks for a full reflection. Your own RUM shows the change the same day.
ROVQIX Growth
SEO & growth team, ROVQIX
The ROVQIX growth team handles technical SEO, Core Web Vitals and AI-search visibility for the sites we build. Recommendations here are the ones we apply to client projects and to rovqix.in itself.
ROVQIXdesigns and builds production web platforms — Next.js front ends, Node.js APIs and the infrastructure behind them. Tell us what you're building and we'll scope it with you.
Three numbers, each measuring a different way a page can feel bad: slow to appear, slow to respond, and unstable while you use it.
Performance work that happens once decays within two quarters. A budget makes it a constraint every pull request has to respect.
Observability is not more dashboards. It is being able to answer a question you did not anticipate, without shipping new code.
No spam. Just the occasional case study and craft breakdown.