
Why Your Core Web Vitals Score Is Lying to You (And What to Do About It)
Most teams chase a green Lighthouse score, run it in an incognito tab on a fibre connection in an empty office, and call it done. That number is a lab score. It is not what Google actually uses to rank you.
Google’s ranking signal comes from the Chrome User Experience Report (CrUX) — real field data collected from real Chrome users, on real devices, on real networks, over a rolling 28-day window. A site can post a 98 in Lighthouse and still fail its Core Web Vitals assessment in Search Console, because the people actually visiting the site are on a mid-range Android phone over 4G in a market with slower average connection speeds, not a MacBook on fibre.
The three metrics that matter
- LCP (Largest Contentful Paint) — how long it takes the biggest visible element to render. Field LCP is usually dragged down by render-blocking JavaScript, unoptimised hero images, and slow server response times (TTFB), not the things Lighthouse tends to flag first.
- INP (Interaction to Next Paint) — replaced FID in March 2024 and is the metric most sites quietly fail. It measures the full latency of every interaction on the page, not just the first one. Heavy client-side JavaScript, third-party scripts, and long main-thread tasks are the usual culprits.
- CLS (Cumulative Layout Shift) — visual stability. Images and ads without reserved dimensions, web fonts causing a flash of unstyled text, and content injected above existing content are the common causes.
Where the lab score and the field score diverge
Lighthouse runs a single simulated session under controlled conditions. It cannot see your actual traffic mix — the proportion of visitors on low-end Android devices, the real-world variance in network conditions, or how your page behaves after a user actually starts interacting with it. A site can be technically fast and still fail INP in the field simply because of what happens after the page loads: a slow-loading ad network, a chat widget hijacking the main thread, a poorly debounced search box.
What actually moves the needle
- Pull the real data first. Search Console’s Core Web Vitals report and the CrUX dashboard tell you which URL groups are failing and by how much — start there, not in Lighthouse.
- Fix TTFB before anything else. A slow server response delays every other metric downstream. This is usually a hosting, caching, or CDN configuration issue, not a front-end one.
- Audit third-party scripts. Tag managers, chat widgets, and ad tech are the most common source of INP failures. Defer or lazy-load anything that is not required for the initial interaction.
- Reserve space for dynamic content. Every image, embed, and ad slot needs explicit width and height attributes before it ships.
Core Web Vitals are not a vanity metric — they are a genuine ranking factor and, more importantly, a proxy for whether real users can actually use your site. Optimise for the field data, not the lab score, and the lab score tends to follow.