Latency Percentile Calculator

Paste numbers in any unit, separated by spaces, commas or newlines. Straight from a log or a spreadsheet column is fine.

Paste samples above to see P50 through P99.9, min, mean and max.

Paste samples straight from a log and read the percentiles that matter.

What P50, P95 and P99 latency mean

A percentile is a position in your sorted response times, not a calculation over them. P50 is the value half your requests came in under. P95 is the value 95% came in under. P99 is the value 99% came in under, so one request in a hundred was slower than that.

The reason engineers reach for percentiles rather than the average is that averages conceal the people having a bad time. A service averaging 100ms could be serving every request in 100ms, or serving most in 20ms and one in fifty in three seconds. Those are different services, and only one of them has angry users. The average cannot tell them apart; P50 next to P99 can.

How a percentile is calculated

Sort every sample from fastest to slowest, then read off the value at the position you want. For P99 of 1,000 samples that is the 990th value. For P95 of the same set, the 950th. No arithmetic is performed on the numbers themselves, which is exactly why a percentile resists outliers in a way the mean does not.

The position rarely lands on a whole number, and how you handle that is where tools disagree. This one interpolates linearly between the two neighbouring samples, which is the common convention. With small sample counts the difference between methods is visible, which is a good reason not to trust a P99 taken from a handful of requests.

P90 against P95 against P99

They differ only in how far into the tail you look, but in practice they describe different failures. A service might read 80ms at P90, 200ms at P95 and two seconds at P99. P90 largely reflects ordinary load. P99 is where garbage collection pauses, cold caches, lock contention, connection pool exhaustion and retries show up.

That gap is the useful signal. When P99 sits at many multiples of the median, a minority of requests is taking a genuinely different path through the system, and the fix is usually structural rather than a matter of general tuning. Our latency budget calculator is the companion for deciding where that time is allowed to go.

How many samples a percentile needs

Roughly a few hundred requests before P99 means anything, and a few thousand before P99.9 does. Below that you are not measuring the tail, you are reporting your slowest sample with a decimal point attached. Ten samples cannot have a 99th percentile in any meaningful sense, however confidently a dashboard prints one.

Latency percentile FAQs

Why use percentiles instead of the average?

Averages hide the users having a bad time. A service can average 100ms while one request in fifty takes three seconds, and those are the requests people remember. P50 describes the typical experience, P99 describes the worst one in a hundred, and both matter.

What does P99 mean exactly?

99% of sampled requests completed at or below that value. If P99 is 800ms, one request in a hundred took longer. At scale that is a lot of requests: a million requests a day means ten thousand of them beyond P99.

What does P50 latency mean?

P50 is the median: half of requests were faster, half slower. It describes the typical experience, which is why it is a better summary than the average. An average of 100ms can come from every request taking 100ms, or from most taking 20ms and a few taking four seconds, and those are very different services. P50 cannot be dragged around by a handful of slow outliers.

How is P99 calculated?

Sort every sample from fastest to slowest, then take the value at 99% of the way through the list. With 1,000 samples that is the 990th. When the position lands between two samples, the usual approach is linear interpolation between them, which is what this calculator does. There is no averaging involved: a percentile is always a position in the sorted data.

What is the difference between P90, P95 and P99?

Only how far into the tail you look. P90 is the slowest request in ten, P95 the slowest in twenty, P99 the slowest in a hundred. They usually diverge sharply: a service might run 80ms at P90, 200ms at P95 and 2 seconds at P99, because the causes differ. P90 mostly reflects ordinary load, while P99 exposes garbage collection pauses, cold caches, lock contention and retries.

Which percentile should I use for an SLO?

P95 or P99 for most user-facing services, and P50 alongside it so you can see both the typical and the worst case. P99.9 is worth tracking only when you have enough traffic to measure it, since it needs thousands of samples to mean anything. Setting an SLO on the average is the common mistake: it can be met while a meaningful share of users have a bad time.

How many samples do I need for a trustworthy P99?

As a rule of thumb, at least a few hundred for P99 and a few thousand for P99.9. With ten samples, the top percentiles are just your maximum wearing a costume.

What is tail latency and why the warning?

The gap between typical and worst-case response times. When P99 is many multiples of the median, a minority of requests are taking a very different path: cold caches, garbage collection pauses, lock contention, or an overloaded dependency. The warning fires when P99 exceeds three times the median.

Is my data sent anywhere?

No. Samples are processed in your browser and the page works offline, which matters when the numbers come from production logs.