The most extreme value, tested — and what that misses.
One outlier at a time, and the ones that hide
The same twelve values plus TWO outliers at 16 and 16.5 — more extreme than the 14.5 above. G = 2.458163 against a critical 2.507321, p = 0.065069: nothing is detected. Together they inflate the standard deviation enough to hide each other.
n = 14, α = 0.05
No outlier detected — G = 2.458163
The critical value is 2.507321, so the test stops. But removing the most extreme point anyway and asking again gives G = 3.295142 against 2.462033 — overwhelming. That is masking: two outliers on the same side inflate the standard deviation enough to hide each other, and Grubbs stops at the first non-rejection so it never looks.
G
2.458163
most extreme value, in SDs
Critical G
2.507321
n = 14, α = 0.05
p
0.065069
Bonferroni'd across n
Removed
0
but masking was detected
Each iteration of the test, with the value examined and the verdict
Step
n
Mean
SD
Most extreme
G
Critical
Verdict
1
14
11.0000
2.2374
16.5000
2.45816
2.50732
kept — test stops
probe
13
10.5769
1.6458
16.0000
3.29514
2.46203
MASKED — would be rejected
The probe row is not part of Grubbs’ procedure. It force-removes the most extreme point after a non-rejection and asks again, which is the only way to see masking from inside a test that stops at the first thing it fails to reject.
A single value of 14.5 among twelve between 9.7 and 10.5 is detected at p = 3.09e-8. A PAIR at 16 and 16.5 — both further out — is not detected at all. Adding a more extreme second outlier makes this test blind to both of them.
One outlier at a time, by construction Assumes the rest of the data is normal Flagging is not the same as deleting
What this tool shows
Twelve values between 9.7 and 10.5 plus a single 14.5: G = 3.269289 against a critical 2.462033, p = 3.09×10⁻⁸. Caught easily. The same twelve plus a PAIR at 16 and 16.5 — both further out — gives G = 2.458163 against 2.507321 and is not caught at all. Adding a more extreme second outlier makes the test blind to both, and the tool probes for exactly that.
Two-sided Grubbs G for the most extreme value, with its exact critical value
The test iterated: remove, recompute, repeat until nothing is rejected
A masking probe that force-removes the extreme point after a non-rejection
Mean and standard deviation at every step, since both change as points leave
A p-value from inverting the same relation the critical value comes from
The full step table, so what was removed and why is visible
Iterated Masking probe Exact critical value Every step shown
Updated 12 September 2026 · Works in any browser, no installation
Grubbs’ test asks whether the most extreme value in a sample is further from the mean, in standard deviations, than a normal sample of that size would usually produce. The critical value depends only on n and α and rises with n, because the largest of 50 draws is naturally further out than the largest of 5. It is designed for ONE outlier at a time, and what happens when there are two is the subject of this page.
At a glance
Formula shown
G = max|xᵢ − x̄| / s, using the mean and standard deviation of the FULL sample including the suspect point. The critical value is ((n−1)/√n)·√(t²/(n−2+t²)) with t the (1 − α/2n) quantile on n − 2 degrees of freedom — the α/2n being a Bonferroni correction across the n points, any of which could have been the extreme one. Inverting that same relation gives the p-value, so the two can never disagree.
Scenario support
Laboratory measurement with one suspicious reading, instrument calibration checks, quality control on a small batch, data cleaning before a parametric analysis, and any small normal-ish sample where one value looks wrong and a defensible reason to say so is needed.
Educational estimate
Planning support from the values you enter — not professional advice.
Two outliers hide each other, and the tool shows it
The mechanism is simple once stated, and the numbers make it unarguable.
G divides by the standard deviation of the WHOLE sample, including the outliers themselves. Two extreme points on the same side inflate that standard deviation, so neither one is far from the mean in SD units.
One 14.5 among twelve values from 9.7 to 10.5: G = 3.269289, critical 2.462033, p = 3.09×10⁻⁸. Rejected without difficulty.
Two points at 16 and 16.5 — both FURTHER from the bulk than 14.5 was: G = 2.458163, critical 2.507321, p = 0.065069. Not rejected. The test finds nothing, and stops.
Force-remove the most extreme point anyway and the other is rejected at 1.3×10⁻⁹. That is what the probe row in the table does, and it is the only way to see masking from inside a procedure that halts at its first non-rejection.
Which means a clean Grubbs result on a sample with a visible cluster of extremes is not evidence of anything. Look at the data. Tukey’s IQR rule uses quartiles rather than the mean and SD, so it does not mask the same way and is the natural cross-check.
And the opposite failure: swamping
Masking is a false negative. Swamping is the false positive that the iterated version produces, and iterating is what most software does by default.
One genuine outlier drags the mean toward it. A perfectly ordinary point on the opposite side is then further from that shifted mean than it should be.
After the real outlier is removed, the next iteration can flag that innocent point, because the mean has moved back and the standard deviation has shrunk — and the critical value has risen with the smaller n.
Which is why this tool caps the iteration and prints every step. A run that removes four points from a sample of fifteen is describing a distribution that is not normal, not a series of errors.
The generalised ESD test is the principled answer. It fixes an upper bound on the number of outliers in advance and adjusts the critical values for testing that many, which is a different and better procedure from running Grubbs until it stops.
It assumes the rest of the data is normal
Every value the test produces is calibrated against a normal sample. When the underlying distribution is not normal, a flagged point is a statement about the distribution rather than about the point.
Right-skewed data produces large values legitimately. Incomes, durations, reaction times and concentrations all have long right tails, and Grubbs will flag their upper values routinely without anything being wrong.
Heavy tails are worse. A t-distribution with few degrees of freedom produces extreme values as a matter of course, and treating them as errors removes exactly the observations that carry the distribution’s character.
So check normality first, on the data without the suspect point. A normality test on the remainder is the right preliminary, and a transform is often the right response.
Grubbs also needs n ≥ 3, and below about 7 it has very little power — the critical value at n = 6 is 1.887145, and a point would have to be almost the entire sample’s spread away to clear it.
A flagged point is a question, not a verdict
The statistic identifies an unusual value. It cannot say why the value is unusual, and that is the only thing that determines what to do with it.
A documented error can be removed. A transcription mistake, a known instrument fault, a sample that was contaminated — those have a reason outside the statistics, and removal is justified by the reason rather than by the test.
An unexplained extreme value should usually stay. Deleting data because it is inconvenient is the most common form of undisclosed analytic flexibility, and it biases everything downstream.
Report both analyses when it matters. With and without the point, so a reader can see how much the conclusion depended on it — which is more informative than either alone.
Or use a method that does not care. A absolute-deviation summary, a rank test or a trimmed mean all handle an extreme value without anyone having to decide whether to delete it.
The critical value rises with n, and that is correct
It is tempting to read a fixed “three sigma” rule into this test. The critical value is not fixed and cannot be.
At n = 4 it is 1.481250; at n = 6, 1.887145; at n = 13, 2.462033; at n = 25, 2.821681; at n = 50, 3.128247. The most extreme of fifty normal draws is naturally further out than the most extreme of four.
The α/2n inside it is a Bonferroni correction across the n points, any of which could have turned out to be the extreme one — which is the multiplicity that a bare “three sigma” rule ignores.
G also has a hard ceiling of (n−1)/√n, which is 3.328 at n = 13 and 6.930 at n = 50. No value in a sample of 13 can ever have a G above 3.328, however wrong it is.
Which is another way masking bites: when the ceiling is low and two points are sharing the standard deviation, there is simply not enough room left for either to clear the critical value.
Reporting an outlier test
Four things, and the second is the one that turns a deletion into a defensible decision.
Say the test was run and what it found, including when it found nothing. An outlier test run and not reported is a researcher degree of freedom.
Give the reason for any removal, separately from the statistic. “Flagged by Grubbs at p = 3e-8 AND traced to a mislabelled vial” is a decision; the first half alone is not.
Report n before and after. It is how a reader sees how much data the cleaning removed, and four removals from fifteen is a different story from one from fifty.
And report the analysis both ways when the conclusion moves. If removing the point changes the finding, that dependence is the most important thing in the results section.
Sources and methodology
References for Grubbs' test and its failure modes.
Method. The critical value uses the exact Bonferroni-corrected t quantile rather than a table lookup, and the p-value is obtained by inverting the SAME relation — t² = n(n−2)G²/((n−1)² − nG²) — so the two can never disagree about whether a point clears the line. That round trip is asserted in the suite at seven sample sizes: feeding the critical G back through the inversion must return exactly α, and it does to within 3×10⁻¹⁵. It is not a decorative check. An earlier draft of that inversion dropped the leading n, which produced p-values that still looked plausible — a rejected point reported p = 0.0069 instead of 3.09×10⁻⁸ — and the round-trip assertion is what caught it. The masking probe is a deliberate addition rather than part of Grubbs’ procedure: after a non-rejection it removes the most extreme point anyway and re-tests, which is the only way to observe masking from inside a test that halts at its first failure to reject. Fewer than three values and zero variation return no result. That engine is verified on every change against 95 assertions. The count and the per-case breakdown are published on the formula verification page.
Related calculators
Where this goes next:
OutlierRuns four outlier rules together and says when each is failing — the 3-sigma rule cannot flag anything below n=11, two outliers hide each other, and the quartile convention alone can decide the answer.
Normality TestShapiro-Wilk, Anderson-Darling and Jarque-Bera with a Q-Q plot, plus a resampled sweep answering the question the tests cannot: was your sample size big enough to detect anything?
Standard DeviationSample and population standard deviation, plus variance, mean, median, quartiles, z-scores, outliers, and confidence intervals.
Trimmed MeanTrimmed and Winsorized means at any fraction, plotted across the full sweep — because a 0% trim is the arithmetic mean and a 50% trim is exactly the median, so the trim fraction is a dial between them.
IQRInterquartile range, the 1.5 × IQR outlier fences, and exactly which values fall outside — with a slider that corrupts one value so you can watch the range move while the IQR does not.
Z-ScoreA z-score from your data or from a known mean and SD — with the normal-table percentile checked against the share of your data that actually falls below it, and a warning when they disagree.
An educational tool. Grubbs’ test detects one outlier at a time and assumes the remaining data is normal, so two extreme values on the same side can mask each other completely — the tool probes for this but a clean result is still not proof of a clean dataset. Flagging a point is not a reason to delete it; only an identified cause is.
Published an iterated Grubbs test with a masking probe — a deliberate addition to the procedure, since Grubbs halts at its first non-rejection and masking is invisible from inside a test that stops looking.
Built the page on a demonstration that is exact rather than illustrative: twelve values between 9.7 and 10.5 plus a SINGLE 14.5 gives G = 3.269289 against a critical 2.462033 and p = 3.09e-8 — caught easily. The same twelve plus a PAIR at 16 and 16.5, both further out, gives G = 2.458163 against 2.507321 and is not caught at all. Adding a more extreme second outlier makes the test blind to both.
Force-removing one of that pair and re-testing rejects the other at 1.3e-9, which is what the probe row reports.
Caught a real engine defect with the verification suite rather than by inspection. The p-value is obtained by inverting the same relation the critical value comes from, and the round trip — feeding the critical G back must return exactly alpha — failed. An earlier draft had dropped the leading n from t² = n(n−2)G²/((n−1)² − nG²), producing p-values that still looked plausible: a rejected point reported 0.0069 instead of 3.09e-8. The round trip now holds to 3e-15 at seven sample sizes.
Recorded the opposite failure too — swamping, where removing a real outlier lets the next iteration flag an innocent point — and capped the iteration rather than running until the test stops.
Add this calculator to your site
Responsive embed — and private: nothing your visitors type leaves their browser.