1
At a glance the headline numbers for Last-Modified present
Whether responses carry Last-Modified validators.
0.0%
Adoption
0 of 0
—
With (median LCP)
—
Without (median LCP)
The State of Web Vitals · Q2 2026 · 189,915 sites · all devices field datacorewebvitals.io/state-of-cwv
2
Last-Modified present sites that have it vs sites that don't
0.0% of sites send Last-Modified headers (0 of 0). With send: LCP —, 0.0% pass. Without: LCP —, 0.0% pass. computed
The State of Web Vitals · Q2 2026 · 189,915 sites · all devices field datacorewebvitals.io/state-of-cwv
3
Why this matters for the Core Web Vitals, and where to start fixing it
Last-Modified is the older validator. The browser sends the timestamp back (If-Modified-Since) and the server answers 304 Not Modified when nothing changed, saving the re-download of an expired cache entry.
It is weaker than an ETag: one-second resolution, and deploys often touch timestamps without changing content, which breaks the match. But any validator beats none. A response with no validator and a short TTL is re-downloaded in full on every revisit.
Go fix it
TTFB: cache duration →
Related signals
HTTP protocol →
HTML size (kB) →
Connection hints →
HTML compression →
Chrome field data from 189,915 sites, representing millions of real page loads · How we measured
Chrome field data from 189,915 sites, representing millions of real page loads. How we measured.
Live queries (1) — admin only
Query #1:
39.4 ms
SELECT m.headers.has_last_modified AS val, COUNT(*) AS n,
quantile_disc(crux."all".lcp, 0.5) AS median,
COUNT(*) FILTER (WHERE crux."all".lcp IS NOT NULL AND crux."all".lcp <= 2500) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE crux."all".lcp IS NOT NULL), 0) AS good,
COUNT(*) FILTER (WHERE crux."all".lcp IS NOT NULL AND crux."all".lcp > 2500 AND crux."all".lcp <= 4000) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE crux."all".lcp IS NOT NULL), 0) AS ni,
COUNT(*) FILTER (WHERE crux."all".lcp IS NOT NULL AND crux."all".lcp > 4000) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE crux."all".lcp IS NOT NULL), 0) AS poor
FROM sites WHERE 1=1 GROUP BY m.headers.has_last_modified;
JSON file lookups (4)
20260625/meta.json
0.02 ms
20260625/types.json
0.53 ms
20260625/loaf-scripts.json
2.24 ms
20260625/menu.json
0.17 ms