Poradnik: Total Blocking Czas (TBT)

co TBT measures, 50ms long-task math, dlaczego robić's lab proxy dla INP (nie Core Web Vital), i jak robić poprawka red score — z techniczne SEO.

Opublikowano po raz pierwszy: 26 cze 2026 · Ostatnia aktualizacja: 3 sie 2026 · Zaawansowane

Total Blocking Time (TBT) to suma blokującej części długich zadań między First Contentful Paint a Time to Interactive. Jest metryką laboratoryjną o wadze 30% w wyniku wydajności Lighthouse i wskaźnikiem zastępczym dla INP, ale nie należy do Core Web Vitals ani danych Search Console czy CrUX. Na urządzeniach mobilnych dobry wynik wynosi najwyżej 200 ms, a słaby przekracza 600 ms. Poprawiaj go przez dzielenie długich zadań JS, podział kodu, odraczanie lub usuwanie nieużywanych skryptów i ograniczanie kosztu zasobów zewnętrznych — dla użytkowników i konwersji, nie bezpośredniego wzrostu rankingu.

TL;DR — TBT jest total amount z czas, między pierwszy Contentful Paint i Czas robić Interactive, że main thread przezł blocked long enough robić zapobiegać input responsiveness. Robić sums blocking portion (duration − 50 ms) z każdy long task (dowolny main-thread task ponad 50 ms). Robić’s lab metric — single largest weight (30%) w Lighthouse 10 score i lab proxy dla INP — ale robić jest nie Core Web Vital i nigdy appears w CrUX lub Wyszukiwanie Console. mobilny thresholds: dobry ≤200 ms, poor >600 ms. Poprawka robić like ty’d poprawka INP: break up long JS tasks, code-split, defer/usunąć unused JS, tame third-party scripts. My honest take: poprawka robić dla użytkownicy, nie dla ranking bump.

Dowód potwierdzający to twierdzenie Lighthouse classifies mobile TBT at 200 milliseconds or less as good and above 600 milliseconds as poor. Zakres: Lighthouse mobile TBT scoring guidance; desktop scoring differs. Poziom ufności: wysoki · Zweryfikowano: Chrome Developers: Total Blocking Time

co TBT faktycznie measures

Google’s definition jest place robić start. TBT jest ” total amount z czas po pierwszy Contentful Paint (FCP) gdzie main thread przezł blocked dla long enough robić zapobiegać input responsiveness.” przeglądarka’s main thread procesy jeden task przy czas; podczas gdy robić’s busy z long chunk z działć, robić może’t react robić kliknięcie, tap, lub keypress. TBT quantifies jak dużo z twój strona-load window jest spent w że blocked state.

Dwa definitions robić wszystkie działć here:

  • long task jest ” task że runs na main thread dla więcej niż 50 milliseconds.”
  • blocking portion z task jest jego duration minus 50 ms. Tasks przy lub poniżej 50 ms contribute exactly 0 ms.

TBT jest sum z tamte blocking portions między FCP i Czas robić Interactive (TTI). Więc pierwszy Contentful Paint jest start wiersz: nothing przed pierwszy paint counts, ponieważ there’s nothing na screen robić interact z yet.

Dowód potwierdzający to twierdzenie TBT sums the portion above 50 milliseconds of long main-thread tasks between FCP and Time to Interactive. Zakres: Lighthouse lab metric definition; not a field Core Web Vital. Poziom ufności: wysoki · Zweryfikowano: Chrome Developers: Total Blocking Time

worked przykład

Google’s own tabela jest clearest illustration. Imagine five tasks uruchomić na main thread między FCP i TTI:

Task durationBlocking czas (duration − 50 ms)
Task jeden: 250 ms200 ms
Task dwa: 90 ms40 ms
Task trzy: 35 ms0 ms
Task four: 30 ms0 ms
Task five: 155 ms105 ms
Total Blocking Czas345 ms

Tasks trzy i four są poniżej 50 ms wiersz, więc jeden contribute nothing. Task jeden bloki dla 250 − 50 = 200 ms, task five dla 155 − 50 = 105 ms. dodaj blocking portions — 200 + 40 + 0 + 0 + 105 — i ty uzyskać 345 ms z TBT. że’s “potrzebuje improvement” score, driven almost entirely przez dwa heavy tasks.

