Glossary
Total blocking time
Total blocking time adds up the portions of long main-thread tasks that exceed fifty milliseconds, between the first paint and the point the page becomes interactive. While a task is running the page cannot respond to anything, so the total approximates how long a visitor's clicks and taps would have been ignored. It is a laboratory measurement, which is precisely what makes it reproducible enough to optimise against.
Why fifty milliseconds is the threshold
The browser handles interaction on the same thread that runs scripts, so a running task means input waits.
A response within about fifty milliseconds feels immediate, so work under that ceiling is not experienced as unresponsiveness.
Only the excess counts: a seventy-millisecond task contributes twenty, and a task under the threshold contributes nothing.
Which means the measurement targets the long tasks specifically, rather than penalising a page for doing work at all.
Ten tasks of forty milliseconds contribute zero and ten of a hundred contribute five hundred, which is the distinction the threshold draws.
What produces long tasks
Parsing and executing a large JavaScript bundle, which is usually the largest single contributor.
Hydrating a server-rendered page, where the framework walks the whole tree attaching behaviour.
Third-party scripts, which are frequently the worst offenders and the ones nobody profiles because they are not your code.
Expensive layout work triggered by script reading and writing style properties in an interleaved pattern.
Large synchronous data processing on load, which is rare and dramatic when it happens.
How it relates to interaction responsiveness
The field measurement of interaction responsiveness reports what real visitors experienced when they interacted.
Total blocking time is its laboratory proxy: it correlates with it and is measured without needing real traffic.
The correlation is not exact, because the field measurement covers the whole visit while this covers the load.
Which is why a page with a good blocking time and poor field responsiveness usually has expensive handlers rather than a heavy load.
And why improving this is a reasonable way to move that, without being a guarantee.
What reduces it
Shipping less JavaScript, which is the intervention that works and the one nobody wants to hear.
Splitting bundles so that only what the current route needs is parsed and executed.
Deferring or removing third-party scripts, or loading them after interaction rather than during load.
Breaking long tasks into shorter ones, which yields to the browser between them and lets input be handled.
Moving heavy computation off the main thread, which suits genuine processing and not framework overhead.
How it is observed
Rendering measurements are taken during the scan, alongside the payload figures that explain them.
JavaScript payload and the heaviest individual script files are reported, since those are what the measurement usually reflects.
Third-party resources are listed separately, which is where the contribution is frequently concentrated.
The coverage of the measurement is stated, since a figure over part of the resource inventory is not comparable with one over all of it.
Frequently asked questions
- Why does a forty-millisecond task count for nothing?
- Because only the portion beyond fifty milliseconds counts. Work under that ceiling is not experienced as unresponsiveness, so the measurement targets long tasks specifically.
- Is this the same as interaction responsiveness?
- It is the laboratory proxy for it. The field measurement covers the whole visit; this covers the load. They correlate and are not the same number.
- What reduces it most?
- Shipping less JavaScript. Splitting bundles and deferring third-party scripts help; moving work off the main thread suits genuine computation rather than framework overhead.
Sources
Related
VeriFixScan crawls a site and applies its checks to every page it reaches, keeping the evidence behind each finding. Scanning one website is free.
Scan a website