Lighthouse runs tests on a relatively slow throttled connection, so typically real user field data is worse than what's reported in lab tests.
However, sometimes it's the opposite and real users face performance problems on a superficially fast site. This article looks at a number of reasons why TTFB values differ between lab and field measurements.
TTFB vs server response time
First of all, the Time to First Byte metric includes more than just server response time for the HTTP request.
- Redirects
- Time spent establishing a server connection
- Network round trip time for the request
- Server processing time
The server response time in Lighthouse only measures the processing time component. However, the Google CrUX data that impacts rankings includes all components in the TTFB score.

Why is lab test TTFB typically worse than field data?
When running a lab test on PageSpeed Insights or DebugBear you'll typically find that field TTFB is better than what's shown in the lab data. This has two reasons:
- Mobile Lighthouse tests use a high-latency network with a round trip time of 150 milliseconds
- Most lab tests measure a first visit "cold load", with no browser caching or server connection reuse
With a round trip time of 150 milliseconds, a request will take at least 600 milliseconds even if the server response is instant.
What does it mean if real user TTFB is worse than lab results?
While this situation is less common, it can happen for a few reasons:
- Logged-in users having a slower experience
- CDN and application cache misses
- Users arriving via redirects
Logged-in users having a slower experience
Lab tests are typically run on public pages without login, although you can configure login flows to test pages that require authentication.
When users are logged in the content they see often includes customized information and private data. Therefore caching is not an option and the full page has to be regenerated.
If you're logged into a CMS like Wordpress you may also find that page speed is a lot slower for you than it is for other visitors.
CDN and application cache misses
Another reason is that lab tests are run from a consistent location and are more likely to hit a cache than a random visitor.
Global CDN caching
CDN caching works by serving content from an edge node that's close to the user. For example, Cloudflare has 330 global edge nodes.
Content Delivery Networks can then cache some server responses at the edge node and respond to requests within milliseconds. However, this only works if the specific edge node that's serving the user has already cached the HTML.

You can view the CDN status in the response headers of the HTTP request. For example, Cloudflare's CDN returns a cf-cache-status response header with the value HIT when the response is served from the edge node cache.