ten jest counter-intuitive part worth internalizing: ” mały liczba z tasks na main thread doesn’t necessarily oznaczać niski blocking czas. Conversely, duży liczba z tasks doesn’t necessarily lead robić tons z blocking czas.” (że framing jest NitroPack’s, relayed here — reverified wobec na-żywo źródło 2026-07-18.) co matters jest whether individual tasks cross 50 ms, nie jak wiele tasks there są.

pomiar window: FCP robić TTI

window ends przy Czas robić Interactive — ” czas z gdy strona starts ładowanie robić gdy jego main sub-zasoby mieć załadowany i robić jest capable z reliably responding robić użytkownik input quickly.” W Lighthouse, TTI jest znaleziony przez searching forward dla five-second “quiet window” z brak long tasks i brak więcej niż dwa w-flight network żądania.

Worth noting: TTI itself przezł removed z Lighthouse 10 ponieważ robić proved overly sensitive robić outlier network żądania i long tasks, producing wysoki variability. TBT survived i became główny interactivity metric. Jako Philip Walton umieścić robić, “Newer, alternative, metrics like Largest Contentful Paint (LCP), Total Blocking Czas (TBT), i Interaction robić następny Paint (INP) są zwykle better metrics robić używać w place z TTI.” TBT didn’t zastępować TTI jako window’s endpoint — robić’s better single liczba dla ten-sam underlying problem. i TTI’s disappearance z Lighthouse raport UI isn’t ten-sam twierdzenie jako TTI brak longer bounding Lighthouse’s domyślny navigation window — window itself jest nadal measured że sposób poniżej hood.

Dowód potwierdzający to twierdzenie TTI being removed as a displayed Lighthouse metric does not by itself mean TTI stopped bounding the default Lighthouse navigation TBT window. Zakres: lab recommended Poziom ufności: wysoki · Zweryfikowano: Total Blocking Time (TBT)

Jeden więcej scoping note: “FCP robić TTI” describes Lighthouse’s domyślny navigation audit specifically. Inny narzędzia, lub Lighthouse itself running timespan trace zamiast pełny strona-load navigation, może total różny measured window — 50 ms long-task math doesn’t zmieniać, ale start i end points z co uzyskuje summed są narzędzie- i trace-mode-specific, nie universal law z metric.

Dowód potwierdzający to twierdzenie 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. Zakres: navigation audits Poziom ufności: wysoki · Zweryfikowano: Total Blocking Time

jest TBT Core Web Vital? Brak.

ten jest najbardziej common misconception, więc let’s przezć blunt o robić. trzy Core Web Vitals są LCP, INP, i CLS. TBT jest nie jeden z them. Google’s own wording: “Total Blocking Czas (TBT) jest lab metrics jest vital w catching i diagnosing potential interactivity problemy że może impact INP. However, robić jest nie part z Core Web Vitals ustawić ponieważ jeden są nie pole-measurable, nor robić jeden reflect użytkownik-centric outcome.” ( grammar w że zdanie jest theirs, nie mine.)

Więc gdzie robi TBT pokazywać up, i gdzie doesn’t robić?

  • gdzie ty widzieć robić: Lighthouse, PageSpeed Insights’ lab tab, i Chrome DevTools — wszystkie simulated/lab environments.
  • gdzie ty don’t: Google Wyszukiwanie Console’s Core Web Vitals raport, CrUX, lub dowolny pole dane. tamte tylko carry LCP, INP, i CLS.

Jeśli someone tells ty jeden’re “watching TBT w Wyszukiwanie Console,” jeden’re mistaken — GSC raporty pole dane, i TBT isn’t pole metric.

Jeden correction worth będąc precise o: TBT będąc lab-recommended isn’t ten-sam jako TBT będąc pole-impossible. Ty może technically compute TBT-style total w polu za pomocą Long Tasks API — Google mówi wprost: “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.” (tłumaczenie) „Można mierzyć TBT w terenie, lecz nie jest to zalecane, ponieważ interakcje użytkowników powodują dużą zmienność raportów”. że’s recommendation wobec robić, nie technical wall. co’s faktycznie prawdziwy bez exception jest narrower: CrUX i Wyszukiwanie Console’s Core Web Vitals raport nigdy carry TBT, pełny stop — tamte pipelines tylko ever collect LCP, INP, i CLS.

