At a glance the headline numbers for ETag present
Whether responses carry ETag validators.
83.4% of sites serve ETag validators.
ETag present sites that have it vs sites that don't
83.4% of sites send ETag headers (158,569 of 190,130). With send: INP 100ms, 92.1% pass. Without: INP 95ms, 90.2% pass. computed
Why this matters for the Core Web Vitals, and where to start fixing it
An ETag is a validator. When a cached file expires, the browser can ask the server whether it changed and get a tiny 304 Not Modified back instead of the whole file. Without a validator, an expired file is downloaded again in full.
Validators matter most for the in-between caching strategies: short TTLs with frequent revisits. For hashed, immutable assets they are redundant because the file never changes under its name. One thing to watch on multi-server setups: default ETags can differ per server, and a mismatched ETag silently turns every revalidation into a full download.
Chrome field data from 189,915 sites, representing millions of real page loads. How we measured.
Live queries (1) — admin only
SELECT m.headers.has_etag 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_etag;