Time to First Byte (TTFB)

What TTFB measures, why it isn't a Core Web Vital, how it caps your LCP and FCP, what counts as good, and how to fix a slow server response.

First published: Jun 26, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #9 in Web Vitals#18 in Web Performance#162 in Technical SEO#219 on the site

Time to First Byte is the time from the start of a request to when the first byte of the response arrives — the sum of redirect time, service worker startup, DNS lookup, connection and TLS negotiation, and the request itself. It is not a Core Web Vital; it's a diagnostic, foundational metric and a major input to FCP and LCP. web.dev says aim for ≤0.8 s (good) and treats >1.8 s as poor. It's both a field and lab metric. Lighthouse's 'Reduce server response times' audit is narrower — it flags server time over ~600 ms, not full TTFB, and as of Lighthouse 13 lives inside the 'Document request latency' insight. Fix it with a CDN, edge/HTML caching, faster hosting, fewer redirects, Early Hints, and efficient TLS. And remember: a high TTFB doesn't always mean a slow site.

TL;DR — TTFBTime to First Byte — the time from the start of a request to when the first byte of the response arrives. It's a diagnostic metric (not a Core Web Vital) and a major input to FCP and LCP; ≤0.8 s is good. is the time from the start of the request to when the first byte of the response arrives — the sum of redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. time, service worker startup, DNS lookup, connection + TLS negotiation, and the request itself, up to that first byte. It is not a Core Web Vital; it’s a foundational, diagnostic metric that feeds FCPFirst Contentful Paint — the time from when a page starts loading to when any part of its content (text, image, SVG, or non-white canvas) first renders. Good is ≤1.8 s at the 75th percentile. It's a diagnostic metric, not a Core Web Vital. and LCPLargest Contentful Paint — render time of the largest visible image or text block, relative to when the page started loading. ≤2.5 s (at the 75th percentile) is good.. web.dev: good is ≤0.8 s, poor is >1.8 s (75th percentile). It’s both a field and a lab metric. LighthouseLighthouse is Google's free, open-source tool that audits a page under simulated lab conditions and scores it 0–100 across Performance, Accessibility, Best Practices, and SEO. It's lab data — useful for debugging, not a ranking signal.’s “Reduce server response times” audit is narrower — it flags server time over ~600 ms, not full TTFB, and as of LighthouseLighthouse is Google's free, open-source tool that audits a page under simulated lab conditions and scores it 0–100 across Performance, Accessibility, Best Practices, and SEO. It's lab data — useful for debugging, not a ranking signal. 13 it lives inside the “Document request latency” insight. Fix it with a CDN, edge/HTML cachingCaching stores a copy of a page or resource — in a browser, a CDN edge node, or a search crawler's own cache — so it can be served again without regenerating or re-downloading it. It isn't a direct ranking factor, but it feeds page speed and crawl efficiency., faster hosting, fewer redirects, 103 Early Hints, and efficient TLS. And a high TTFB doesn’t always mean a slow site.

What TTFB actually measures

TTFB measures the time between starting to navigate to a page and when the first byte of the response begins to arrive. The thing people get wrong is treating it as pure backend processing time. It isn’t. It’s the sum of everything that has to finish before that first byte can come back:

  1. Redirect time
  2. Service worker startup time (if one applies)
  3. DNS lookup
  4. Connection and TLS negotiation
  5. The request — up until the point the first byte of the response has arrived

Server processing is in there, but so is the whole connection-setup tax. That distinction matters the moment you start reading tools, because they don’t all measure the same slice (more on that below).

Evidence for this claim TTFB measures from request start until the first response byte and includes redirect, connection setup, and server-response time. Scope: Current web.dev navigation TTFB definition. Confidence: high · Verified: web.dev: Time to First Byte

It is not a Core Web Vital

I’ll say it plainly because it’s the single most common misconception: TTFB is not a Core Web Vital. The three Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data. are LCPLargest Contentful Paint — render time of the largest visible image or text block, relative to when the page started loading. ≤2.5 s (at the 75th percentile) is good. (loading), INPInteraction to Next Paint — the input-to-paint latency at the 75th percentile of a page's interactions. ≤200 ms is good. (interactivity), and CLSCumulative Layout Shift — a unitless score for unexpected visual movement, taken from the largest burst (session window) of layout shifts, not the lifetime sum. ≤0.1 is good. (visual stability). TTFB is a foundational, diagnostic metric — Google’s own framing is that it’s “a foundational metric for measuring connection setup time and web server responsiveness in both the lab and the field.”

