Skip to content

Metrics & Measurement

What Are P95 and P99 Percentiles?

A P95 of 800 ms means 95% of requests finished within 800 ms. P99 says the same at 99% — both describe the slow tail that an average conceals.

Also known as: P95, P99, 95th Percentile, 99th Percentile, Tail Latency

Why the average lies

Take 100 requests: 95 finish in 100 ms and 5 take 4 seconds. The mean is 295 ms, which sounds fine and describes not one single request in the set. The P95 is 4 seconds, which describes exactly what the unlucky users got.

Response-time distributions are always skewed like this, so the mean sits in an empty valley between the fast bulk and the slow tail. Percentiles report positions in the actual distribution, which is why every serious latency SLO is written in percentiles.

Who actually feels the tail

“Only 1% of requests” sounds negligible until you count per user rather than per request. A page that makes 20 API calls has roughly a 1 - 0.99²⁰ ≈ 18% chance of containing at least one P99 request — so nearly a fifth of page loads carry your worst-case latency.

This is why P99 matters far more than its share of traffic suggests, and why tail latency dominates perceived performance in anything request-heavy. Users do not experience percentiles; they experience the slowest thing on the page.

You cannot average percentiles

The P95 of two servers is not the average of their two P95 values, and the P95 of an hour is not the average of its sixty per-minute P95s. Percentiles are positions in a distribution, and positions do not add. Averaging them produces a number that is usually optimistic and always wrong.

Correct aggregation requires the underlying distribution — merged raw samples, or a mergeable sketch such as a histogram or t-digest. If a dashboard shows a P95 aggregated across shards or time windows, check how it was computed before trusting it in an SLO.

Choosing which percentile to target

P95 is the usual choice for a user-facing SLO: strict enough to catch real degradation, stable enough not to swing on a handful of samples. P99 and P99.9 are for systems where the tail is the product — payments, ad bidding, trading — and they need large sample counts to mean anything.

Always report the max alongside. A P99 of 900 ms with a max of 45 seconds is describing a timeout bug the percentile alone would let you miss.

Related terms

Ready to push your limits?

Start with 500 VUs, real cloud infrastructure, and real metrics — no credit card required. Upgrade only when you outgrow it.

Free forever — 500 VUs, 10-minute runs, no credit card