At a glance the headline numbers for ETag present
Whether responses carry ETag validators.
ETag present sites that have it vs sites that don't
0.0% of sites send ETag headers (0 of 0). With send: LCP —, 0.0% pass. Without: LCP —, 0.0% 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."desktop".lcp, 0.5) AS median,
COUNT(*) FILTER (WHERE crux."desktop".lcp IS NOT NULL AND crux."desktop".lcp <= 2500) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE crux."desktop".lcp IS NOT NULL), 0) AS good,
COUNT(*) FILTER (WHERE crux."desktop".lcp IS NOT NULL AND crux."desktop".lcp > 2500 AND crux."desktop".lcp <= 4000) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE crux."desktop".lcp IS NOT NULL), 0) AS ni,
COUNT(*) FILTER (WHERE crux."desktop".lcp IS NOT NULL AND crux."desktop".lcp > 4000) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE crux."desktop".lcp IS NOT NULL), 0) AS poor
FROM sites WHERE 1=1 GROUP BY m.headers.has_etag;