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 INP)
—
Without (median INP)
The State of Web Vitals · Q2 2026 · 189,915 sites · phone 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: INP —, 0.0% pass. Without: INP —, 0.0% pass. computed
The State of Web Vitals · Q2 2026 · 189,915 sites · phone 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:
18.3 ms
SELECT m.headers.has_last_modified AS val, COUNT(*) AS n,
quantile_disc(crux."phone".inp, 0.5) AS median,
COUNT(*) FILTER (WHERE crux."phone".inp IS NOT NULL AND crux."phone".inp <= 200) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE crux."phone".inp IS NOT NULL), 0) AS good,
COUNT(*) FILTER (WHERE crux."phone".inp IS NOT NULL AND crux."phone".inp > 200 AND crux."phone".inp <= 500) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE crux."phone".inp IS NOT NULL), 0) AS ni,
COUNT(*) FILTER (WHERE crux."phone".inp IS NOT NULL AND crux."phone".inp > 500) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE crux."phone".inp 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.04 ms
20260625/types.json
0.93 ms
20260625/loaf-scripts.json
0.70 ms
20260625/menu.json
0.21 ms