LCP distribution

How LCP is distributed across real-user data, plus pass-rate breakdown.

Field data PhoneDesktopAll Scope All sites Q2 2026 edition · Phone field outcomes
1

At a glance the headline numbers for LCP distribution

How LCP is distributed across real-user data, plus pass-rate breakdown.

81.7%
of sites pass LCP
1.6s
Typical site
3.1s
Worst 10% of sites

81.7% of sites pass LCP. The typical site's LCP is 1.6s. The worst 10% are above 3.1s.

The State of Web Vitals · Q2 2026 · 189,915 sites · phone field datacorewebvitals.io/state-of-cwv
2

The LCP distribution site count at each LCP, from good to poor

0 4,209 8,417 12,626 16,834
0ms–250msms12 sites<0.1% of all sites
250ms–500msms999 sites0.9% of all sites
500ms–750msms5,880 sites5.2% of all sites
750ms–1sms13,183 sites11.7% of all sites
1s–1.3sms16,834 sites14.9% of all sites
1.3s–1.5sms15,875 sites14.1% of all sites
1.5s–1.8sms13,757 sites12.2% of all sites
1.8s–2sms10,778 sites9.5% of all sites
2s–2.3sms8,586 sites7.6% of all sites
2.3s–2.5sms6,359 sites5.6% of all sites
2.5s–2.8sms4,670 sites4.1% of all sites
2.8s–3sms3,567 sites3.2% of all sites
3s–3.3sms2,808 sites2.5% of all sites
3.3s–3.5sms2,131 sites1.9% of all sites
3.5s–3.8sms1,603 sites1.4% of all sites
3.8s–4sms1,210 sites1.1% of all sites
4s–4.3sms936 sites0.8% of all sites
4.3s–4.5sms738 sites0.7% of all sites
4.5s–4.8sms614 sites0.5% of all sites
4.8s–5sms479 sites0.4% of all sites
5s–5.3sms358 sites0.3% of all sites
5.3s–5.5sms293 sites0.3% of all sites
5.5s–5.8sms257 sites0.2% of all sites
5.8s–6sms168 sites0.1% of all sites
6s–6.3sms154 sites0.1% of all sites
6.3s–6.5sms120 sites0.1% of all sites
6.5s–6.8sms98 sites0.1% of all sites
6.8s–7sms109 sites0.1% of all sites
7s–7.3sms63 sites0.1% of all sites
7.3s–7.5sms52 sites<0.1% of all sites
7.5s–7.8sms40 sites<0.1% of all sites
7.8s–8sms35 sites<0.1% of all sites
8sms and up214 sites0.2% of all sites
p50 = 1.6s
p75 = 2.2s
p90 = 3.1s
p99 = 5.7s
0ms–250ms 250ms–500ms 500ms–750ms 750ms–1s 1s–1.3s 1.3s–1.5s 1.5s–1.8s 1.8s–2s 2s–2.3s 2.3s–2.5s 2.5s–2.8s 2.8s–3s 3s–3.3s 3.3s–3.5s 3.5s–3.8s 3.8s–4s 4s–4.3s 4.3s–4.5s 4.5s–4.8s 4.8s–5s 5s–5.3s 5.3s–5.5s 5.5s–5.8s 5.8s–6s 6s–6.3s 6.3s–6.5s 6.5s–6.8s 6.8s–7s 7s–7.3s 7.3s–7.5s 7.5s–7.8s 7.8s–8s 8s+
Good (≤2.5s) Needs improvement Poor (>4s) Percentile markers Total: 112,980 sites

The tallest bar is between 1s and 1.25s. 15% of sites are in that one range, 1.25s under Google's 2.5s limit. Half of all sites are at 1.6s or less. The tail is long. The worst 10% are above 3.1s and the worst 1% above 5.7s. That is 3.6 times the typical site.

The State of Web Vitals · Q2 2026 · 189,915 sites · phone field datacorewebvitals.io/state-of-cwv
3

The LCP pass rate the share of sites that are good, needs improvement and poor

LCP
81.7%
14.1%
4.2%
Good Needs Improvement Poor

81.7% of sites pass LCP. 14.1% are in the needs improvement band, between 2.5s and 4s. 4.2% are poor, above 4s. A miss is usually needs improvement, not poor.

The State of Web Vitals · Q2 2026 · 189,915 sites · phone field datacorewebvitals.io/state-of-cwv
4

Why this matters for the Core Web Vitals, and where to start fixing it

Largest Contentful Paint is when the biggest thing in the viewport finishes rendering, usually the hero image or a headline. It is the moment the page stops looking blank and starts looking loaded, so it is the metric your visitors feel first. A slow LCP is almost always one of a few things: the server takes too long to respond, the image is too big or discovered too late, or render-blocking CSS and fonts hold everything up.

Start with what paints. Find the LCP element, make sure the browser can discover it early, and give it a clear path to the screen. Preload the hero image, serve it in a modern format at the right size, and keep render-blocking resources out of the way. The server side matters too, but the biggest wins are usually in how the main image and the critical CSS are delivered.

How are sites doing on LCP?

