Total Blocking Time (TBT) y SEO

Qué mide TBT, la matemática de tareas largas de 50 ms, por qué es el proxy de laboratorio para INP (no una Core Web Vital), y cómo corregir una puntuación en rojo — desde un SEO técnico.

Publicado por primera vez: 26 jun 2026 · Última actualización: 22 ago 2026 · Avanzado
Idiomas

Total Blocking Time (TBT) es la suma de la porción de bloqueo — el tiempo por encima de 50 ms — de cada tarea larga entre First Contentful Paint y Time to Interactive. Es una métrica solo de laboratorio, el mayor peso individual (30%) en la puntuación de rendimiento de Lighthouse, y el proxy de laboratorio para la Core Web Vital INP (antes era proxy de FID). NO es una Core Web Vital y nunca aparece en Search Console ni en CrUX. Umbrales móviles de Lighthouse: bueno ≤200 ms, deficiente >600 ms. Se corrige de la misma manera que INP — dividir tareas largas de JS, code-split, diferir o eliminar JS no utilizado, y reducir el costo de scripts de terceros. Mi opinión honesta: hazlo por los usuarios y las conversiones, no por un aumento en el ranking.

TL;DR — El TBT es la cantidad total de tiempo, entre la Primera Pintura con Contenido y el Tiempo hasta la Interactividad, en que el hilo principal estuvo bloqueado el tiempo suficiente para impedir la capacidad de respuesta a la entrada. Suma la parte de bloqueo (duración − 50 ms) de cada tarea larga (cualquier tarea del hilo principal de más de 50 ms). Es una métrica de laboratorio — el mayor peso individual (30 %) en la puntuación de Lighthouse 10 y el proxy de laboratorio para INP — pero no es una Métrica Vital de la Web y nunca aparece en CrUX ni en Search Console. Umbrales móviles: bueno ≤200 ms, pobre >600 ms. Soluciónalo como solucionarías el INP: divide las tareas largas de JS, divide el código, difiere/elimina JS no utilizado, controla los scripts de terceros. Mi opinión honesta: soluciónalo para los usuarios, no para un aumento en el ranking.

Evidence for this claim Lighthouse classifies mobile TBT at 200 milliseconds or less as good and above 600 milliseconds as poor. Scope: Lighthouse mobile TBT scoring guidance; desktop scoring differs. Confidence: high · Verified: Chrome Developers: Total Blocking Time

Qué mide realmente el TBT

La definición de Google es el lugar para empezar. El TBT es “la cantidad total de tiempo después de la Primera Pintura con Contenido (FCP) en que el hilo principal estuvo bloqueado el tiempo suficiente para impedir la capacidad de respuesta a la entrada.” El hilo principal del navegador procesa una tarea a la vez; mientras está ocupado con un fragmento largo de trabajo, no puede reaccionar a un clic, un toque, o una pulsación de tecla. El TBT cuantifica cuánto de tu ventana de carga de página se pasa en ese estado bloqueado.

Dos definiciones hacen todo el trabajo aquí:

  • Una tarea larga es “una tarea que se ejecuta en el hilo principal durante más de 50 milisegundos.”
  • La parte de bloqueo de una tarea es su duración menos 50 ms. Las tareas de 50 ms o menos contribuyen exactamente 0 ms.

El TBT es la suma de esas porciones de bloqueo entre FCP y Time to Interactive (TTI). Así que First Contentful Paint es la línea de salida: nada antes del primer pintado cuenta, porque no hay nada en pantalla con lo que interactuar todavía.

Evidence for this claim TBT sums the portion above 50 milliseconds of long main-thread tasks between FCP and Time to Interactive. Scope: Lighthouse lab metric definition; not a field Core Web Vital. Confidence: high · Verified: Chrome Developers: Total Blocking Time

El ejemplo práctico

La propia tabla de Google es la ilustración más clara. Imagina cinco tareas que se ejecutan en el hilo principal entre FCP y TTI:

Duración de la tareaTiempo de bloqueo (duración − 50 ms)
Tarea uno: 250 ms200 ms
Tarea dos: 90 ms40 ms
Tarea tres: 35 ms0 ms
Tarea cuatro: 30 ms0 ms
Tarea cinco: 155 ms105 ms
Total Blocking Time345 ms

Las tareas tres y cuatro están por debajo de la línea de 50 ms, así que no contribuyen nada. La tarea uno bloquea durante 250 − 50 = 200 ms, la tarea cinco durante 155 − 50 = 105 ms. Suma las porciones de bloqueo — 200 + 40 + 0 + 0 + 105 — y obtienes 345 ms de TBT. Eso es una puntuación de “necesita mejoras”, impulsada casi por completo por dos tareas pesadas.

