Written and maintained by CASRAI Editorial Board
Last updated
To find a percentile range, sort the data, find the two percentiles you want (for example the 10th and the 90th), and subtract the lower from the higher: P90 − P10. The result is the width of the interval that holds the middle 80% of the values. The one catch is that the answer depends on which percentile formula you use, and Excel, R and the NIST handbook do not use the same one.
Definition in one paragraph
A percentile range (also called an interpercentile range) is the difference between two percentiles of the same data set. It is a measure of spread that ignores the extreme tails. The NIST/SEMATECH e-Handbook defines the pth percentile as a value, Y(p), such that at most (100p)% of the measurements are less than this value, and the 50th percentile is the median. Subtracting the lower percentile from the upper one gives the percentile range. Two neighbouring ideas are easy to confuse with it: the range between the 25th and 75th percentiles is the interquartile range, and the percentile of a score is its percentile rank, a different question.
Formula with every symbol explained
Percentile range = Pb − Pa, where a < b.
- Pa is the lower percentile (for example P10, the value with at most 10% of observations below it).
- Pb is the upper percentile (for example P90).
Each percentile must itself be estimated from the sorted data. NIST gives this recipe: for the pth percentile (p written as a proportion, 0.9 for the 90th), set p(N+1) equal to k + d, where N is the number of observations, k is the whole-number part and d is the fractional part. When 0 < k < N, interpolate between the kth and (k+1)th ordered values: Y(p) = x(k) + d × (x(k+1) − x(k)).
How to find the percentile range: step by step
- Sort the values from smallest to largest.
- Choose the two percentiles (see the table below).
- Estimate each one with your chosen formula.
- Subtract the lower percentile from the upper percentile.
- State which formula you used when you report it.
Which percentiles to subtract
| Percentiles | Share of observations between them | Name |
|---|---|---|
| P25 and P75 | middle 50% | Interquartile range (IQR) |
| P10 and P90 | middle 80% | Interpercentile range |
| P5 and P95 | middle 90% | Interpercentile range |
The shares follow directly from the definition: a percentile pair leaves (100 − b)% of values above and a% below. The narrower the pair, the more the range is driven by the tails; the IQR is the most resistant to outliers of the three. For outlier screening built on the IQR, see how to find an outlier in statistics.
Worked example with real numbers
Twelve measurements, already sorted (N = 12): 4, 7, 9, 10, 12, 15, 16, 18, 21, 25, 30, 42.
Why Excel, R and NIST give different answers
NIST method, rank = p(N+1):
- P10: 0.10 × 13 = 1.3, so k = 1, d = 0.3. P10 = 4 + 0.3 × (7 − 4) = 4.9.
- P90: 0.90 × 13 = 11.7, so k = 11, d = 0.7. P90 = 30 + 0.7 × (42 − 30) = 38.4.
- Percentile range = 38.4 − 4.9 = 33.5.
R type 7 and Excel PERCENTILE, position = 1 + p(N−1):
- P10: 1 + 0.10 × 11 = 2.1, so the 2nd value plus 0.1 of the gap to the 3rd: 7 + 0.1 × (9 − 7) = 7.2.
- P90: 1 + 0.90 × 11 = 10.9, so 25 + 0.9 × (30 − 25) = 29.5.
- Percentile range = 29.5 − 7.2 = 22.3.
The same data gives 33.5 under one convention and 22.3 under the other, a large gap because N is small. The IQR shows the same effect: the NIST rule gives P25 = 9.25 and P75 = 24, an IQR of 14.75, while the R/Excel rule gives 9.75 and 22, an IQR of 12.25. The R documentation lists nine quantile types (type = 1 to 9) and says the default is type 7, the definition also used by S. With large samples the conventions converge, but with small samples you should always state the method.
Interpretation
| Result | How to read it |
|---|---|
| Small P90 − P10 | The central 80% of values sit close together. |
| Large P90 − P10 | The central 80% are widely spread. |
A percentile range describes only the data in hand. It says nothing about values beyond the two chosen percentiles, and it is in the same units as the data. To compare with a spread based on every value, see standard deviation, and for the wider family of position and spread measures see descriptive statistics.
Assumptions and common mistakes
- Mixing conventions. Taking P10 from one tool and P90 from another produces a range that no formula defines.
- Using 90 instead of 0.9. In R’s quantile() the probs argument must lie in [0, 1], and Excel’s PERCENTILE requires k between 0 and 1 inclusive; a k below 0 or above 1 returns #NUM!.
- Confusing the range with the rank. The percentile range is a width in data units; a percentile rank is a position from 0 to 100.
- Tiny samples. With a handful of observations the interpolated tails are mostly artefacts of the formula.
- Unsorted or text values. Remove non-numeric entries and handle missing values before computing.
How to report it
Report both percentiles, the range, the sample size and the method, so a reader can reproduce it. Example: “Response times were right-skewed (N = 12); the 10th and 90th percentiles were 7.2 and 29.5, giving an interpercentile range of 22.3 (linear interpolation, 1 + p(N−1) positions, as in R type 7).” Check your journal’s style guide for how it wants descriptive statistics formatted.
How to calculate it in Excel, R or Python
Excel (data in A1:A12). Microsoft documents PERCENTILE(array, k) as returning the k-th percentile, with k from 0 to 1 inclusive; when k is not a multiple of 1/(n−1) it interpolates.
=PERCENTILE(A1:A12,0.9)-PERCENTILE(A1:A12,0.1)
R (default type 7):
x <- c(4,7,9,10,12,15,16,18,21,25,30,42) diff(quantile(x, c(0.1, 0.9))) # 22.3
Python (NumPy’s default linear interpolation gives the same values as R type 7 here; argument is 0 to 100):
import numpy as np x = [4,7,9,10,12,15,16,18,21,25,30,42] p10, p90 = np.percentile(x, [10, 90]) print(p90 - p10) # 22.3
To reproduce the NIST convention (33.5), compute the rank p(N+1) yourself as in the worked example.
FAQ
How do you find the percentile range?
Sort the data, estimate the two percentiles you care about, and subtract the lower from the higher, for instance P90 − P10. State the percentile formula you used.
Is the percentile range the same as the interquartile range?
The IQR is the special case where the percentiles are the 25th and 75th. Any other pair gives a different interpercentile range.
Why do I get a different answer in Excel and by hand?
Excel’s PERCENTILE places the kth percentile by interpolating on 1 + k(n−1), while the NIST handbook uses p(N+1). On small samples the two can differ a lot, as the worked example shows.
Sources
- NIST/SEMATECH e-Handbook of Statistical Methods, section 2.6.2 (percentiles), itl.nist.gov/div898/handbook/prc/section2/prc262.htm, checked 2026-10-29.
- R Documentation, quantile {stats}, stat.ethz.ch/R-manual/R-devel/library/stats/html/quantile.html, checked 2026-10-29.
- Microsoft Support, PERCENTILE function (a legacy function; Microsoft recommends PERCENTILE.INC or PERCENTILE.EXC for new work), support.microsoft.com/en-us/office/percentile-function-91b43a53-543c-4708-93de-d626debdddca, checked 2026-10-29.








