Заявка
Mobile · CWV

Total Blocking Time

TBT · Общее время блокировки

Total Blocking Time (TBT) — это lab-метрика, которая суммирует время блокировки главного потока браузера между первой отрисовкой контента и моментом готовности страницы к взаимодействию. Показывает, насколько долго страница не отвечает на клики и ввод.

Total Blocking Time — это лабораторный показатель отзывчивости, который измеряет, как долго главный поток браузера был занят и не мог обработать действия пользователя. Отсчёт идёт в окне между First Contentful Paint и Time to Interactive, а суммируются не сами задачи, а их части сверх порога в 50 мс.

Метрика собирается в синтетических условиях: Lighthouse, PageSpeed Insights, DevTools. Норма для мобильной эмуляции — TBT ≤ 200 мс в зоне Хорошо, 200–600 мс требует внимания, свыше 600 мс — плохо. Причина высоких значений почти всегда одна — длинные задачи JavaScript, которые держат поток дольше 50 мс.

§ 01Что показывает

Время блокировки главного потока отражает, сколько миллисекунд страница физически не реагировала на клик, тап или ввод с клавиатуры. Пока поток занят разбором и исполнением скрипта, браузер откладывает обработку событий. Показатель считает только тот отрезок, что превышает 50 мс: задача на 120 мс добавляет 70 мс, задача на 45 мс — ноль. Так метрика отделяет короткие безопасные операции от тех, что реально ощущаются как зависание.

§ 02Как считается

Суммарная задержка потока складывается из блокирующих частей всех long tasks в измеряемом окне. Long task — задача дольше 50 мс. Из каждой вычитается 50 мс, остаток идёт в сумму. Пример: три задачи по 70, 90 и 200 мс дают 20 + 40 + 150 = 210 мс. Окно замера начинается на FCP и заканчивается на TTI, поэтому скрипты, отработавшие до первой отрисовки, в расчёт не попадают.

Кел e-commerce

TBT 620 → 180 мс — Интернет-магазин косметики на Shopify вынес сторонние скрипты чата и аналитики в отложенную загрузку через defer и facade-паттерн. TBT снизился с 620 до 180 мс за 5 недель. Замер через Lighthouse и PSI на CrUX-75th, отказы упали на 11%.

Кейс SaaS

TBT 480 → 150 мс — B2B SaaS-дашборд на React с MRR $250k разбил тяжёлый JS-бандл через code-splitting и убрал long tasks длиннее 50 мс. TBT упал с 480 до 150 мс за 8 недель. Динамика по WebPageTest и полю CrUX, INP вышел в зелёную зону.

§ 03Как измерить

Лабораторный показатель отзывчивости доступен в отчёте Lighthouse — вкладка Performance, блок метрик. То же значение выдаёт PageSpeed Insights в разделе лабораторных данных. Для разбора по задачам подойдёт панель Performance в DevTools: длинные задачи помечены красным треугольником. Важно: в полевых данных CrUX этой метрики нет — вместо неё пользовательский отклик оценивает INP. С чего начать: прогнать URL через PageSpeed Insights на мобильном профиле.

§ 04Что делать с плохим значением

Значение выше 600 мс лечится разбивкой длинных задач JavaScript. Рабочие приёмы:

  • разделять тяжёлые функции через setTimeout или requestIdleCallback;
  • откладывать сторонние скрипты аналитики и виджетов атрибутами defer и async;
  • убирать неиспользуемый JS и дробить бандл на чанки;
  • переносить вычисления в Web Worker, освобождая главный поток.

Метрика напрямую связана с INP: сокращая блокировку в лаборатории, снижаешь задержку отклика у реальных пользователей.

Частые ошибки
01
Приравнивание TBT к отзывчивости у реальных пользователей. TBT — это lab-метрика из Lighthouse, а в поле Google оценивает INP по данным CrUX. Оптимизация только TBT создаёт иллюзию скорости, но реальный опыт мобильных пользователей и оценка Core Web Vitals не растут. Как правильно: Связывайте TBT с полевым INP. Сверяйте лабораторные цифры Lighthouse с данными CrUX в отчёте Search Console по каждому шаблону.
02
Дробление одного тяжёлого скрипта на мелкие без выноса из потока. Разбиение long tasks на части не помогает, если весь JS по-прежнему исполняется в главном потоке при загрузке. Сумма блокировки остаётся прежней, TBT не падает, а интерактивность страницы страдает так же, как раньше. Как правильно: Внедрите code-splitting и defer для сторонних скриптов. Выносите тяжёлые вычисления в Web Workers, отложите аналитику до события idle.
03
Замер TBT на десктопе в DevTools вместо мобильного профиля. Прогон на мощном ноутбуке даёт TBT около 50 мс, а на median-мобильном CPU с throttling 4x показатель улетает за 600 мс — это порог 'плохо' по Lighthouse. Реальная картина скрыта, бюджет на оптимизацию уходит мимо. Как правильно: Замеряйте TBT в режиме Moto G Power с CPU-throttling 4x. Сравнивайте результат с порогами Lighthouse: до 200 мс — хорошо, свыше 600 мс — плохо.
Часто спрашивают

Total Blocking Time — частые вопросы

TBT простыми словами — что это и что показывает?

+

Total Blocking Time — это lab-метрика, которая суммирует время блокировки главного потока браузера между первой отрисовкой контента (FCP) и моментом готовности к взаимодействию (TTI). Чем выше значение, тем дольше страница игнорирует клики и ввод пользователя. Измеряется в миллисекундах через Lighthouse.

Учитываются только длинные задачи — long tasks дольше 50 мс. В зачёт идёт та часть каждой задачи, что превышает 50 мс: задача на 120 мс добавляет 70 мс. Всё это суммируется в окне между FCP и TTI, поэтому тяжёлый JavaScript и парсинг сильно раздувают итог.

Хорошо — до 200 мс на мобильных в Lighthouse. Диапазон 200–600 мс Google помечает как требующий улучшения, а свыше 600 мс — плохой результат. Значения замеряются на эмуляции среднего смартфона с замедлением CPU в 4 раза, поэтому цифры строже десктопных.

Total Blocking Time — лабораторный показатель, замеряется в контролируемой среде без участия человека. INP и FID, наоборот, полевые (field) метрики Core Web Vitals и фиксируют реальные задержки отклика у посетителей. Лабораторная блокировка потока служит прокси-оценкой отзывчивости ещё до сбора данных CrUX.

Начните с сокращения объёма JavaScript: code splitting, удаление неиспользуемого кода и отложенная загрузка через defer или async. Разбивайте длинные задачи на части, выносите тяжёлые вычисления в Web Workers и минимизируйте сторонние скрипты. По опыту GUSAROV, аудит в PageSpeed Insights быстро находит виновников на 3–5 самых дорогих задачах.

Не нашли ответ?

Спросите Андрея Гусарова — отвечаю в течение 1-2 рабочих дней.

Нажимая, вы соглашаетесь с обработкой данных.