Gesamte Blockierungszeit (TBT)

war TBT measures, the 50ms long-task math, warum es ist the lab proxy für INP (nicht ein Core Web Vital), und wie zu fix ein red score — aus ein technical SEO.

Erstveröffentlicht: 26. Juni 2026 · Zuletzt aktualisiert: 3. Aug. 2026 · Fortgeschritten
Sprachen

Total Blocking Time (TBT) ist the sum von the blocking portion — the time above 50 ms — von every long task zwischen erste Contentful Paint und Time zu Interactive. es ist ein lab-nur metric, the single largest weight (30%) in the Lighthouse Performance score, und the lab proxy für the Core Web Vital INP (es verwendet zu proxy FID). es ist nicht ein Core Web Vital und never zeigt up in Search Console oder CrUX. Lighthouse mobile thresholds: good ≤200 ms, poor >600 ms. Sie fix es the gleich Weg Sie fix INP — break up long JS tasks, code-split, defer oder entfernen unused JS, und cut Drittanbieter- script cost. My honest nehmen: tun es für users und conversions, nicht für ein Ranking bump.

TL;DR — TBT ist the total amount von time, zwischen erste Contentful Paint und Time zu Interactive, that the main thread war blocked long genug zu verhindern input responsiveness. es sums the blocking portion (duration − 50 ms) von every long task (any main-thread task over 50 ms). es ist ein lab metric — the single largest weight (30%) in the Lighthouse 10 score und the lab proxy für INP — aber es ist nicht ein Core Web Vital und never erscheint in CrUX oder Search Console. Mobile thresholds: good ≤200 ms, poor >600 ms. Fix es like Sie’d fix INP: break up long JS tasks, code-split, defer/remove unused JS, tame Drittanbieter- scripts. My honest nehmen: fix es für users, nicht für ein Ranking bump.

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

war TBT tatsächlich measures

Google’s definition ist the place zu beginnen. TBT ist “the total amount von time after erste Contentful Paint (FCP) wo the main thread war blocked für long genug zu verhindern input responsiveness.” The browser’s main thread processes one task bei ein time; während es ist busy mit ein long chunk von arbeiten, es kann nicht react zu ein klicken, ein tap, oder ein keypress. TBT quantifies wie much von Ihre Seite-load window ist spent in that blocked state.

Two definitions tun alle the arbeiten hier:

  • ein long task ist “ein task that läuft auf the main thread für mehr als 50 milliseconds.”
  • The blocking portion von ein task ist its duration minus 50 ms. Tasks bei oder under 50 ms contribute exactly 0 ms.

TBT ist the sum von diese blocking portions zwischen FCP und Time zu Interactive (TTI). So First Contentful Paint ist the beginnen line: nothing vor the erste paint counts, weil es gibt nothing auf screen zu interact mit yet.

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

The worked Beispiel

Google’s own table ist the clearest illustration. Imagine five tasks ausführen auf the main thread zwischen FCP und TTI:

AufgabendauerBlockierungszeit (Dauer − 50 ms)
Aufgabe eins: 250 ms200 ms
Aufgabe zwei: 90 ms40 ms
Aufgabe drei: 35 ms0 ms
Aufgabe vier: 30 ms0 ms
Aufgabe fünf: 155 ms105 ms
Gesamte Blockierungszeit345 ms

Tasks three und four sind under the 50 ms line, so they contribute nothing. Task one blocks für 250 − 50 = 200 ms, task five für 155 − 50 = 105 ms. hinzufügen the blocking portions — 200 + 40 + 0 + 0 + 105 — und Sie erhalten 345 ms von TBT. das ist ein “benötigt improvement” score, driven almost entirely durch two heavy tasks.

dies ist the counter-intuitive part worth internalizing: “ein small number von tasks auf the main thread tut nicht necessarily bedeuten low blocking time. Conversely, ein large number von tasks tut nicht necessarily lead zu tons von blocking time.” (That framing ist NitroPack’s, relayed hier — reverified against the live Quelle 2026-07-18.) war zählt ist whether individual tasks cross 50 ms, nicht wie viele tasks dort sind.

The measurement window: FCP zu TTI

The window ends bei Time zu Interactive“the time aus wenn the Seite starts loading zu wenn its main sub-resources haben loaded und es ist capable von reliably responding zu user input quickly.” in Lighthouse, TTI ist gefunden durch searching forward für ein five-second “quiet window” mit kein long tasks und kein mehr als two in-flight network Anfragen.

Worth noting: TTI itself war entfernt aus Lighthouse 10 weil es proved overly sensitive zu outlier network Anfragen und long tasks, producing high variability. TBT survived und became the primary interactivity metric. als Philip Walton put es, “Newer, alternative, metrics like Largest Contentful Paint (LCP), Total Blocking Time (TBT), und Interaction zu nächste Paint (INP) sind usually better metrics zu verwenden in place von TTI.” TBT didn’t ersetzen TTI als the window’s endpoint — es ist ein better single number für the gleich underlying problem. und TTI’s disappearance aus the Lighthouse Bericht UI ist nicht the gleich claim als TTI kein longer bounding Lighthouse’s Standard navigation window — the window itself ist still measured that Weg under the hood.

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)