Esta es la parte contraintuitiva que vale la pena internalizar: “A small number of tasks on the main thread doesn’t necessarily mean low blocking time. Conversely, a large number of tasks doesn’t necessarily lead to tons of blocking time.” (traducción) «Un número pequeño de tareas en el hilo principal no significa necesariamente un tiempo de bloqueo bajo. Por el contrario, un número grande de tareas no conduce necesariamente a una gran cantidad de tiempo de bloqueo.» (Ese marco es de NitroPack, transmitido aquí — reverificado contra la fuente en vivo el 2026-07-18.) Lo que importa es si las tareas individuales cruzan los 50 ms, no cuántas tareas hay.

La ventana de medición: FCP a TTI

La ventana termina en Time to Interactive“the time from when the page starts loading to when its main sub-resources have loaded and it is capable of reliably responding to user input quickly.” (traducción) «El tiempo desde que la página comienza a cargarse hasta que sus sub-recursos principales se han cargado y es capaz de responder de manera confiable y rápida a la entrada del usuario.» En Lighthouse, el TTI se encuentra buscando hacia adelante una “ventana de silencio” de cinco segundos sin tareas largas y con no más de dos solicitudes de red en vuelo.

Vale la pena señalar: el propio TTI fue eliminado de Lighthouse 10 porque demostró ser demasiado sensible a solicitudes de red atípicas y tareas largas, produciendo alta variabilidad. El TBT sobrevivió y se convirtió en la métrica principal de interactividad. Como dijo Philip Walton, “Newer, alternative, metrics like Largest Contentful Paint (LCP), Total Blocking Time (TBT), and Interaction to Next Paint (INP) are usually better metrics to use in place of TTI.” (traducción) «Las métricas más nuevas y alternativas como Largest Contentful Paint (LCP), Total Blocking Time (TBT) e Interaction to Next Paint (INP) suelen ser mejores métricas para usar en lugar de TTI.» El TBT no reemplazó al TTI como punto final de la ventana — es un mejor número único para el mismo problema subyacente. Y la desaparición del TTI de la interfaz de usuario del informe de Lighthouse no es lo mismo que afirmar que el TTI ya no limita la ventana de navegación predeterminada de Lighthouse — la ventana en sí todavía se mide de esa manera bajo el capó.

Evidence for this claim TTI being removed as a displayed Lighthouse metric does not by itself mean TTI stopped bounding the default Lighthouse navigation TBT window. Scope: lab recommended Confidence: high · Verified: Total Blocking Time (TBT)

Una nota más de alcance: “FCP a TTI” describe específicamente la auditoría de navegación predeterminada de Lighthouse. Otras herramientas, o el propio Lighthouse ejecutando un rastreo de intervalo de tiempo en lugar de una navegación de carga de página completa, pueden totalizar una ventana medida diferente — la matemática de tareas largas de 50 ms no cambia, pero los puntos de inicio y fin de lo que se suma son específicos de la herramienta y del modo de rastreo, no una ley universal de la métrica.

Evidence for this claim TBT begins after FCP, but the endpoint is tool and trace-mode specific: page-load tools commonly use TTI, Lighthouse navigation audits default to stopping at TTI, and other tools or timespan traces may total a different measured window. Scope: navigation audits Confidence: high · Verified: Total Blocking Time

¿Es el TBT un Core Web Vital? No.

Este es el error más común, así que seamos directos al respecto. Los tres Core Web Vitals son LCP, INP y CLS. El TBT no es uno de ellos. Las propias palabras de Google: “Total Blocking Time (TBT) is a lab metrics is vital in catching and diagnosing potential interactivity issues that can impact INP. However, it is not part of the Core Web Vitals set because they are not field-measurable, nor do they reflect a user-centric outcome.” (traducción) «Total Blocking Time (TBT) es una métrica de laboratorio que es vital para detectar y diagnosticar problemas potenciales de interactividad que pueden afectar a INP. Sin embargo, no forma parte del conjunto de Core Web Vitals porque no son medibles en campo, ni reflejan un resultado centrado en el usuario.» (La gramática en esa frase es de ellos, no mía.)

Entonces, ¿dónde aparece el TBT y dónde no?

  • Dónde lo ves: Lighthouse, PageSpeed Insights en la pestaña de laboratorio y Chrome DevTools: todos son entornos simulados/de laboratorio.
  • Dónde no lo ves: en el informe de Core Web Vitals de Google Search Console, en CrUX ni en ningún dato de campo. Esos solo incluyen LCP, INP y CLS.

Si alguien te dice que está “viendo TBT en Search Console”, se equivoca: GSC informa datos de campo, y TBT no es una métrica de campo.

