Total Blocking Time (TBT)

Total Blocking Time (TBT) is an important lab metric for measuring load responsiveness. It measures the total time after First Contentful Paint (FCP) where the main thread was blocked for long enough to prevent responses to user input. A low TBT helps ensure that the page is usable.

By default, Lighthouse stops monitoring TBT after Time to Interactive (TTI), as do some other lab tools that measure page load. For more information, see How does TBT relate to TTI?.

The main thread is considered "blocked" any time there's a Long Task—a task that runs on the main thread for more than 50 milliseconds (ms). We say the main thread is "blocked" because the browser can't interrupt a task that's in progress. If a user tries to interact with the page in the middle of a long task, the browser must wait for the task to finish before it can respond.

If the task the main thread is blocked for over 50 ms, the user will likely will notice the delay and perceive the page as sluggish or broken.

The blocking time of a given long task is its duration in excess of 50 ms. The total blocking time for a page is the sum of the blocking time for each long task that happens after FCP for the measured timeframe (typically TTI for page load tools, or the total trace time for other tooling).

For example, consider the following diagram of the browser's main thread during page load:

A tasks timeline on the main thread
A timeline of tasks on the main thread.

This timeline has five tasks, three of which are Long Tasks because their duration exceeds 50 ms. The next diagram shows the blocking time for each of the long tasks:

A tasks timeline on the main thread showing blocking time
The same tasks, with blocking times marked.

The total time spent running tasks on the main thread is 560 ms, and 345 ms of that time is considered blocking time.

Task duration Task blocking time
Task one 250 ms 200 ms
Task two 90 ms 40 ms
Task three 35 ms 0 ms
Task four 30 ms 0 ms
Task five 155 ms 105 ms
Total Blocking Time 345 ms

How does TBT relate to TTI?

TBT is measured over a time period. For some lab tools that traditionally measure page loads, including Lighthouse, TBT has been measured until TTI because that helps quantify the severity of how non-interactive a page is before it becomes reliably interactive. However, you can continue to measure TBT beyond TTI, for example in Lighthouse Timespan mode.

TTI considers a page "reliably interactive" if the main thread has been free of long tasks for at least five seconds. This means that three 51 ms tasks spread out over 10 seconds can push back TTI just as far as a single 10-second task.

However, these two scenarios feel very different to a user trying to interact with the page. Three 51 ms tasks have a TBT of 3 ms, whereas a single 10-second task has a TBT of 9950 ms, creating a much worse user experience.

Because TBT represents outliers more accurately, it's often a more helpful metric than TTI, even when TBT measurement stops at TTI.

Measure TBT

TBT is a metric that should be measured in the lab. The best way to measure TBT is to run a Lighthouse performance audit on your site. See the Lighthouse documentation on TBT for usage details.

Lab tools

What's a good TBT score?

To provide a good user experience, sites should have a TBT of less than 200 milliseconds when tested on average mobile hardware.

For details on how your page's TBT affects your Lighthouse performance score, see How Lighthouse determines your TBT score.

Improve TBT

To learn how to improve TBT for a specific site, run a Lighthouse performance audit and pay attention to any specific opportunities the audit suggests.

To learn how to improve TBT in general (for any site), refer to the following performance guides: