Skip to main content

Confirm

Are you sure?

Glossary

Total Blocking Time (TBT)

The time a loading page spends too busy to answer a tap.

By · Last updated: September 2026

TL;DR

Total Blocking Time (TBT) is a lab metric that adds up, for every main-thread task longer than 50 ms after First Contentful Paint, the time beyond those 50 ms. It measures how long the page was too busy to respond to input while loading. 200 ms or less is good; it is the lab stand-in for INP.

Free plan, no credit card. 1,000 credits a month.

How it works

How it is calculated

The browser's main thread does one task at a time: parsing, running scripts, layout. A task over 50 ms is a long task, and while it runs, input waits. TBT counts only the part of each long task past 50 ms — the blocking part — and sums them between First Contentful Paint and the point the page is reliably interactive.

TaskDurationBlocking time
Parse and run the framework bundle250 ms200 ms
Hydrate the page90 ms40 ms
Analytics init35 ms0 ms (under 50)
Total Blocking Time240 ms

This page is just over the 200 ms line. Splitting the first task in two 125 ms halves would bring its contribution to 150 ms and the total to 190 ms.

In practice

Thresholds and weight

Lighthouse scores mobile TBT as good at 200 ms or less and poor above 600 ms; desktop runs are scored against tighter values. In Lighthouse 13 it is the single heaviest input to the performance score:

MetricWeight in the Lighthouse 13 performance score
Total Blocking Time (TBT)30%
Largest Contentful Paint (LCP)25%
Cumulative Layout Shift (CLS)25%
First Contentful Paint (FCP)10%
Speed Index (SI)10%

The usual fixes are less JavaScript on load: code-split by route, defer third-party scripts, hydrate less of the page, and break up long functions so the browser can handle input in between.

URLpipe

Measuring TBT with URLpipe

/lighthouse returns total-blocking-time in metrics, in milliseconds, with its score. The default mobile run applies a 4× CPU slowdown, so TBT comes out far higher than on a developer's machine — on purpose, since that is closer to a mid-range phone. include_audits: "true" adds the diagnostics that name the scripts responsible.

FAQ

Frequently asked questions

What is a good Total Blocking Time?
200 ms or less in a Lighthouse mobile run. Above 600 ms is poor.
Is TBT a Core Web Vital?
No. It is a lab metric. It stands in for Interaction to Next Paint, which needs real users interacting and can't be measured in a page-load audit.
Why is my TBT so high on mobile?
Lighthouse's mobile preset slows the CPU four times to simulate a mid-range phone. JavaScript that takes 60 ms on a laptop becomes a long task.

See it on your own pages.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.