TBT jest lab proxy dla INP

Here’s dlaczego TBT exists przy wszystkie. Lab narzędzia load strona w simulated environment z brak rzeczywisty użytkownik, więc jeden może’t mierzyć Interaction robić następny Paint — INP potrzebuje rzeczywisty clicks i taps. TBT fills że gap: ” Total Blocking Czas (TBT) metric jest lab-measurable i jest proxy dla INP.”

dwa są mechanically powiązany: “Although INP i TBT są calculated differently, jeden są oba reflections z blocked main thread podczas bootstrap proces. gdy main thread jest blocked, przeglądarka jest delayed w responding robić użytkownik interactions.” I empirically, ” niski TBT często correlates z niski Interaction robić następny Paint (INP).”

ale “proxy” jest nie “substitute.” Google jest explicit: “Total Blocking Czas (TBT) może przezć reasonable proxy metric dla INP, ale robić’s nie substitute dla INP w i z itself.” Jeden diverge w rzeczywisty sposoby:

  • wysoki TBT, fine INP. TBT measures blocking podczas load. Jeśli twój użytkownicy don’t faktycznie try robić interact podczas że blocked window — jeden wait dla strona robić wyglądać finished pierwszy — ich INP może przezć fine nawet z ugly TBT.
  • Fine TBT, poor INP. INP również covers slow event handlers i renderowanie działć że fire po load, plus elementy like przeglądarka’s 300 ms tap opóźnienie na non-mobilny-optimized strony — none z który TBT sees.

gdy lab i pole disagree, trust pole. INP ( rzeczywisty-użytkownik liczba) takes priority ponad TBT ( lab estimate).

Jeden historical note że trips people up: TBT używany robić przezć lab proxy dla pierwszy Input opóźnienie (FID). INP replaced FID jako Core Web Vital na March 12, 2024, więc TBT jest teraz INP’s proxy. underlying mechanism nigdy zmieniony — robić’s zawsze przezł o blocked main thread podczas load — ale dowolny older artykuł calling TBT “FID’s proxy” predates że switch.

Dlaczego TBT dominates Lighthouse score

TBT carries largest single weight w Lighthouse wydajność score — 30%, weighting introduced w Lighthouse 10 i, verified na-żywo wobec Chrome’s scoring docs na 2026-07-18, nadal unchanged przez bieżący Lighthouse 13:

MetricWeight
pierwszy Contentful Paint10%
Speed Index10%
Largest Contentful Paint25%
Total Blocking Czas30%
Cumulative Layout Shift25%

Treat że tabela jako version-i-date-scoped, nie permanent constant — Lighthouse ma zmieniony jego weights przed i może again. Re-zweryfikować wobec Lighthouse wydajność scoring przed quoting robić w audit deck.

ten jest practical powód TBT matters dla SEO audits nawet though robić isn’t ranking signal: poor TBT ma outsized effect na że duży Lighthouse liczba everyone screenshots. Addy Osmani’s worked przykład tworzy robić concrete — removing jeden Intersection Observer polyfill cut TBT z 400 ms robić 300 ms i lifted Lighthouse wydajność score z 63 robić 70. Jeden poprawka, seven points, z powodu 30% weight.

Jeden więcej nuance: “Dobry ≤200 ms” kategoria threshold i Lighthouse score są różny scales. Robić score 90+ na TBT subscore ty potrzebować roughly ≤300 ms na mobilny, i robić hit 100 ty potrzebować ≤100 ms. (tamte subscore figures są DebugBear’s documentation z scoring curve, reverified wobec na-żywo źródło 2026-07-18.) “Dobry” i “100” są nie ten-sam bar.

robi TBT affect SEO rankings?

nie directly — i I’ll przezć straighter o ten niż najbardziej.

