dotvitals

Loading the list of pages…

↑↓ to moveEnter to openEsc to close

The page loads JavaScript it never runs

InfoHigh confidenceperf.lab.unused-javascript

What this check looks for

‹scope› downloads ‹total js› of JavaScript, and roughly ‹unused bytes› of it never runs during the page load. ‹responsiveness›

Why it matters

This is an observation and it deducts nothing. A page carrying a lot of code is not by itself doing anything wrong: the certain cost of code that never runs is the bytes it costs to download, and the parse cost it is famous for is far smaller, because an engine only fully compiles a function when something calls it. We charge for this where the field data shows visitors are held up.

What it costs your score

This check never deducts. It reports a fact — or reports that something could not be verified — and is shown on the report without moving the score.

Severity
info
Default confidence
high
Status when triggered
info
Deduction
0 points
Family cap
none
Category
Performance
Module
Perf lab
Fix owned by
user
In the ruleset since
2026.09

How the whole score is calculated

Technical detail

JavaScript transferred: **‹total js›** across ‹scripts›; unused on load: **‹unused bytes›** (‹unused percent›%).

‹responsiveness detail›

‹detail›

This came from **one page load we performed**, not from your visitors. A lab measurement is reproducible and tells you exactly which bytes and which resources are responsible — which is why the numbers below are byte counts and resource lists rather than a score. What real visitors experience is in the field-data section, which is the evidence this report scores Core Web Vitals on.

"Unused" means the bytes were never executed during this load. Some of it is code behind an interaction that has not happened yet, which is normal and is not waste. The figure is worth knowing for what it costs on the wire: every byte of it was downloaded on a connection somebody is paying for.

If you want to act on it anyway, the change is code splitting rather than deletion — load a route's code with the route and an interaction's code with the interaction. It is worth an afternoon when the bundles are already being touched, and it is not worth rearranging a working build for on the strength of this number alone.

We do not split these bytes into yours and a third party's. The only thing we can see is the address each script was served from, and that does not answer the question: a site's own bundles very often live on a different domain from its pages, so the split would misattribute the largest sites' own code. The per-file list above carries the addresses, and you will recognise which are yours.

Standards and references

Test this on your domain

Run the check that produces this finding, on its own, against any domain.

Open the perf lab checker