· updated 2026-10-07
TTFB (Time To First Byte) measures how long the server takes to start sending a response. It is the first number worth measuring — everything else happens after it.
Benchmarks
- under 200 ms — very good;
- 200–500 ms — normal for WordPress;
- 500–1000 ms — there is work to do;
- over 1000 ms — the problem is the server or the code, not the images.
The usual causes
- No page cache. Every visit re-runs PHP and queries the database.
- Slow database queries. Usually missing indexes or a bloated
wp_optionstable full of autoloaded rows. - External calls during rendering. A plugin that asks a remote API on every request and waits for the answer.
- Too few PHP-FPM workers. Requests queue even though the server is not busy.
- An old PHP version. Moving from 7.4 to 8.3 often gives 20–40% with no code changes.
How to measure
The simplest way is the browser Network panel, the “Waiting (TTFB)” column. More reliably, measure several times from different locations and separate the first (uncached) load from repeats. If TTFB is only good on the second load, the cache works but its lifetime is too short.
Server-side tuning — nginx, Redis, PHP-FPM — is part of our technical management.