Google is also explicit that you don’t strictly have to hit the good TTFB threshold: because it isn’t a Core Web Vital, it’s “not absolutely necessary that sites meet the ‘good’ TTFB threshold, provided that it doesn’t impede their ability to score well on the metrics that matter.” That last clause is the catch — for most sites a bad TTFB absolutely does impede the metrics that matter.

How it caps FCP and LCP

TTFB precedes every user-centric loading metric. Both First Contentful Paint and Largest Contentful Paint include TTFB in their measurement — the clock for those metrics is already running while you wait for the first byte. web.dev breaks LCP into sub-parts and TTFB is the first of them, which is why you can’t have a fast LCP sitting on top of a slow TTFB.

This is also where the real-world data gets pointed. The HTTP Archive’s Web Almanac foundA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. that on sites with poor LCP, TTFB alone was eating roughly 2.27 seconds — nearly the entire 2.5-second “good LCP” budget — before any image or text even started to render. If your LCP is bad and your on-page content looks optimized, TTFB is the first place I’d look.

So the ranking story is indirect but real: TTFB is not a Google ranking signal (the ranking signals are LCP, INPInteraction to Next Paint — the input-to-paint latency at the 75th percentile of a page's interactions. ≤200 ms is good., and CLSCumulative Layout Shift — a unitless score for unexpected visual movement, taken from the largest burst (session window) of layout shifts, not the lifetime sum. ≤0.1 is good. — TTFB isn’t named in that set). But it’s baked into LCP, which is a ranking signal. The path runs through LCP, not through TTFB directly.

Thresholds: good, needs improvement, poor

web.dev’s guidance, measured at the 75th percentile of real-user loads:

  • Good: ≤ 0.8 s
  • Poor: > 1.8 s
Evidence for this claim web.dev recommends a TTFB of 0.8 seconds or less; above 1.8 seconds is poor at the 75th percentile. Scope: Current web.dev TTFB guidance; TTFB is diagnostic, not a Core Web Vital. Confidence: high · Verified: web.dev: Time to First Byte

“Most sites should strive to have a TTFB of 0.8 seconds or less.” Worth knowing the history: Google moved the “good” line from 500 ms to 800 ms back in 2022, and older data was recalculated under the new standard — so don’t compare raw historical TTFB numbers without checking which threshold they used.

The 600 ms vs 800 ms confusion

This trips up a lot of people, so it’s worth being precise. There are two different numbers floating around:

  • CrUXChrome User Experience Report — Google's public dataset of real-world (field) performance data from eligible Chrome users. It's the official field-data source behind the Core Web Vitals program. / web.dev TTFB threshold: 800 ms. This is the field threshold for full TTFB (DNS + connection + TLS + redirects + server time).
  • Lighthouse “Reduce server response times” audit: ~600 ms. This is a lab audit that flags when the browser waits more than about 600 ms for the server to respond to the main document request. Crucially, it measures server response time only — it does not include DNS, connection setup, or TLS.

So the Lighthouse number looks stricter, but it’s measuring a narrower slice. As the docs put it, “server response time is only part of the full Time to First Byte (TTFB).” Don’t treat a passing Lighthouse audit as proof of a good field TTFB, and don’t panic that 600 < 800 means the thresholds contradict each other — they measure different things.

One version note: as of Lighthouse 13, this audit no longer stands alone — it’s been folded into the broader “Document request latency” insight. The underlying ~600 ms server-response check is the same; it’s just surfaced differently depending on which Lighthouse version generated your report.

Field and lab — both

TTFB is one of the metrics you can read in both worlds. In the field, it comes from CrUX (real Chrome users), surfaced in PageSpeed InsightsPageSpeed Insights (PSI) is a free Google tool at pagespeed.web.dev that reports two kinds of data for a URL: real-user field data from the Chrome UX Report and a single Lighthouse lab run with the 0–100 Performance score. Only the field Core Web Vitals are what Google uses for ranking. and Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance.. In the lab, Chrome DevTools labels it “Waiting (TTFB)” in the Network panel waterfall (“the browser is waiting for the first byte of a response”), and tools like WebPageTestWebPageTest is a free, open-source, lab-based website performance testing tool — created by Patrick Meenan in 2008 and acquired by Catchpoint in 2020 — that runs pages on real browsers from distributed locations and produces deep diagnostics (waterfalls, filmstrips, connection views, Core Web Vitals). It's a diagnostic tool, not a Google ranking input. and Lighthouse report it too. One field caveat: in CrUX, TTFB is still treated as somewhat experimental — it excludes some advanced navigation types like prerendered and back/forward-cache navigations, so field averages can read a touch pessimistic relative to what users actually feel.

A high TTFB doesn’t always mean a slow site

Here’s the nuance that the threshold numbers hide. A server-rendered page can post a higher TTFB than a client-rendered one and still deliver better FCPFirst Contentful Paint — the time from when a page starts loading to when any part of its content (text, image, SVG, or non-white canvas) first renders. Good is ≤1.8 s at the 75th percentile. It's a diagnostic metric, not a Core Web Vital. and LCP — because when that first byte finally arrives, it’s complete HTML the browser can paint immediately, rather than a thin shell that then has to fetch and run a JavaScript bundle before anything appears. Google says it directly: “a server-rendered site that does not require as much client-side work could have a higher TTFB, but better FCP and LCP values than an entirely client-rendered experience.”

The flip side: for a client-rendered single-page app, TTFB determines when the JavaScript bundle even starts loading, so a low TTFB matters more there, not less. Don’t optimize TTFB in a vacuum — optimize the whole loading chain, and judge TTFB by what it does to FCP and LCP.

How to improve TTFB

Roughly in priority order:

  • Start with hosting. A slow backend or database query is a tax on every single request, and no amount of front-end work removes it. This is the first thing to consider.
  • Use a CDN. A CDN solves the proximity problem — a distributed network of edge servers caches resources physically closer to your users, cutting the speed-of-light cost of the connection and TLS handshake. It’s the highest-ROI fix for most sites, because geographic distance from your origin is a structural tax nothing on the backend can erase. The caveat: for fully dynamic, personalized content that can’t be cached, a CDN adds a hop without a cache-hit payoff — there the answer is backend optimization, edge compute, or streaming.
  • Cache your HTML, even briefly. Even a short cache time helps a busy site noticeably: only the first visitor in that window pays the full latency back to the origin; everyone else gets the cached copy.
  • Eliminate redirects. Redirects are a common contributor to high TTFB — each one is a round trip before the real response starts. Cut the ones under your control.
  • Stream markup to the browser. Browsers process markup efficiently when it’s streamed in chunks as it arrives. Many SSR frameworks support streaming but it’s left switched off; turning it on can drop TTFB on dynamic pages with no infrastructure change at all.
  • Use 103 Early Hints. The 103 status code is a preliminary response the server can send while the backend is still preparing the markup, hinting to the browser to begin downloading render-critical resources early. It doesn’t lower TTFB itself — in fact a 103 can count as the “first byte” — but it shrinks the impact of a high TTFB. Shopify and Cloudflare have reported several hundred milliseconds of LCP improvement from it, in some cases close to a second.
  • Negotiate TLS efficiently and optimize service worker startup. A service worker that hasn’t started yet adds its startup time to TTFB; once running, its cache (stale-while-revalidate, or an app-shell model for SPAs) can dramatically reduce TTFB.

Where sites actually stand

The reason this is worth your attention: it’s a stubborn problem across the web. The Web Almanac’s mobile good-TTFB rate has barely moved in five years — hovering around 41–42% — meaning a majority of mobile sites still don’t have a “good” TTFB. That stagnation is, frankly, an opportunity. For a server-heavy site failing LCP, TTFB is usually the highest-leverage fix on the board.

This page is part of the web-performance cluster, which sits under Core Web Vitals. For the metrics TTFB feeds into, see Largest Contentful Paint and First Contentful Paint; to measure it on real users and in the lab, see CrUX, PageSpeed Insights, and Lighthouse.

Add an expert note

Pin an expert quote

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