At a glance the headline numbers for Preloaded fonts
How many fonts the page preloads.
The typical site preloads 0 fonts.
Distribution & median INP site count and median INP at each level of preloaded fonts
Passing INP by preloaded fonts which level passes the INP most often
Preloaded fonts 0. p75 0. p99 7. At the low end (0–0): INP 96ms. At the high end (1+): INP 110ms. computed
Why this matters for the Core Web Vitals, and where to start fixing it
Fonts are discovered late by design. The browser must download the CSS, parse it, and find rendered text that actually uses an @font-face before it requests the font file. A preload skips that whole chain and starts the download with the HTML.
Preload the one or two fonts that render above-the-fold text, and stop there. Every preloaded font competes with the LCP image for early bandwidth. A preloaded font that is not used above the fold made the page slower for nothing.
Chrome field data from 189,915 sites, representing millions of real page loads. How we measured.
Live queries (2) — admin only
SELECT COUNT(*) AS count,
quantile_disc(m.fonts.preloaded_count, 0.10) AS p10,
quantile_disc(m.fonts.preloaded_count, 0.25) AS p25,
quantile_disc(m.fonts.preloaded_count, 0.50) AS p50,
quantile_disc(m.fonts.preloaded_count, 0.75) AS p75,
quantile_disc(m.fonts.preloaded_count, 0.90) AS p90,
quantile_disc(m.fonts.preloaded_count, 0.99) AS p99
FROM sites WHERE m.fonts.preloaded_count IS NOT NULL;
SELECT CASE WHEN m.fonts.preloaded_count >= 0 AND m.fonts.preloaded_count < 1 THEN 0 WHEN m.fonts.preloaded_count >= 1 THEN 1 END AS bucket_idx, 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_pct
FROM sites WHERE m.fonts.preloaded_count IS NOT NULL GROUP BY bucket_idx;