Una página puede parecer visualmente cargada por completo y, aun así, no responder cuando alguien intenta hacer clic en un botón, porque el navegador está ocupado procesando JavaScript en segundo plano. El TBT (Total Blocking Time, «tiempo de bloqueo total») mide precisamente esa frustración técnica: la suma de todo el tiempo durante el cual el navegador está demasiado ocupado como para responder con rapidez a una interacción del usuario.
Cómo se calcula, sin entrar en tecnicismos excesivos
El navegador procesa el código de una página en pequeñas tareas. Si una de esas tareas tarda más de 50 milisegundos en completarse, cualquier tiempo por encima de ese umbral se considera «tiempo de bloqueo», porque durante ese exceso el navegador no puede atender ninguna interacción del usuario. El TBT suma todos esos excesos entre el primer pintado de contenido (FCP) y el momento en que la página queda completamente interactiva.
Por qué importa tanto para la experiencia real, más allá de lo visual
- Un usuario puede ver la página cargada pero experimentar clics que no responden, un formulario que tarda en reaccionar, o un menú que no se despliega de inmediato.
- Esta frustración de «veo la página pero no puedo interactuar con ella» es precisamente lo que el TBT intenta cuantificar de forma objetiva.
- Es uno de los factores que Lighthouse pondera con más peso dentro de su puntuación general de rendimiento.
Su relación con el INP de los Core Web Vitals
El TBT es una métrica de laboratorio (medida en condiciones controladas por herramientas como Lighthouse), mientras que el INP, que sí forma parte de los Core Web Vitals oficiales, mide la interactividad real de usuarios en condiciones de uso genuinas. Ambas miden un problema similar (falta de capacidad de respuesta), pero el TBT sirve sobre todo como diagnóstico técnico previo, mientras el INP refleja la experiencia real medida en campo.
Causas habituales de un TBT elevado
Exceso de JavaScript de terceros: chats en vivo, píxeles de seguimiento, widgets varios que se cargan y ejecutan simultáneamente. Código propio mal optimizado, con tareas largas que podrían dividirse en fragmentos más pequeños. Y frameworks pesados que ejecutan mucho procesamiento en el navegador antes de que la página quede realmente interactiva.