Skip to main content

P90, P95 & P99 Latency Simulator

Learn latency percentiles with an interactive simulator. Generate request samples, visualize distributions, compare average latency with P50, P90, P95, and P99, and see how tail latency affects real users.

Category: Monitoring

What You Will Learn

  • Understand that P90, P95, and P99 are percentile rank cutoffs
  • Visualize how latency distributions create long-tail behavior
  • Compare average latency, median latency, and percentile latency
  • See why P99 exposes slow requests that averages can hide
  • Practice choosing the right latency metric for SLOs and incident response

Topics covered: latency, percentiles, p90, p95, p99, monitoring, observability, sre, performance, slo, educational, interactive

// simulator

P90, P95 & P99 Latency Simulator

Learn latency percentiles with an interactive simulator. Generate request samples, visualize distributions, compare average latency with P50, P90, P95, and P99, and see how tail latency affects real users.

Supported byBecome a sponsor
BitriseAtomsizedDigitalOceanDevDojoSMTPfastQuizAPI
0/4

Missions

400 requests

Goal: Get P95 within 1.3x of P50: a tight, healthy service. Healthy API keeps requests close together.

P50 60ms, P95 90ms, P99 193ms, average 64ms

Average
64ms
P50
60ms
P90
80ms
P95
90ms
P99
193ms

How P90, P95, and P99 latency work

Percentiles are sorted ranks

  • P90: sort every request by latency. The P90 value is the point where 90% of requests are at or below that value.
  • P95: leaves only the slowest 5% above the cutoff, which makes it useful for SLOs and user-facing dashboards.
  • P99: focuses on the slowest 1%, so it exposes rare but painful paths that averages often hide.

Why average is not enough

  • A few very slow requests can be invisible when the median and average look normal.
  • Tail latency often comes from retries, lock waits, cold starts, cache misses, or slow dependencies.
  • Percentiles show how many users are affected, not just how slow the typical request is.

How to use them in practice

  • Use P50 to understand the normal request path.
  • Use P90 or P95 to track broad user experience and SLO health.
  • Use P99 to investigate tail events, capacity limits, and reliability regressions.

Overview

Latency percentiles answer a question averages cannot: how slow are the slowest requests? P90, P95 and P99 are cutoffs in a sorted list of request times. P99 is the time that 99 percent of requests are faster than, so one request in a hundred is slower. This simulator plots a latency distribution with P90, P95 and P99 markers and shows the average and P50 in separate metric cards, so you can see how a long tail moves the high percentiles while the average and median barely change. Five scenarios show common shapes: a healthy API where the percentiles sit close together, cache churn where misses add a visible upper band, a noisy neighbor whose CPU and disk contention stretch the tail, cold starts where a few very slow requests dominate P99, and a rolling deploy where warmup, image pulls and connection churn create a fat tail. The takeaway is practical: an average can look fine while one user in a hundred waits seconds, so SLOs and alerts should be written against high percentiles, and the metric has to match the experience you are promising.

Try this

  1. Start with "Healthy API" and compare the average, P50 and P99 values in the metric cards.
  2. Switch to "Cold Starts" and watch P99 jump while the median hardly moves.
  3. Compare "Cache Churn" and "Noisy Neighbor" to see two different reasons a tail can grow.

Frequently asked questions

What does P99 latency mean?
99 percent of requests completed faster than the P99 value, so 1 percent were slower. It describes the experience of the slowest requests, which averages hide.
Why is average latency misleading?
A few very slow requests barely move the average when most are fast, yet those are the requests users notice. Percentiles show the tail directly.
Can you average percentiles across servers?
No. The average of each server P99 is not the P99 of all requests. You need the combined distribution, for example from histogram buckets, to compute a correct overall percentile.

Try next

Sponsored
Carbon Ads