81.7% of sites have a good LCP. The typical site sits at 2.2s at the 75th percentile; the slowest 1% pass 5.7s.

Related signals TTFB → FCP → CLS → INP → Chrome field data from 189,915 sites, representing millions of real page loads · How we measured
Live queries (2) — admin only
Query #1: 63.8 ms
SELECT COUNT(*) AS count,
            COUNT(*) FILTER (WHERE crux."phone".lcp <= 2500) * 1.0 / COUNT(*) AS good,
            COUNT(*) FILTER (WHERE crux."phone".lcp > 2500 AND crux."phone".lcp <= 4000) * 1.0 / COUNT(*) AS needs_improvement,
            COUNT(*) FILTER (WHERE crux."phone".lcp > 4000) * 1.0 / COUNT(*) AS poor,
            quantile_disc(crux."phone".lcp, 0.10) AS p10,
            quantile_disc(crux."phone".lcp, 0.25) AS p25,
            quantile_disc(crux."phone".lcp, 0.50) AS p50,
            quantile_disc(crux."phone".lcp, 0.75) AS p75,
            quantile_disc(crux."phone".lcp, 0.90) AS p90,
            quantile_disc(crux."phone".lcp, 0.99) AS p99
            FROM sites WHERE 1=1 AND crux."phone".lcp IS NOT NULL;
Query #2: 53.7 ms
SELECT CASE WHEN crux."phone".lcp >= 0 AND crux."phone".lcp < 250 THEN 0 WHEN crux."phone".lcp >= 250 AND crux."phone".lcp < 500 THEN 1 WHEN crux."phone".lcp >= 500 AND crux."phone".lcp < 750 THEN 2 WHEN crux."phone".lcp >= 750 AND crux."phone".lcp < 1000 THEN 3 WHEN crux."phone".lcp >= 1000 AND crux."phone".lcp < 1250 THEN 4 WHEN crux."phone".lcp >= 1250 AND crux."phone".lcp < 1500 THEN 5 WHEN crux."phone".lcp >= 1500 AND crux."phone".lcp < 1750 THEN 6 WHEN crux."phone".lcp >= 1750 AND crux."phone".lcp < 2000 THEN 7 WHEN crux."phone".lcp >= 2000 AND crux."phone".lcp < 2250 THEN 8 WHEN crux."phone".lcp >= 2250 AND crux."phone".lcp < 2500 THEN 9 WHEN crux."phone".lcp >= 2500 AND crux."phone".lcp < 2750 THEN 10 WHEN crux."phone".lcp >= 2750 AND crux."phone".lcp < 3000 THEN 11 WHEN crux."phone".lcp >= 3000 AND crux."phone".lcp < 3250 THEN 12 WHEN crux."phone".lcp >= 3250 AND crux."phone".lcp < 3500 THEN 13 WHEN crux."phone".lcp >= 3500 AND crux."phone".lcp < 3750 THEN 14 WHEN crux."phone".lcp >= 3750 AND crux."phone".lcp < 4000 THEN 15 WHEN crux."phone".lcp >= 4000 AND crux."phone".lcp < 4250 THEN 16 WHEN crux."phone".lcp >= 4250 AND crux."phone".lcp < 4500 THEN 17 WHEN crux."phone".lcp >= 4500 AND crux."phone".lcp < 4750 THEN 18 WHEN crux."phone".lcp >= 4750 AND crux."phone".lcp < 5000 THEN 19 WHEN crux."phone".lcp >= 5000 AND crux."phone".lcp < 5250 THEN 20 WHEN crux."phone".lcp >= 5250 AND crux."phone".lcp < 5500 THEN 21 WHEN crux."phone".lcp >= 5500 AND crux."phone".lcp < 5750 THEN 22 WHEN crux."phone".lcp >= 5750 AND crux."phone".lcp < 6000 THEN 23 WHEN crux."phone".lcp >= 6000 AND crux."phone".lcp < 6250 THEN 24 WHEN crux."phone".lcp >= 6250 AND crux."phone".lcp < 6500 THEN 25 WHEN crux."phone".lcp >= 6500 AND crux."phone".lcp < 6750 THEN 26 WHEN crux."phone".lcp >= 6750 AND crux."phone".lcp < 7000 THEN 27 WHEN crux."phone".lcp >= 7000 AND crux."phone".lcp < 7250 THEN 28 WHEN crux."phone".lcp >= 7250 AND crux."phone".lcp < 7500 THEN 29 WHEN crux."phone".lcp >= 7500 AND crux."phone".lcp < 7750 THEN 30 WHEN crux."phone".lcp >= 7750 AND crux."phone".lcp < 8000 THEN 31 WHEN crux."phone".lcp >= 8000 THEN 32 END AS bucket_idx, COUNT(*) AS count FROM sites WHERE 1=1 AND crux."phone".lcp IS NOT NULL GROUP BY bucket_idx;
JSON file lookups (4)
20260625/meta.json 0.02 ms
20260625/types.json 0.52 ms
20260625/loaf-scripts.json 2.59 ms
20260625/menu.json 0.20 ms