12 October 2026 · latency

Why 20 ms is not 20 ms

When a dashboard says the round-trip time to a region is 20 ms, it usually means the median of a sample. The median is a useful summary, but it is not the thing users feel. Users feel the tail: the request that took 400 ms because a retransmission timer fired, or the page that stalled because one connection landed on a congested path.

I keep coming back to a simple exercise: plot the 50th, 95th and 99th percentiles on the same axis, then ask which one corresponds to a visible interaction. For a page with twenty subresources, the 95th percentile is not an edge case. It is part of the normal experience.

The average is a lie of omission

Averages compress a distribution into a number that no individual packet ever experiences. If half the requests take 10 ms and half take 300 ms, the average is 155 ms — a value that describes nobody. Percentiles at least admit that the distribution has a shape.

Measure the tail, not the middle. The middle is where you are already comfortable.

What I look at now

None of this is novel. It is just easy to forget when the dashboard shows a single green number.

← back to notes