Why Lighthouse scores and real user experience sometimes disagree
A client occasionally reports their site feels slow despite a Lighthouse score in the high 90s, and it's a legitimate, explainable gap, not a contradiction. Lighthouse measures a specific simulated scenario under specific conditions, and real users experience a wider range of devices, networks, and interaction patterns than any single lab test captures.
Lighthouse tests one page load, once
A default Lighthouse run measures a single, cold page load under a specific simulated network and device profile. Real user experience includes navigating between pages, interacting with dynamic content after initial load, and revisiting the site on a warm cache, none of which a single Lighthouse run captures, and any of which can feel meaningfully different from the initial lab measurement.
The device and network gap
Lighthouse's default mobile simulation uses a specific throttling profile that may not match your actual visitor base. A site optimized against Lighthouse's default profile can still feel slow to visitors on genuinely low-end devices or poor real-world network conditions that differ from the simulated baseline, which is exactly why we prioritize real field data (from Chrome UX Report or Search Console) over lab scores alone.
Interaction responsiveness after the initial load
A page can score well on initial load metrics and still feel sluggish once a user starts interacting with it, if a heavy JavaScript bundle continues executing in the background or a poorly optimized event handler blocks the main thread during scrolling or clicking. Lighthouse's INP-related metrics capture some of this, but real prolonged use, scrolling through a long list, filtering a large table, can surface responsiveness issues a short lab test doesn't fully exercise.
Perceived performance versus measured performance
Two pages with identical measured load times can feel different in perceived speed depending on what appears first and how smoothly it appears. A page that shows a skeleton loading state and progressively fills in content often feels faster than one that shows nothing and then suddenly completes, even at an identical total measured load time, which is a design and sequencing decision, not purely a technical one.
What we actually recommend checking
Use Lighthouse as a fast, useful diagnostic and regression check during development, but validate real-world experience against field data (Search Console's Core Web Vitals report, or a real user monitoring tool) and, ideally, actual testing on a genuinely low-end device over a throttled connection, not just trusting a high lab score as the final word.
Explaining the gap to a client without undermining trust in the score
When a client's own experience of the site conflicts with a strong Lighthouse score, the wrong response is to dismiss their experience as anecdotal, since real user complaints about perceived slowness are a genuine, valid signal even when a specific lab tool disagrees. We walk clients through the specific mechanical reasons the gap exists, the sections above, network conditions, device gap, perceived versus measured performance, rather than either blindly defending the lab score or abandoning it as meaningless. Both the lab score and the client's felt experience are real data points measuring genuinely different things, and treating either one as automatically more authoritative than the other misses what's actually useful about having both.
When a client's own experience of the site conflicts with a strong Lighthouse score, the wrong response is to dismiss their experience as anecdotal, since real user complaints about perceived slowness are a genuine, valid signal even when a specific lab tool disagrees.
Setting up real user monitoring so this gap becomes visible before a client notices
Rather than waiting for a client to report a perceived slowness that doesn't match the lab score, we set up real user monitoring early in most engagements specifically to catch this gap proactively. Seeing actual field data broken down by device type, connection speed, and geography lets us identify segments of real users having a meaningfully worse experience than the aggregate Lighthouse score would suggest, often before those users ever complain or the client ever notices anything is off, which turns a reactive, sometimes tense conversation into a proactive, already-in-progress fix.
A specific case where the gap traced back to a single geography
One client's aggregate Lighthouse score and aggregate field data both looked strong, yet a specific regional sales team kept reporting the site felt noticeably slow. Segmenting the real user monitoring data by geography revealed the issue: visitors from that particular region were served by a CDN edge location with meaningfully higher latency to the origin server than the regions used in our standard lab testing, a gap the aggregate numbers, blended across all regions, had been quietly averaging away. The fix was a straightforward CDN configuration adjustment once the actual cause was isolated, but finding it required looking at the field data broken out by segment rather than trusting either the lab score or the blended aggregate field number, both of which looked fine on their own and gave no indication that one specific region was having a meaningfully worse experience than everyone else.
Why we treat this as an ongoing check, not a one-time reconciliation
The gap between lab scores and real user experience isn't a problem solved once and then permanently closed, since new features, new third-party integrations, and content changes can each independently reintroduce a gap even on a site that previously had lab and field data well aligned. We build a recurring check into ongoing performance monitoring, comparing lab and field trends monthly rather than treating an initial reconciliation as a permanent state, since a site that drifts back out of alignment without anyone noticing is a genuinely common failure mode on sites that get regular feature additions from multiple contributing teams over time.
The simplest possible explanation we check before anything more complex
Before diving into device or geography segmentation, we check the simplest possible explanation first: is the client actually testing on a hot, cached browser session that behaves differently from a genuine first visit. It sounds obvious, but a surprising share of reported "the site feels slow" complaints trace back to comparing a fresh Lighthouse run against a browsing experience that benefited from cached assets, browser extensions, or a fast office network unrepresentative of a typical visitor's actual conditions. Ruling out this simpler explanation first saves time before pursuing a more involved investigation into genuine field-data segmentation.