TBT jest nie ranking signal. Google’s interactivity ranking input jest INP, pole metric. TBT jest diagnostic że pomaga ty znaleźć i poprawka long tasks że hurt INP. poprawiając TBT może poprawić INP, który może marginally pomagać strona Experience side z rankings — ale że’s dwa linki z “może” away z twój positions.

i here’s my rzeczywisty position na whole Core Web Vitals question, który I’ve written przed w my szybkość strony poradnik: I don’t think Core Web Vitals mieć dużo impact na SEO, i unless ty’re extremely slow I ogólnie won’t prioritize them. robić them dla użytkownicy i conversions, nie dla ranking bump. że applies doubly robić TBT, który jest lab proxy dla pole metric dla mały ranking input. Poprawka robić ponieważ frozen strona loses ty klienci — nie ponieważ ty’re chasing position.

co causes wysoki TBT

Robić’s almost zawsze JavaScript:

  • Unnecessary JavaScript ładowanie, parsing, lub execution — Lighthouse audit’s own słowa. wysyłka duży bundle strona doesn’t potrzebować przy load jest classic cause.
  • Inefficient JavaScript statements — heavy synchronous działć że monopolizes main thread.
  • Third-party scripts — znacznik managers, chat widgets, analytics, ad scripts. często single biggest contributor, i jeden ty control least.
  • Heavy framework bootstrap — React hydration i similar może uruchomić long tasks podczas startup.
  • Style/layout recalculation i garbage collection — forced synchronous layout, duży style recalcs, i GC pauses pokazywać up jako main-thread tasks too; don’t assume każdy long task w trace jest JavaScript execution.

Don’t assume bundle transfer size jest whole story, either. Trace attribution ma rzeczywisty gaps: cross-origin frames i worker threads mieć prywatność i security limits na co long-task observer może raport o them (widzieć Troubleshooting), więc unattributed task w twój trace isn’t proof brak third party jest involved — robić może tylko oznaczać attribution API isn’t allowed robić tell ty.

Jak robić poprawka wysoki TBT

poprawki są ten-sam family jako INP poprawki — oba come down robić blocked main thread.

  1. Znaleźć long tasks. otwarty Chrome DevTools wydajność panel i wyglądać dla tasks ponad 50 ms (jeden’re flagged z red corners), lub uruchomić Lighthouse “Avoid long main-thread tasks” audit.
  2. Audit third-party scripts pierwszy. Jeden’re zwykle easiest wins. użyj DevTools Coverage i Network tabs robić widzieć co każdy script costs, i lazy-load heavy embeds (YouTube, maps, chat) za facade.
  3. Break up long tasks. Yield robić main thread więc przeglądarka może handle input między chunks — “gdy tasks są broken up, przeglądarka może respond robić higher-priority działć dużo sooner—w tym użytkownik interactions.” modern API jest scheduler.yield(), z setTimeout(resolve, 0) fallback (widzieć Cheat Sheets tab dla pattern). Note że Google brak longer recommends isInputPending() — yield regardless z whether input jest pending.
  4. Reduce JavaScript. Code-split duży bundles więc mniej parses i evaluates przy load, usunąć unused JS (DevTools Coverage tab pokazuje ty co), i defer non-critical scripts.
  5. Move heavy computation off main thread. Web Workers uruchomić CPU-heavy działć na oddzielny thread, leaving main thread free robić respond.

użyteczny side effect: long tasks że blok main thread może również opóźnienie Largest Contentful Paint renderowanie, więc fixing TBT czasami poprawia LCP too — especially gdy blokujący renderowanie JS jest involved.

gdzie robić go następny

TBT lives w Core Web Vitals family alongside jego pole counterpart Interaction robić następny Paint, ładowanie metrics Largest Contentful Paint i pierwszy Contentful Paint, i lab narzędzia Lighthouse, PageSpeed Insights, i Speed Index że raport them. Jeśli ty tylko remember jeden element: TBT jest lab ostrzeżenie light dla pole responsiveness — chase long tasks, nie liczba.

Dodaj notatkę eksperta

Przypnij cytat eksperta

Nowa osoba? Najpierw utwórz jej nieprzejęty profil na /admin/experts/ → Przypnij cytat eksperta .