Search Signal
Core Web Vitals on a mid-range Android
Lab scores pass and field data fails. What the gap is actually measuring.
A client sends a Lighthouse screenshot showing 98. Search Console shows the same pages failing Core Web Vitals. Both are correct, and the gap between them is the entire point.
Lab data is a laboratory
Lighthouse runs on your machine, on your connection, with a simulated throttle. Field data comes from the Chrome User Experience Report: real people, on real devices, on real networks. The device most of your traffic is holding is not the laptop you tested on.
The three things that usually explain the gap
- Main-thread contention. A mid-range phone has a fraction of the single-core performance. Third-party tags that cost 40ms on a desktop cost 400ms there.
- Font loading. A late webfont swap moves text after paint and shows up directly in CLS.
- Images without dimensions. Cheap to fix, and still the most common single cause of layout shift we find.
How to actually measure it
Throttle to a 4x CPU slowdown and a slow 4G profile, then test again. If the score survives that, the field data usually follows within a collection window. Chasing the lab number without the throttle is how teams spend a quarter optimising something that was never the problem.
Fix the render path first. Content and link work only compounds once the pages actually render.