TTFB: what it means, what moves it, and when to stop caring
Time to first byte is the server's thinking time before it starts replying, and for WordPress it bundles connection overhead with PHP and database work. What the number includes, what actually moves it, what it leaves out, and how to compare your own measurements before and after a change.

By Sam Moreton
First-hand + researched
Time to first byte is the server's thinking time: the gap between your request going out and the first byte of the answer coming back. For a WordPress page it includes the DNS lookup, making the connection, the TLS handshake, and then the server's own work, PHP running, plugins loading, the database answering, the cache being consulted. Two things move it more than anything else on a WordPress site: page caching, which turns repeat visits into something close to static file serving, and geographic distance, which a CDN addresses. What it never tells you is the whole page experience; a page can deliver its first byte instantly and still feel slow while it downloads and renders.
What the timer actually includes
Unless you control the measurement, TTFB is a bundle. DNS, connection, and handshake sit in front of the server's work, and a tool testing from another continent mixes all of it into one number. Two habits fix that: measure from where your visitors are, and use a tool that breaks the timing down. Browser developer tools separate connecting from waiting; curl's timing options do the same from the command line. Compare like with like. A TTFB measured from a phone on mobile data in one country and a TTFB measured from a datacentre in another are unrelated numbers. Comparisons that quote TTFB without naming the vantage point are ranking distances as much as servers, and hosting arguments get built on exactly such pairs.
What actually moves it
Page caching is the big lever. An uncached WordPress request boots the application, loads every plugin, runs its queries, and renders the page. A cached request skips nearly all of that and serves stored HTML, so the first byte arrives after web server work instead of application work. Nothing else in the WordPress stack changes TTFB as much as whether the cache was hit.
PHP and database time follow. A newer PHP version, a theme that does less before producing output, fewer plugins doing work on every request, and queries that are neither repeated nor slow all pull uncached TTFB down. This is slower, grinding work compared with switching a cache on, and it is also the work that helps admin screens, carts, and the first visitor after a cache expiry, where the cache cannot.
Distance is the third. Physics charges for round trips, and a server far from the visitor pays on every one. A CDN serves cached HTML from near the visitor, which is the fix for distance on cached pages. It cannot do the same for uncached requests, which still travel to the origin and wait for PHP there; a CDN in front of a slow origin is a fast road to a slow building.
What the number leaves out
Total page experience. Largest Contentful Paint, the headline metric in field data, depends on the HTML arriving, the largest image or hero element downloading, and render-blocking scripts getting out of the way. TTFB is the first cost the visitor pays and one of several. A site can shave first-byte time and move the felt delay into an oversized hero image, and the visitor will not thank you for the chart going the right way.
Cached and uncached mean different things here
On a page-cached site, cached TTFB is the experience most visitors get, and it is worth keeping low and stable. Uncached TTFB, on the first hit after expiry, on admin and cart pages, on search, is a reading on the engine itself. Watch its trend over months: a steady climb means plugin debt or a growing database arriving quietly. A creeping cache miss rate, a busier cart, more concurrent admin users: any of these moves uncached TTFB with no code change, which is why the trend matters more than any single reading. Treat cached TTFB as the thing you ship and uncached TTFB as the diagnostic that warns you before shipping gets worse.
Comparing your own numbers
No external threshold imports cleanly onto your site, so your baseline is the standard. Measure before and after each change, one change at a time, on the same page, in the same cache state, from the same tool and location, several samples each, and compare medians. Write the conditions down next to the numbers. A before-and-after with the conditions attached is evidence; a feeling that the site seems nippier this week is a mood. The visitor-facing work that follows, assets, rendering, caching setup, is laid out in the WordPress speed guide.
When to stop caring
When cached TTFB is small and stable relative to the page's total load time, further squeezing returns little, and the remaining effort belongs in assets, rendering, and field data. At the other end, TTFB under load is a capacity signal: the load testing guide shows how to find the request rate at which first-byte times climb, which is the point where your server is telling you it is full.