One mehr scoping note: “FCP zu TTI” describes Lighthouse’s Standard navigation audit specifically. Other Tools, oder Lighthouse itself running ein timespan trace statt ein full Seite-load navigation, kann total ein different measured window — the 50 ms long-task math tut nicht ändern, aber the beginnen und end points von war erhält summed sind Tool- und trace-mode-specific, nicht ein universal law von the metric.

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

ist TBT ein Core Web Vital? kein.

dies ist the meisten common misconception, so let’s sein blunt über es. The three Core Web Vitals sind LCP, INP, und CLS. TBT ist nicht one von them. Google’s own wording: “Total Blocking Time (TBT) ist ein lab metrics ist vital in catching und diagnosing potential interactivity issues that kann impact INP. However, es ist nicht part von the Core Web Vitals festlegen weil they sind nicht field-measurable, nor tun they reflect ein user-centric outcome.” (The grammar in that sentence ist theirs, nicht mine.)

So wo tut TBT zeigen up, und wo tut nicht es?

  • wo Sie sehen es: Lighthouse, PageSpeed Insights’ lab tab, und Chrome DevTools — alle simulated/lab environments.
  • wo Sie don’t: Google Search Console’s Core Web Vitals report, CrUX, oder any field data. diese nur carry LCP, INP, und CLS.

wenn someone tells Sie sie sind “watching TBT in Search Console,” sie sind mistaken — GSC Berichte field data, und TBT ist nicht ein field metric.

One correction worth being precise über: TBT being lab-recommended ist nicht the gleich als TBT being field-impossible. Sie kann technically compute ein TBT-style total in the field mit the Long Tasks API — Google says so directly: “es ist possible zu messen TBT in the field, aber wir don’t empfehlen dies als user interaction kann affect Ihre Seite’s TBT in ways that lead zu lots von variance in Ihre Berichte.” das ist ein Empfehlung against es, nicht ein technical wall. war ist tatsächlich true ohne exception ist narrower: CrUX und Search Console’s Core Web Vitals report never carry TBT, full stop — diese pipelines nur ever collect LCP, INP, und CLS.

TBT ist the lab proxy für INP

hier’s warum TBT exists bei alle. Lab Tools load ein Seite in ein simulated environment mit kein real user, so they kann nicht messen Interaction to Next Paint — INP benötigt actual clicks und taps. TBT fills that gap: “the Total Blocking Time (TBT) metric ist lab-measurable und ist ein proxy für INP.”

The two sind mechanically related: “Although INP und TBT sind calculated differently, they sind both reflections von ein blocked main thread during the bootstrap process. wenn the main thread ist blocked, the browser ist delayed in responding zu user interactions.” und empirically, “ein low TBT häufig correlates mit ein low Interaction zu nächste Paint (INP).”

aber “proxy” ist nicht “substitute.” Google ist explicit: “Total Blocking Time (TBT) may sein ein reasonable proxy metric für INP, aber es ist nicht ein substitute für INP in und von itself.” They diverge in real ways:

  • High TBT, fine INP. TBT measures blocking during load. wenn Ihre users don’t tatsächlich try zu interact during that blocked window — they wait für the Seite zu look finished erste — their INP kann sein fine even mit ein ugly TBT.
  • Fine TBT, poor INP. INP auch deckt ab slow event handlers und rendering arbeiten that fire after load, plus things like the browser’s 300 ms tap delay auf non-mobile-optimized Seiten — none von welche TBT sees.

wenn the lab und field disagree, trust the field. INP (the real-user number) takes priority over TBT (the lab estimate).

One historical note that trips Menschen up: TBT verwendet zu sein the lab proxy für erste Input Delay (FID). INP replaced FID als ein Core Web Vital auf March 12, 2024, so TBT ist now INP’s proxy. The underlying mechanism never changed — es ist immer been über ein blocked main thread during load — aber any older article calling TBT “FID’s proxy” predates that switch.

warum TBT dominates the Lighthouse score

TBT carries the largest single weight in the Lighthouse Performance score — 30%, ein weighting introduced in Lighthouse 10 und, verified live against Chrome’s scoring docs auf 2026-07-18, still unchanged durch the current Lighthouse 13:

MetricWeight
erste Contentful Paint10%
Speed Index10%
Largest Contentful Paint25%
Total Blocking Time30%
Cumulative Layout Shift25%

Treat that table als version-und-date-scoped, nicht ein permanent constant — Lighthouse hat changed its weights vor und kann again. Re-überprüfen against Lighthouse performance scoring vor quoting es in ein audit deck.