Una corrección que vale la pena precisar: que TBT sea recomendado en laboratorio no es lo mismo que TBT sea imposible en campo. Técnicamente puedes calcular un total estilo TBT en campo con la API de Long Tasks; Google lo dice directamente: “It is possible to measure TBT in the field, but we don’t recommend this as user interaction can affect your page’s TBT in ways that lead to lots of variance in your reports.” (traducción) «Es posible medir TBT en campo, pero no recomendamos esto porque la interacción del usuario puede afectar el TBT de tu página de maneras que generan mucha variación en tus informes». Eso es una recomendación en contra, no una barrera técnica. Lo que es realmente cierto sin excepción es más limitado: CrUX y el informe de Core Web Vitals de Search Console nunca incluyen TBT, punto final: esas canalizaciones solo recopilan LCP, INP y CLS.

TBT es el proxy de laboratorio para INP

Aquí está la razón por la que TBT existe. Las herramientas de laboratorio cargan una página en un entorno simulado sin un usuario real, por lo que no pueden medir Interaction to Next Paint: INP necesita clics reales y toques. TBT llena ese vacío: “the Total Blocking Time (TBT) metric is lab-measurable and is a proxy for INP.” (traducción) «La métrica de tiempo de bloqueo total (TBT) se puede medir en laboratorio y es un proxy de INP».

Las dos están mecánicamente relacionadas: ambas reflejan un hilo principal bloqueado durante el arranque. La fuente resume el efecto con “the browser is delayed” (traducción) «el navegador se retrasa» al responder a las interacciones. Y empíricamente, “A low TBT often correlates with a low Interaction to Next Paint (INP).” (traducción) «Un TBT bajo a menudo se correlaciona con un Interaction to Next Paint (INP) bajo».

Pero “proxy” no es “sustituto”. Google es explícito: “Total Blocking Time (TBT) may be a reasonable proxy metric for INP, but it’s not a substitute for INP in and of itself.” (traducción) «El tiempo de bloqueo total (TBT) puede ser una métrica proxy razonable para INP, pero no es un sustituto de INP por sí mismo». Difieren de maneras reales:

  • TBT alto, INP bien. TBT mide el bloqueo durante la carga. Si tus usuarios no intentan interactuar realmente durante esa ventana bloqueada (esperan a que la página parezca terminada primero), su INP puede estar bien incluso con un TBT feo.
  • TBT bien, INP pobre. INP también cubre manejadores de eventos lentos y trabajo de renderizado que se disparan después de la carga, además de cosas como el retraso de 300 ms del navegador en toques en páginas no optimizadas para móviles: nada de eso lo ve TBT.

Cuando el laboratorio y el campo no coinciden, confía en el campo. INP (el número de usuarios reales) tiene prioridad sobre TBT (la estimación de laboratorio).

Una nota histórica que confunde a la gente: TBT solía ser el proxy de laboratorio para First Input Delay (FID). INP reemplazó a FID como Core Web Vital el 12 de marzo de 2024, así que TBT es ahora el proxy de INP. El mecanismo subyacente nunca cambió: siempre se ha tratado de un hilo principal bloqueado durante la carga, pero cualquier artículo más antiguo que llame a TBT “proxy de FID” antecede a ese cambio.

Por qué TBT domina la puntuación de Lighthouse

TBT tiene el mayor peso individual en la puntuación de rendimiento de Lighthouse: 30 %, una ponderación introducida en Lighthouse 10 y, verificada en vivo contra los documentos de puntuación de Chrome el 18 de julio de 2026, aún sin cambios hasta el actual Lighthouse 13:

MétricaPeso
First Contentful Paint10 %
Speed Index10 %
Largest Contentful Paint25 %
Total Blocking Time30 %
Cumulative Layout Shift25 %

Trata esa tabla como limitada a versión y fecha, no como una constante permanente: Lighthouse ha cambiado sus pesos antes y puede volver a hacerlo. Vuelve a verificar contra Lighthouse performance scoring antes de citarla en una presentación de auditoría.

Esta es la razón práctica por la que el TBT importa en las auditorías SEO, aunque no sea una señal de clasificación: un TBT deficiente tiene un efecto desproporcionado en ese gran número de Lighthouse que todos capturan. El ejemplo práctico de Addy Osmani lo hace concreto: eliminar un polyfill de Intersection Observer redujo el TBT de 400 ms a 300 ms y elevó la puntuación de rendimiento de Lighthouse de 63 a 70. Una corrección, siete puntos, debido al peso del 30 %.

Un matiz más: el umbral de categoría “Bueno ≤200 ms” y la puntuación de Lighthouse son escalas diferentes. Para obtener 90+ en la subpuntuación de TBT necesitas aproximadamente ≤300 ms en móvil, y para alcanzar 100 necesitas ≤100 ms. (Esas cifras de subpuntuación son la documentación de DebugBear sobre la curva de puntuación, reverificada contra la fuente en vivo el 2026-07-18.) “Bueno” y “100” no son el mismo nivel.

¿Afecta el TBT a los rankings de SEO?

No directamente, y seré más directo que la mayoría.

