Total Blocking Time (TBT): Making Your Website Responsive to User Input

7 min read

What is Total Blocking Time?

Have you ever clicked a button on a website and nothing happened? Or tried to scroll and the page froze for a moment? That frustrating delay is what Total Blocking Time (TBT) measures.

Total Blocking Time measures the total amount of time when a webpage is loaded but can't respond to user interactions (like clicks, taps, or keyboard presses) because the browser's main thread is busy processing other tasks. In simpler terms, it's the total time your website is "frozen" and unresponsive to visitors.

What's a good Total Blocking Time?

  • Good: Under 200 milliseconds (Your site feels responsive)
  • Needs Improvement: 200-600 milliseconds (Users notice slight delays)
  • Poor: Above 600 milliseconds (Your site feels sluggish and unresponsive)

Why Total Blocking Time Matters

TBT is about the responsiveness of your website—how quickly it reacts when users try to interact with it. Here's why it's crucial:

  • User Frustration: Nothing frustrates visitors more than clicking something and having nothing happen. Each moment of unresponsiveness makes your site feel broken.
  • Lower Engagement: Users who experience delays when trying to interact with your site are more likely to leave and less likely to return.
  • Reduced Conversions: Unresponsive websites see lower conversion rates. If a "Buy Now" button doesn't respond immediately, you're losing sales.
  • Search Engine Rankings: As a part of Google's Core Web Vitals, TBT affects your search engine visibility and rankings.

Think of TBT as measuring the "frustration factor" of your website. It's not just about how fast your site loads visually—it's about how quickly visitors can actually use it.

Understanding the Main Thread and Blocking

To understand Total Blocking Time, you need to know a bit about how browsers work:

  • The Main Thread: Browsers use a single main thread to process most tasks, including responding to user clicks, running JavaScript, calculating styles, and rendering the page.
  • Long Tasks: When a task takes more than 50 milliseconds to execute, it's considered a "long task" that can block the main thread.
  • Blocking Time: The "blocking time" is the portion of a long task that exceeds 50ms. For example, if a task takes 120ms, the blocking time is 70ms (120ms - 50ms).
  • Total Blocking Time: TBT adds up all these blocking portions between First Contentful Paint (when content first appears) and Time to Interactive (when the page becomes fully interactive).

Why 50 milliseconds?

Research shows that humans perceive interactions as "instant" when they take less than 50ms. Anything longer starts to feel delayed. That's why 50ms is used as the threshold for defining a "long task."

How to Measure Your Website's TBT

The best way to measure Total Blocking Time is with performance monitoring tools. While your website is loading, these tools track how long the main thread is blocked and unable to respond to user input.

For accurate TBT measurements, it's important to test under realistic conditions including:

  • On actual devices - Desktop and mobile experiences can differ significantly
  • Under various network conditions - Test with fast, moderate, and slow connections
  • Multiple pages - Don't just test your homepage, check key pages like product pages, signup forms, and checkout processes

Remember that TBT can vary significantly between desktop and mobile devices. Mobile devices typically have less processing power, so they often experience longer blocking times with the same code.

8 Effective Ways to Improve Your Total Blocking Time

1. Reduce JavaScript Size and Complexity

The number one cause of high TBT is too much JavaScript loading and executing during page load.

Simple fix: Look for unused JavaScript that can be removed, especially in third-party tools and analytics. Use "code splitting" to load only essential JavaScript first and delay the rest.

2. Defer Non-Critical JavaScript

Not all JavaScript needs to load immediately when your page loads. Much of it can be loaded later.

Simple fix: Add the "defer" attribute to script tags that aren't needed for initial page rendering. For WordPress sites, plugins like WP Rocket can help defer JavaScript automatically.

3. Minimize Third-Party Scripts

Third-party tools like analytics, marketing trackers, and social media widgets often add considerable JavaScript that blocks the main thread.

Simple fix: Audit your website for all third-party scripts and remove any that aren't providing clear value. For those you keep, consider loading them after your page becomes interactive.

4. Break Up Long Tasks

Sometimes you need complex JavaScript to run, but you can break it into smaller pieces that allow the main thread to handle user interactions in between.

Simple fix: If you have custom JavaScript, work with your developer to split long processes into smaller chunks using techniques like setTimeout() or requestAnimationFrame().

5. Use Web Workers for Heavy Processing

Web Workers allow JavaScript to run in a background thread, keeping the main thread free to respond to user interactions.

Simple fix: For complex calculations, data processing, or other CPU-intensive tasks, move them to Web Workers so they don't block the main thread.

