EDIT · SORT · RANK · COMPARE

Latency percentiles: what does p99 actually select?

Real editable samples, exact ranks and reproducible synthetic cohorts.

Direct calculation · no forced playback

Exact distribution evidence

Histogram bin counts
MillisecondsCount
Sorted samples and rank arithmetic

Start with actual observations

A latency percentile describes an ordered sample, not a separate class of users. This lab stores one duration in milliseconds per observation. The blue histogram groups those durations into bins, but every percentile is calculated from the original sorted values, not from bin centers. The red line shows the selected percentile. The summary reports the mean and three familiar percentiles; the rank explanation tells you which ordered observations determined the selected value. Nothing is uploaded, and no monitoring service is contacted. Do not paste secrets or customer identifiers: only numeric durations are accepted.

Edit the data and reproduce a sample

The Samples field accepts nonnegative decimal numbers separated by commas, semicolons, spaces or newlines, including scientific notation. Values must be finite and at most one billion milliseconds; the limit is ten thousand samples. Empty input produces no observations, not a zero-millisecond healthy service. Invalid input displays an error and leaves the last valid results visible. Distribution chooses a synthetic uniform range from seventy to one hundred thirty milliseconds, a ninety-percent fast / ten-percent slow mixture, or a bounded heavy-tail-shaped sample. The mixture uses forty to sixty milliseconds for fast observations and five hundred to seven hundred for slow ones. Sample count and Seed control generation; press Generate samples to apply them. The same settings reproduce the same two-decimal values. Next seed and generate changes the seed by one and creates another cohort.

Choose the rank definition deliberately

Percentile selects zero through one hundred. Nearest rank returns the observation at rank ceiling of sample count times percentile divided by one hundred, with rank one at percentile zero. Linear interpolation uses position one plus sample count minus one times the percentile fraction, then blends the neighboring values; this is the R type-seven convention. These definitions can disagree for a small sample. The displayed lower rank, upper rank and interpolation weight expose the calculation. Strictly-above and exactly-equal counts are computed from the raw observations, so ties remain visible rather than being silently treated as a continuous distribution.

Try the ninety-nine fast requests experiment

Choose 99 fast + 1 slow. The fixture has ninety-nine observations of ten milliseconds and one of one thousand milliseconds. At p99, nearest rank returns ten; the mean is 19.9. Switch to linear interpolation: p99 becomes 19.9 because it lies one percent of the way from the ninety-ninth value to the hundredth. Select p100 and both methods return one thousand. Choose Append 1000 ms and inspect how the count and rank boundary change. This adds one observation rather than multiplying an animation speed or changing an unrelated score. With all samples equal, zero observations are strictly above the selected percentile.

Separate chart resolution from service targets

Histogram bins changes only visual aggregation; changing it must not change the mean or percentile. The bin table gives exact counts, with left-inclusive and right-exclusive boundaries except the final bin, which includes the maximum. Open the detailed evidence to inspect sorted samples, rank arithmetic and all bin counts. Threshold in milliseconds independently counts observations at or below that value. Set samples to 100, 200, 201 and threshold to 200: exactly two of three meet the threshold. This empirical fraction is not a future reliability guarantee. Clear samples tests the missing-data state; Restore defaults rebuilds the original seeded mixture and resets calculation controls.

Know what this calculator cannot establish

This is an interactive calculator, so edits update immediately rather than forcing a timed playback. Generated distributions are deliberately synthetic, not fitted production data; the heavy-tail example is bounded and no normal distribution is claimed. Requests are equally weighted and there is no coordinated-omission correction, censored timeout handling, confidence interval or distinction between successful and failed requests. A thousand observations provide very little resolution at an extreme percentile. Do not average percentiles from separate servers to estimate a combined percentile; combine appropriately weighted observations or use a suitable mergeable distribution representation. Here the complete sample is retained, unlike a bounded-memory production histogram.

Quantile definitions: R statistics manual: sample quantiles.

Views are my own and do not represent any employer, past or present.

Search