El TBT no es una señal de clasificación. La entrada de clasificación de interactividad de Google es INP, una métrica de campo. El TBT es un diagnóstico que te ayuda a encontrar y corregir las tareas largas que perjudican al INP. Mejorar el TBT puede mejorar el INP, lo que podría ayudar marginalmente al aspecto de Page Experience en los rankings, pero eso está a dos eslabones de “puede” de tus posiciones.

Y aquí está mi posición real sobre toda la cuestión de Core Web Vitals, que ya he escrito antes en mi guía de velocidad de página: no creo que Core Web Vitals tengan mucho impacto en el SEO, y a menos que seas extremadamente lento, generalmente no los priorizaré. Hazlos por los usuarios y las conversiones, no por un aumento en el ranking. Eso se aplica doblemente al TBT, que es un proxy de laboratorio para una métrica de campo para una pequeña entrada de clasificación. Arrégialo porque una página congelada te hace perder clientes, no porque estés persiguiendo una posición.

¿Qué causa un TBT alto?

Casi siempre es JavaScript:

  • Carga, análisis o ejecución innecesaria de JavaScript — las propias palabras de la auditoría de Lighthouse. Enviar un paquete grande que la página no necesita al cargar es la causa clásica.
  • Declaraciones de JavaScript ineficientes — trabajo síncrono pesado que monopoliza el hilo principal.
  • Scripts de terceros — gestores de etiquetas, widgets de chat, análisis, scripts de anuncios. A menudo el mayor contribuyente individual, y el que menos controlas.
  • Arranque pesado del framework — la hidratación de React y similares pueden ejecutar tareas largas durante el inicio.
  • Recálculo de estilo/diseño y recolección de basura — el diseño síncrono forzado, los recálculos de estilo grandes y las pausas de GC aparecen como tareas del hilo principal también; no asumas que cada tarea larga en el rastro es ejecución de JavaScript.

Tampoco asumas que el tamaño de transferencia del paquete es toda la historia. La atribución de rastros tiene brechas reales: los marcos de origen cruzado y los hilos de trabajo tienen límites de privacidad y seguridad sobre lo que un observador de tareas largas puede informar sobre ellos (consulta Solución de problemas), por lo que una tarea no atribuida en tu rastro no es prueba de que no haya terceros involucrados; puede significar simplemente que la API de atribución no tiene permitido decírtelo.

Cómo corregir un TBT alto

Las correcciones son de la misma familia que las de INP: ambas se reducen a un hilo principal bloqueado.

  1. Encuentra las tareas largas. Abre el panel de rendimiento de Chrome DevTools y busca tareas de más de 50 ms (se marcan con esquinas rojas), o ejecuta la auditoría de Lighthouse “Evita tareas largas del hilo principal”.
  2. Audita primero los scripts de terceros. Suelen ser las victorias más fáciles. Usa las pestañas de Cobertura y Red de DevTools para ver cuánto cuesta cada script, y carga de forma diferida los embebidos pesados (YouTube, mapas, chat) detrás de una fachada.
  3. Divide las tareas largas. Cede el hilo principal para que el navegador pueda manejar la entrada entre fragmentos — “cuando las tareas se dividen, el navegador puede responder a trabajo de mayor prioridad mucho antes, incluidas las interacciones del usuario”. (traducción) «cuando las tareas se dividen, el navegador puede responder a trabajo de mayor prioridad mucho antes, incluidas las interacciones del usuario». La API moderna es scheduler.yield(), con un respaldo de setTimeout(resolve, 0) (consulta la pestaña de Hojas de referencia para ver el patrón). Ten en cuenta que Google ya no recomienda isInputPending() — cede independientemente de si hay entrada pendiente.
  4. Reduce el JavaScript. Divide los paquetes grandes en código para que se analice y evalúe menos en la carga, elimina JS no utilizado (la pestaña de Cobertura de DevTools te muestra qué), y usa defer para scripts no críticos.
  5. Mueve el cálculo pesado fuera del hilo principal. Los Web Workers ejecutan trabajo intensivo de CPU en un hilo separado, dejando el hilo principal libre para responder.

Un efecto secundario útil: las tareas largas que bloquean el hilo principal también pueden retrasar el renderizado de Largest Contentful Paint, por lo que corregir TBT a veces también mejora LCP — especialmente cuando hay JS que bloquea el renderizado.

Dónde ir a continuación

TBT vive en la familia de Core Web Vitals junto con su contraparte de campo Interaction to Next Paint, las métricas de carga Largest Contentful Paint y First Contentful Paint, y las herramientas de laboratorio Lighthouse, PageSpeed Insights y Speed Index que las reportan. Si solo recuerdas una cosa: TBT es la luz de advertencia de laboratorio para la capacidad de respuesta de campo — persigue las tareas largas, no el número.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.