dies ist the practical Grund TBT matters für SEO audits even though es ist nicht ein Ranking signal: ein poor TBT hat ein outsized effect auf that big Lighthouse number everyone screenshots. Addy Osmani’s worked Beispiel macht es concrete — removing one Intersection Observer polyfill cut TBT aus 400 ms zu 300 ms und lifted the Lighthouse Performance score aus 63 zu 70. One fix, seven points, weil von the 30% weight.

One mehr nuance: the “Good ≤200 ms” category threshold und the Lighthouse score sind different scales. zu score 90+ auf the TBT subscore Sie benötigen roughly ≤300 ms auf mobile, und zu hit 100 Sie benötigen ≤100 ms. (diese subscore figures sind DebugBear’s documentation von the scoring curve, reverified against the live Quelle 2026-07-18.) “Good” und “100” sind nicht the gleich bar.

tut TBT affect SEO Rankings?

nicht directly — und I’ll sein straighter über dies than meisten.

TBT ist nicht ein Ranking signal. Google’s interactivity Ranking input ist INP, ein field metric. TBT ist ein diagnostic that hilft Sie finden und fix the long tasks that hurt INP. Improving TBT may verbessern INP, welche might marginally helfen the Seite Experience side von Rankings — aber das ist two Links von “may” away aus Ihre positions.

und hier’s my actual position auf the whole Core Web Vitals question, welche I’ve written before in my page speed guide: I don’t think Core Web Vitals haben much impact auf SEO, und unless Sie sind extremely slow I generally wird nicht prioritize them. tun them für users und conversions, nicht für ein Ranking bump. That applies doubly zu TBT, welche ist ein lab proxy für ein field metric für ein small Ranking input. Fix es weil ein frozen Seite loses Sie Kunden — nicht weil Sie sind chasing ein position.

war causes high TBT

es ist almost immer JavaScript:

  • Unnecessary JavaScript loading, parsing, oder execution — the Lighthouse audit’s own words. Shipping ein big bundle the Seite tut nicht benötigen bei load ist the classic cause.
  • Inefficient JavaScript statements — heavy synchronous arbeiten that monopolizes the main thread.
  • Drittanbieter- scripts — tag managers, chat widgets, analytics, ad scripts. häufig the single biggest contributor, und the one Sie Steuerung least.
  • Heavy framework bootstrap — React hydration und similar kann ausführen long tasks during startup.
  • Style/layout recalculation und garbage collection — forced synchronous layout, large style recalcs, und GC pauses zeigen up als main-thread tasks too; don’t assume every long task in the trace ist JavaScript execution.

Don’t assume bundle transfer size ist the whole story, either. Trace attribution hat real gaps: cross-origin frames und worker threads haben privacy und security limits auf war ein long-task observer kann Bericht über them (sehen Troubleshooting), so ein unattributed task in Ihre trace ist nicht proof kein third party ist involved — es may just bedeuten the attribution API ist nicht allowed zu mitteilen Sie.

wie zu fix high TBT

The fixes sind the gleich family als the INP fixes — both come down zu ein blocked main thread.

  1. finden the long tasks. offen the Chrome DevTools Performance panel und look für tasks over 50 ms (sie sind flagged mit red corners), oder ausführen the Lighthouse “vermeiden long main-thread tasks” audit.
  2. Audit Drittanbieter- scripts erste. sie sind usually the easiest wins. verwenden the DevTools Coverage und Network tabs zu sehen war jede script costs, und lazy-load heavy embeds (YouTube, maps, chat) behind ein facade.
  3. Break up the long tasks. Yield zu the main thread so the browser kann handle input zwischen chunks — “wenn tasks sind broken up, the browser kann respond zu higher-priority arbeiten much sooner—einschließlich user interactions.” The modern API ist scheduler.yield(), mit ein setTimeout(resolve, 0) fallback (sehen the Cheat Sheets tab für the pattern). Note that Google kein longer recommends isInputPending() — yield regardless von whether input ist pending.
  4. Reduce the JavaScript. Code-split large bundles so weniger parses und evaluates bei load, entfernen unused JS (DevTools Coverage tab zeigt Sie war), und defer non-critical scripts.
  5. Move heavy computation off the main thread. Web Workers ausführen CPU-heavy arbeiten auf ein separate thread, leaving the main thread free zu respond.

ein nützlich side effect: long tasks that block the main thread kann auch delay Largest Contentful Paint rendering, so fixing TBT sometimes improves LCP too — especially wenn render-blocking JS ist involved.

wo zu go nächste

TBT lives in the Core Web Vitals family alongside its field counterpart Interaction to Next Paint, the loading metrics Largest Contentful Paint und First Contentful Paint, und the lab Tools Lighthouse, PageSpeed Insights, und Speed Index that Bericht them. wenn Sie nur remember one thing: TBT ist the lab warning light für field responsiveness — chase the long tasks, nicht the number.

Add an expert note

Pin an expert quote

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