6. Optimize Your Images and Media

While images themselves don't block the main thread, the layout calculations they trigger when loading can cause blocking.

Simple fix: Always specify image dimensions in your HTML or CSS so the browser doesn't have to recalculate layout when images load. Use properly sized images for different devices.

7. Simplify Complex CSS Selectors

Complex CSS selectors and animations can cause significant main thread blocking while the browser calculates styles and layouts.

Simple fix: Use simpler CSS selectors where possible and be cautious with CSS animations. Consider using the "will-change" property to prepare the browser for elements that will animate.

8. Use a Performance Budget

A "performance budget" sets limits on the amount of code your site can load, helping prevent TBT from creeping up over time.

Simple fix: Set a maximum size for your JavaScript (e.g., "no more than 300KB of JavaScript on any page") and stick to it when adding new features.

Common Total Blocking Time Issues and Solutions

Problem: Heavy JavaScript Frameworks

What's happening: Modern JavaScript frameworks can add significant processing time during initial page load.

Simple solution: Consider server-side rendering or static site generation to reduce client-side processing. If using React, consider using React.lazy() for component-level code splitting.

Problem: Multiple Analytics and Tracking Scripts

What's happening: Many websites load multiple analytics, marketing, and tracking scripts that compete for main thread time.

Simple solution: Consider consolidating analytics providers or using a tag manager that loads these scripts more efficiently. Delay loading analytics until after the page is interactive.

Problem: Animation and Scroll Effects

What's happening: Fancy animations, parallax effects, and scroll-triggered animations often cause significant main thread blocking.

Simple solution: Use CSS animations where possible (they can often run off the main thread), use the will-change property, and consider simpler effects that achieve similar visual appeal with less processing.

Problem: Font Loading Causing Layout Shifts

What's happening: When web fonts load, they can trigger layout recalculations that block the main thread.

Simple solution: Use font-display: swap to prevent font loading from blocking rendering, preload critical fonts, and consider using system fonts for better performance.

How TBT Relates to Other Performance Metrics

Total Blocking Time is part of a set of metrics that work together to measure different aspects of website performance:

MetricWhat It MeasuresHow It Relates to TBT
First Input Delay (FID)How long it takes for the page to respond to the first user interactionFID measures a single interaction delay, while TBT measures the total time the page is unresponsive
Time to Interactive (TTI)When the page becomes fully interactiveTBT measures the blocking time between First Contentful Paint and Time to Interactive
Largest Contentful Paint (LCP)When the main content finishes loadingA page might look loaded (good LCP) but still have high TBT making it unusable
Cumulative Layout Shift (CLS)How much elements move around as the page loadsBoth CLS and TBT contribute to a frustrating user experience in different ways

The key relationship to understand is that a page might visually load quickly (good LCP) but remain unresponsive (poor TBT). Both aspects need to be optimized for a truly fast-feeling website.

Real-World Benefits of Improving TBT

Companies that have focused on reducing their Total Blocking Time have seen significant improvements in user experience and business metrics:

  • E-commerce clothing retailer reduced their TBT by 65% and saw a 15% increase in conversion rate as customers could interact with product pages more quickly.
  • News website cut their TBT by 40% and increased their average pages per session by 28% as readers could more easily navigate between articles.
  • SaaS dashboard application improved their TBT by 75% and saw customer satisfaction scores increase by 18% as their application felt more responsive.
  • Online reservation system reduced TBT by 50% and decreased form abandonment by 23% as users could complete reservation forms without delays.

These examples demonstrate that responsiveness isn't just a technical concern—it directly affects how people use your website and whether they achieve their goals (and yours).

Conclusion: Responsiveness Creates Trust

Total Blocking Time is about more than just technical performance—it's about keeping the promises your website makes to visitors. When someone clicks a button, they expect an immediate response. Each millisecond of delay breaks that trust a little bit.

By focusing on reducing your TBT, you're not just improving a technical metric; you're creating a more reliable, trustworthy experience that makes visitors feel in control. An unresponsive website, no matter how beautiful, ultimately creates frustration and lost opportunities.

The good news is that the same optimizations that improve TBT often improve other aspects of your website performance as well. By reducing JavaScript, deferring non-critical resources, and simplifying what happens during page load, you create a website that not only loads quickly but feels smooth and responsive throughout the entire user journey.

Ready to make your website more responsive?

Greadme's easy-to-use tools can help you identify exactly what's causing your Total Blocking Time issues and provide simple, step-by-step instructions to fix them—even if you're not technically minded.

Improve Your Website Responsiveness Today