To find the 95th percentile, sort your data from smallest to largest, then locate the value below which 95% of your data points fall. The exact method depends on whether you’re working by hand, in a spreadsheet, or with a normal distribution, but the core idea is the same: you’re identifying the cutoff point that separates the top 5% from the rest.
The Rank Method for Raw Data
If you have a list of actual data points, the most straightforward approach uses a simple rank formula. Here’s how it works step by step:
- Sort your data from smallest to largest.
- Calculate the rank position using the formula: rank = (P / 100) × (N + 1), where P is the percentile you want (95) and N is the number of data points.
- Find the value at that position in your sorted list.
Say you have 20 test scores. The rank position for the 95th percentile would be (95 / 100) × (20 + 1) = 19.95. That means the 95th percentile falls between the 19th and 20th values in your sorted list.
What to Do When the Rank Isn’t a Whole Number
Most of the time, your rank calculation won’t land on a neat integer. When that happens, you interpolate between the two nearest values. Using the example above, a rank of 19.95 means you take the 19th value and the 20th value, then calculate a weighted average.
The process works like this: take the decimal portion of your rank (0.95 in this case) and multiply it by the difference between the two surrounding values. Then add that result to the lower value. If your 19th value is 88 and your 20th value is 92, the calculation would be 88 + (0.95 × (92 − 88)) = 88 + 3.8 = 91.8. That’s your 95th percentile.
This linear interpolation method is the default in most statistical software, including Python’s NumPy library and common spreadsheet tools. It produces a smooth estimate rather than forcing you to pick one data point or the other.
Using the Normal Distribution
When your data follows a bell curve (or you’re told to assume it does), you can find the 95th percentile using a z-score. The z-score for the 95th percentile of a standard normal distribution is 1.645. This value appears on standard normal tables and is one of the most commonly referenced thresholds in statistics.
To convert that z-score into an actual value for your data, use the formula: 95th percentile = mean + (1.645 × standard deviation). If a set of exam scores has a mean of 500 and a standard deviation of 100, the 95th percentile would be 500 + (1.645 × 100) = 664.5.
One common point of confusion: the z-score of 1.645 gives you the one-tailed 95th percentile, meaning 95% of values fall below it. This is different from the z-score of 1.96, which is used for 95% confidence intervals. Confidence intervals split the remaining 5% across both tails of the distribution (2.5% on each side), so they use a higher z-score.
Finding It in Grouped or Frequency Data
Sometimes you don’t have individual data points. Instead, you have data organized into ranges with frequencies, like “10 students scored between 70 and 79.” For grouped data, the formula adjusts to account for the intervals:
Percentile value = L + ((R × N / 100 − M) / F) × C
In this formula, L is the lower boundary of the interval containing the 95th percentile, R is the percentile you want (95), N is the total number of observations, M is the cumulative frequency of all intervals below the one containing your percentile, F is the frequency within that interval, and C is the class width (the size of each interval).
The first step is figuring out which interval contains the 95th percentile. Multiply 0.95 by the total number of observations, then look at your cumulative frequencies to find where that count falls. Once you’ve identified the correct interval, plug the values into the formula.
Calculating It in Excel or Google Sheets
Spreadsheets make this simple. In Excel, type =PERCENTILE.INC(A1:A100, 0.95), replacing the cell range with your actual data. This returns the 95th percentile using an inclusive method, meaning both the minimum and maximum of your dataset are treated as the 0th and 100th percentiles.
Excel also offers PERCENTILE.EXC, which uses an exclusive method. The exclusive version treats the minimum and maximum as slightly outside the 0th and 100th percentiles, which can produce slightly different results, especially with small datasets. For most practical purposes, PERCENTILE.INC is the standard choice.
In Google Sheets, the function works the same way: =PERCENTILE(A1:A100, 0.95).
Calculating It in Python or R
In Python, NumPy handles percentiles with a single function call: numpy.percentile(data, 95). By default, it uses linear interpolation, which matches the method described in the rank section above. NumPy supports over a dozen alternative methods, including options labeled “weibull,” “hazen,” and “median_unbiased,” though the default linear method works well for general use.
In R, the function is quantile(data, 0.95). R defaults to its “type 7” method, which also uses linear interpolation. Both R and Python will return the same result under their default settings for most datasets.
Where the 95th Percentile Shows Up in Practice
The 95th percentile isn’t just an academic exercise. It’s a standard threshold in several fields. In pediatric medicine, the CDC defines childhood obesity as a BMI at or above the 95th percentile for age and sex. Growth charts at your child’s checkup are plotting their height and weight against these percentile curves.
In standardized testing, the 95th percentile on the SAT corresponds to a composite score of roughly 1430 to 1440, based on recent College Board data. That means scoring around 1430 puts you ahead of 95% of test-takers.
Internet service providers use the 95th percentile for bandwidth billing. They sample your network usage every few minutes over a billing cycle, sort all those samples, discard the top 5% (your occasional traffic spikes), and bill you based on the highest remaining value. If you have one week of samples taken every minute, that’s 10,080 data points. The provider removes the top 504 and charges based on sample number 505. This approach lets customers handle short bursts of heavy traffic without paying for peak usage all month.

