Pulseby Kraavon
TBT

Total Blocking Time

Total Blocking Time adds up the portion of every long task that exceeds 50 milliseconds, between First Contentful Paint and the point the page becomes interactive. It quantifies how long the page was visibly present but unable to respond.

Good

Under 200ms

Needs work

200ms to 600ms

Poor

Over 600ms

Why it matters

Total Blocking Time is the best signal a lab test can give you about responsiveness. Interaction to Next Paint needs real interactions and cannot be measured in a scripted run, but the underlying cause is the same: a main thread too busy to answer. A page with high TBT will almost certainly have poor INP in the field.

How it is measured

Any task holding the main thread for more than 50 milliseconds is a long task. The blocking portion is everything past that 50 millisecond allowance, so a 120 millisecond task contributes 70 milliseconds. Those contributions are summed across the loading window.

What makes it slow

Large JavaScript bundles

Parsing and compiling JavaScript is main thread work before a single line runs. Shipping a megabyte of JavaScript costs several hundred milliseconds on a mid tier phone before execution even begins.

Hydration

Framework pages rebuild their component tree and attach handlers after the server rendered HTML arrives. On a large page this is frequently the single longest task in the profile.

Third party scripts

Tag managers, analytics, session recording and chat widgets execute on the same thread as your code. They are often the largest contributor and the least visible, because they do not appear in your bundle analysis.

Expensive work at startup

Parsing large JSON payloads, building indexes, or initialising a client side store on load all block the thread at exactly the moment the visitor is most likely to interact.

How to improve it

Ordered roughly by return on effort. The quick wins are usually worth doing first even when the deeper problem is elsewhere.

Defer third party scripts

Quick win

Load analytics and widgets after the page is interactive, or on first interaction. Very little of it needs to run during load, and the difference to TBT is usually immediate.

Remove JavaScript that is never executed

Quick win

Coverage tooling shows how much of each bundle actually runs during load. Anything unused is pure cost: downloaded, parsed and compiled for nothing.

Code split along routes and interactions

Moderate

Ship what the current page needs and dynamic import the rest. Below the fold components, modals and editors rarely need to be in the initial bundle.

Break up long tasks

Moderate

Split work into chunks and yield between them so the browser can service input. A task that takes the same total time but yields regularly does far less damage.

Reduce or stream hydration

Involved

Hydrate only the components that need interactivity, or stream it progressively so the page becomes usable in pieces rather than all at once.

How Pulse reports this

Because a scripted audit cannot produce a real INP, Pulse reports Total Blocking Time as the closest lab equivalent and says so explicitly on the report. The main thread breakdown in the performance section shows where the time went, split between script evaluation, style and layout, parsing and rendering.

Common questions

What is a good TBT?

Under 200 milliseconds is good, 200 to 600 milliseconds needs improvement, and over 600 milliseconds is poor.

Is TBT the same as INP?

No. TBT is measured in the lab during loading and sums blocked main thread time. INP is measured from real interactions across the whole visit. They correlate strongly because they share a cause, which is why TBT is the standard stand in when field data is unavailable.

Why is my TBT zero on desktop but high on mobile?

Mobile testing applies a four times CPU slowdown to approximate a mid tier phone. Work that fits inside 50 milliseconds on a laptop takes 200 on that profile, which turns tasks that were not long into long ones.

Related metrics

Measure TBT on your own page

An audit runs in a real Chromium browser and reports TBT alongside every other metric, with the measured saving behind each recommendation.