Percentiles and p95, explained
A monitor checked every minute produces 1,440 latency measurements a day. Nobody reads 1,440 numbers, so they get summarized — and the choice of summary decides whether problems stay visible or disappear.
Why averages lie
Take a realistic day: 100 checks, where 90 answer in 80 ms and 10 answer in 3,000 ms because the server stalls under a nightly job. The average is 372 ms — a number that describes not a single request that actually happened. The fast majority drags it down, the slow minority drags it up, and the result points at nothing. Worse, an average barely moves when a serious-but-occasional slowdown appears, so the graph stays calm while one user in ten suffers.
Reading p50, p95, p99
A percentile takes the same measurements, sorts them, and reads a position instead of computing a blend:
| Percentile | What it says | In the example above |
|---|---|---|
| p50 (median) | Half of all checks were this fast or faster | 80 ms |
| p95 | 95% of checks were at or below this; 1 in 20 was slower | 3,000 ms |
| p99 | 99% at or below; only 1 in 100 was slower | 3,000 ms |
p50 is the typical experience. p95 is the experience of the unlucky — and with real traffic, "1 in 20 requests" is every regular user, several times a day. The gap between p50 and p95 is itself diagnostic: a small gap means consistent performance; a wide gap means instability an average would have hidden entirely.
Why p95 specifically
- Compared to the average, p95 refuses to be diluted: if any meaningful slice of checks is slow, p95 says so.
- Compared to p99, p95 is statistically stable at monitoring sample sizes. Across 24 hours of one-minute checks, p99 is decided by about 14 measurements — one transient blip whips it around. p95 rests on enough data to move only when something real changes.
Averages hide; p99 overreacts; p95 is the working compromise — sensitive enough to expose real degradation, stable enough to be worth publishing.
Where UpAll uses it
- Status pages — when the response-times option is enabled, the page shows each monitor's p95 over the last 24 hours (status page options).
- Monthly SLA reports — include p95 per monitored system, so the client sees latency, not just uptime (what's in a report).
- The console — the monitor's latency chart shows the raw stream behind the summary (reading monitor charts).
When p95 is high but uptime is perfect, you're looking at the classic "up but slow" condition — see what is latency for why that state deserves attention.