performance

Real-user LCP (field data)

LCP from real Chrome users over the last 28 days (75th-percentile). The metric Google actually ranks on — Lighthouse lab numbers are just a proxy.

What this check does

Reads the 75th-percentile Largest Contentful Paint from the Chrome User Experience Report (CrUX) — Google’s public dataset of real-user measurements aggregated from opted-in Chrome users over a rolling 28-day window. PageSpeed Insights bundles the CrUX numbers for the audited URL (and falls back to origin-level data when the URL isn’t sampled enough).

Field LCP (p75)Verdict
≤ 2.5 sGood
2.5–4.0 sNeeds improvement
> 4.0 sPoor

Three things to know about the number:

  1. 75th-percentile. Three out of four of your Chrome users see this LCP or better. The slowest 25% are worse.
  2. 28-day rolling window. Improvements take 1–4 weeks to fully reflect — CrUX needs to age out the old data.
  3. Aggregated. A single user with a 6 s LCP doesn’t move the needle; you need enough users on the slow path to shift the percentile.

Why it matters

This is the metric Google ranks on. The lab LCP from Lighthouse is a synthetic simulation — useful for catching regressions in CI, but it doesn’t see the long tail of real network conditions, real devices, and real user-installed extensions.

Two failure modes to watch for:

  • Field worse than lab. Real users have slower CPUs, flakier networks, and ad-blockers that change the loading order. If your lab LCP is 1.8 s but field is 3.2 s, the gap is your real users telling you something the lab missed.
  • Field better than lab. Means your real users are mostly on faster connections than Lighthouse’s simulated mobile. The lab is being conservative — you’re probably fine.

When in doubt, trust the field.

How to improve it

The fixes overlap with lab LCP, but field-specific levers matter more:

1. Optimize for the long tail, not the median. A 75th-percentile metric is dominated by your slowest real-user paths — slow networks, low-end Android phones, bot traffic that doesn’t get cached. Run the audit again with ?utm_source=cellular_proxy or use BrowserStack to test from a low-end device.

2. Preload the LCP image with fetchpriority.

<link rel="preload" as="image" href="/hero.webp" fetchpriority="high" />

This change moves the needle on field LCP even more than lab, because real users have higher network latency.

3. Serve modern image formats with proper srcset.

<picture>
  <source srcset="/hero-480.avif 480w, /hero-1024.avif 1024w" type="image/avif" />
  <source srcset="/hero-480.webp 480w, /hero-1024.webp 1024w" type="image/webp" />
  <img src="/hero.jpg" alt="..." width="1200" height="600" fetchpriority="high" sizes="100vw" />
</picture>

4. CDN with edge image transforms. Cloudflare Images, Bunny Optimizer, or Vercel Image Optimization will serve the right size to each device automatically.

5. Eliminate render-blocking resources. The LCP image can’t paint until the browser has parsed enough CSS. Inline critical CSS, defer non-critical CSS, and self-host fonts with font-display: swap.

6. Watch your third-party tags. A chat widget, ad tag, or analytics SDK that injects images above the fold will steal LCP. Audit your <head> for synchronous third-party scripts.

Frequently asked questions

Why does MetricSpot show no field data for my site?

CrUX only publishes 75th-percentile values once an origin has enough opted-in Chrome users in the 28-day window. Small or new sites often won’t qualify. If you see (field, origin) in the title, PSI fell back to your overall origin’s data because the specific URL didn’t have enough samples. If you see nothing at all, you’re below CrUX’s threshold for both.

Why is my field LCP worse than my lab LCP?

Three usual culprits: real-user network conditions (3G/4G in suburbs vs lab simulating mobile broadband), low-end devices (CrUX includes Android phones that Lighthouse doesn’t simulate), and your own personalization or A/B variants (lab tests an “anonymous” view; field includes logged-in users seeing personalized hero content).

How often does CrUX update?

The dataset refreshes daily, but each data point is the 28-day rolling average. So a fix that ships today will start showing partial improvement after ~7 days and be fully reflected after ~28 days. Don’t panic if the field number doesn’t move overnight.

Sources

Last updated 2026-05-12