Script coverage (used vs unused)

Of the JavaScript shipped, how much actually ran during load (used vs unused bytes, Chrome coverage).

Field data PhoneDesktopAll Scope All sites Q2 2026 edition · Desktop field outcomes
Metric LCP INP CLS
1

At a glance the headline numbers for Script coverage (used vs unused)

Of the JavaScript shipped, how much actually ran during load (used vs unused bytes, Chrome coverage).

1.9s
Median INP stack
the measures at p50
54%
Biggest: Used kb
1.0s of the stack
1.7s
Over budget at p50
vs the 200ms target
+0.37
Strongest correlation
Used kb vs INP (Spearman)

866 KB of JavaScript on the typical page never ran during load.

The State of Web Vitals · Q2 2026 · 189,915 sites · desktop field datacorewebvitals.io/state-of-cwv
2

Where the milliseconds go the phases at the median, against the budget

Used kb1.0s54% of the total Unused kb866ms46% of the total 200ms target
Used kb 1.0s · 54% Unused kb 866ms · 46%

At the median the whole stack uses 1.9s - already past the 200ms INP budget. The biggest piece is Used kb at 1.0s, 54% of the total. computed

The State of Web Vitals · Q2 2026 · 189,915 sites · desktop field datacorewebvitals.io/state-of-cwv
3

Passing LCP per phase the share of sites passing, by how long each phase takes

100%75%50%25%
Used kb Unused kb

Each line is one phase: left = sites where it is quick, right = sites where it drags (buckets, short to long). The steeper the fall, the more that phase decides LCP.

Unused kb falls hardest: from its fastest to its slowest bucket the LCP pass rate drops 16 points, down to 72%. computed

The State of Web Vitals · Q2 2026 · 189,915 sites · desktop field datacorewebvitals.io/state-of-cwv
4

The 2 distributions how each phase spreads across sites - color is the share passing in that range

Used kb p50 1.0 MB · p75 1.9 MB
229–311>p98
Unused kb p50 866 KB · p75 1.5 MB
66.4–100>p98
mostly passing tipping mostly failing

Used kb stays green across its whole range: it never decides LCP. Used kb turns red in its tail - the failing sites live there. computed

The State of Web Vitals · Q2 2026 · 189,915 sites · desktop field datacorewebvitals.io/state-of-cwv
5

Why this matters for the Core Web Vitals, and where to start fixing it

Chrome's coverage data splits the JavaScript you ship into bytes that ran during load and bytes that did not. The unused half still cost the full price: downloaded, parsed and compiled on the main thread, all before doing nothing.

Unused JavaScript is usually whole features shipped everywhere: the checkout bundle on the blog, admin widgets for anonymous visitors. Code splitting per route is the structural fix. Deleting dead dependencies is the cheap one.

How does unused JavaScript affect the Core Web Vitals?

Passing INP barely moves across the range: 99% at one end, 95% at the other. This signal does not separate passing sites from failing ones.

Related signals Image source mix → Page weight & requests → DOM depth → Scripts per page → Chrome field data from 189,915 sites, representing millions of real page loads · How we measured