Skip to content
Healthy URL healthyURL
← Fix guides

The page is unresponsive while it loads

Total Blocking Time measures how long the page ignores taps and clicks because scripts are busy. High values make a site feel broken even when everything is visible.

Performance perf.tbt.high

When someone lands on your page, they often see the content before they can actually use it. If the browser is busy running scripts during those first few seconds, it can't respond to taps, clicks, or typing. The page looks ready, but nothing happens when the visitor interacts with it. This gap between "looks done" and "actually works" is what makes a site feel broken.

Why it matters

Visitors who tap a button and get no response often tap again, give up, or leave entirely. This delay hits hardest on phones and older devices, which are slower at processing scripts. A page that ignores input in its first moments loses trust and conversions even when the design is perfect.

How to fix it

The core cause is JavaScript doing too much work too early. The main levers are: load less script, load it later, and break up long tasks.

Reduce and defer scripts

Add defer (or async where appropriate) so scripts don't block the page while it loads:

<script src="/js/app.js" defer></script>

defer runs the script after the page is parsed, in order. async runs it as soon as it's ready and suits independent scripts like analytics.

WordPress

  • Audit plugins and remove any you don't actively use — each can add its own scripts.
  • Use a performance plugin (for example WP Rocket, Perfmatters, or FlyingPress) to defer/delay JavaScript and load non-critical scripts only on user interaction.
  • Avoid loading heavy page builders or sliders on pages that don't need them.

Third-party scripts (all platforms)

Chat widgets, ad tags, A/B testing, and heatmap tools are common culprits. Load them after interaction or on a delay rather than at page start, and remove any you no longer use.

Nginx / Apache

The server doesn't run the JavaScript, but faster delivery helps the browser start and finish sooner. Enable compression and caching.

Nginx

gzip on;
gzip_types application/javascript text/css;

Apache

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE application/javascript text/css
</IfModule>

Cloudflare

  • Turn on Auto Minify for JavaScript (Speed → Optimization).
  • Use Brotli compression.
  • Avoid Rocket Loader if it reorders scripts in ways that break your site — test before leaving it on.

If you have a developer

  • Code-split large bundles so only what the page needs is shipped.
  • Break up long JavaScript tasks so the browser can respond between them.
  • Remove unused libraries and polyfills.

How to check it worked

Reload the page and, during the first few seconds while it's still loading, try tapping links and buttons — they should respond without a frozen pause. Testing on a mid-range phone or with a throttled connection gives the most realistic result.

Does this affect your site?

A scan takes under a minute and checks this along with eighteen other things. No account needed.