🎉 USE O CUPOM FIM.DE.SEMANA.FULL | 20% OFF acima de R$ 100,00

Como corrigir TBT alto e JavaScript bloqueante no WordPress

Time Full Services Time Full Services
Tipo Performance & Velocidade
Nome do erro TBT alto e JavaScript bloqueante EN: High Total Blocking Time (TBT)
Severidade Grave
Descrição TBT alto no WordPress é quando o Total Blocking Time, a soma do tempo em que a thread principal fica bloqueada por JavaScript entre o primeiro render e a interatividade, passa de 200ms no laboratório. Costuma vir de scripts pesados, plugins que carregam JS no carregamento inicial e código de terceiros como rastreadores.

O que é o TBT alto no WordPress?

O TBT alto no WordPress é uma métrica de laboratório do PageSpeed que mede quanto tempo a thread principal do navegador fica ocupada executando JavaScript e não consegue responder ao usuário. O Total Blocking Time soma os trechos acima de 50ms de cada tarefa longa entre o First Contentful Paint e o momento em que a página fica interativa. A meta no laboratório é abaixo de 200ms; entre 200ms e 600ms o status é “precisa melhorar” e acima de 600ms é considerado ruim. Um TBT alto é o principal proxy de laboratório para o INP de campo, e quase sempre aponta para JavaScript demais executando cedo.

Como identificar

  • “TBT acima de 200ms” no relatório de performance do PageSpeed Insights, em amarelo ou vermelho.
  • O diagnóstico “Minimize main-thread work” aparece com vários segundos no PageSpeed Insights.
  • O diagnóstico “Reduce JavaScript execution time” lista scripts custosos no Lighthouse.
  • A página parece carregada, mas não responde a cliques ou rolagem por alguns instantes.

Como prevenir

  • Mantenha o adiamento do JavaScript ativo e limite scripts de terceiros ao mínimo necessário
  • Carregue widgets pesados (chat, mapa, vídeo) sob demanda, na interação do usuário
  • Audite o impacto de cada plugin no JavaScript antes de instalar e remova os que enfileiram scripts sem uso

Causa

  • Plugins que enfileiram arquivos JavaScript grandes no carregamento inicial de todas as páginas, mesmo onde não são usados.
  • Scripts de terceiros (Google Tag Manager, pixels de anúncios, chats e mapas) executando na thread principal antes da interatividade.
  • Page builders e sliders que carregam bibliotecas JavaScript completas para renderizar componentes simples.
  • Falta de adiamento (defer) e de carregamento sob demanda, fazendo todo o JavaScript bloquear a thread de uma vez.
  • Tema que combina muitos scripts num único arquivo enorme, criando uma tarefa longa que segura a thread.

Como resolver

  1. Identifique os scripts mais custosos: rode o PageSpeed Insights e abra os diagnósticos "Reduzir o tempo de execução do JavaScript" e "Minimizar o trabalho da thread principal" para ver quais arquivos consomem mais tempo de CPU.
  2. Adie o JavaScript não crítico: no plugin de performance, ative o adiamento (defer) do JavaScript para que os scripts só executem depois que o HTML for analisado, liberando a thread durante o render inicial.
  3. Carregue scripts de terceiros sob demanda: atrase chats, mapas e widgets de redes sociais para carregar na interação do usuário, e mova o Tag Manager para o final ou para um web worker, tirando-os da execução inicial.
  4. Remova plugins e scripts não usados por página: desative recursos que enfileiram JavaScript onde ele não é necessário e limite o carregamento de bibliotecas de slider e formulário às páginas que realmente as usam.
  5. Divida e minifique os arquivos JavaScript: minifique o JavaScript e evite combinar tudo num único arquivo gigante; tarefas menores quebram a thread em pedaços e reduzem o tempo de bloqueio contínuo.
  6. Meça de novo no PageSpeed: rode o teste outra vez e confirme se o TBT caiu de 200ms; acompanhe também o INP nos dados de campo, que refletem usuários reais.
HTML
<!-- Adia o JS nao critico: so executa apos o HTML ser analisado -->
<script src="/wp-content/plugins/exemplo/app.js" defer></script>

<!-- Carrega o script de terceiros (chat/mapa) so na 1a interacao do usuario -->
<script>
  function carregaTerceiro() {
    var s = document.createElement('script');
    s.src = 'https://exemplo-terceiro.com/widget.js';
    document.body.appendChild(s);
    ['scroll','mousemove','touchstart','keydown'].forEach(function (ev) {
      window.removeEventListener(ev, carregaTerceiro);
    });
  }
  ['scroll','mousemove','touchstart','keydown'].forEach(function (ev) {
    window.addEventListener(ev, carregaTerceiro, { once: true, passive: true });
  });
</script>

Perguntas frequentes

Qual é o valor ideal de TBT no WordPress?
A meta no teste de laboratório do PageSpeed é TBT abaixo de 200 milissegundos. Entre 200ms e 600ms o status é "precisa melhorar" e acima de 600ms é considerado ruim, sinalizando JavaScript demais bloqueando a thread principal.
Qual a diferença entre TBT e INP?
O TBT é uma métrica de laboratório que soma o tempo de bloqueio da thread durante o carregamento; o INP é uma métrica de campo que mede a resposta a interações reais ao longo da visita. O TBT é o melhor proxy de laboratório para prever um INP ruim.
Adiar o JavaScript pode quebrar o site?
Pode, se um script depender de outro que ainda não executou ou esperar um evento já disparado. Por isso, ative o defer e teste o site (menus, sliders, formulários) antes de publicar, excluindo do adiamento os scripts que quebrarem.
Scripts de terceiros contam para o TBT?
Sim, e costumam ser a maior fatia. Tag managers, pixels de anúncios, chats e mapas executam na thread principal e somam tempo de bloqueio. Carregá-los sob demanda, na interação do usuário, reduz bastante o TBT.
Plugins de cache ajudam a baixar o TBT?
Ajudam quando trazem recursos de otimização de JavaScript, como adiar, minificar e atrasar scripts de terceiros. Mas configure com cuidado, porque adiar scripts essenciais sem testar pode combinar mal e quebrar funcionalidades.
Reduzi o TBT no laboratório mas o INP de campo continua ruim. Por quê?
Porque os dados de campo são uma média de 28 dias de usuários reais e demoram a refletir as mudanças. Além disso, o INP também sofre com handlers de evento lentos durante a navegação, que o TBT de carregamento não captura inteiramente.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes