TL;DR — Quick Summary
TTI measures when the page becomes fully interactive — the main thread has a 5-second quiet window with no long tasks. Good TTI is ≤ 3.8s. Largely replaced by TBT (lab) and INP (field) but useful for diagnosing heavy JavaScript loading.
What is Time to Interactive (TTI)?
Time to Interactive identifies the point where the page's main thread has been free of long tasks for at least 5 seconds and all critical resources have loaded. The algorithm:
- 1Start from FCP.
- 2Search forward for a 5-second window with no long tasks (> 50ms) and ≤ 2 in-flight network requests.
- 3TTI = the beginning of that quiet window.
TTI is fragile: a single long task can push it dramatically later. This is why TBT (which sums blocking time) is considered more reliable.
TTI Thresholds
| Metric | Good | Needs Improvement | Poor |
|---|---|---|---|
| TTI | ≤ 3.8s | 3.8s – 7.3s | > 7.3s |
Google evaluates the 75th percentile (p75) of real-user field data over a rolling 28-day window.
History & Evolution
Key milestones:
- •2017 — TTI introduced in Lighthouse as a key interactivity metric.
- •2019 — TBT introduced as a complementary, more stable metric.
- •2023 — Lighthouse 10 removes TTI from the performance score.
- •2024 — INP replaces FID as the CWV interactivity metric. TTI becomes diagnostic-only.
- •2025–2026 — TTI remains available in Lighthouse but carries 0% weight.
How TTI is Measured
Lab metric measured by Lighthouse and WebPageTest. Looks for a 5-second quiet window after FCP.
Available in:
- •Lighthouse (diagnostic, 0% weight)
- •WebPageTest
- •Chrome DevTools Performance panel
Key rule: Field data (CrUX) determines Google rankings. Lab data (Lighthouse, WebPageTest) is for debugging and iteration.
Common Causes of Poor TTI Scores
- 1Large JavaScript bundles — Parsing and executing a 1MB JS bundle creates many long tasks.
- 2Third-party scripts — Analytics, chat, ads load after FCP and create long tasks.
- 3Framework hydration — React/Vue/Angular hydration can create 200ms+ long tasks.
- 4No code splitting — Loading all application code upfront.
- 5Synchronous API calls on load — Data fetching that blocks the main thread.
Frequently Asked Questions
For step-by-step optimization, platform-specific fixes, code examples, and case studies, read our full guide:
The Ultimate Guide to Core Web Vitals: How to Pass All Metrics & Boost Rankings in 2026Struggling with TTI?
Request a free speed audit and we'll identify exactly what's holding your scores back.