Outlier Detector
Finds outliers by IQR fences, z-score and the MAD-based modified z-score at once, and explains disagreement. Warns when a small sample makes the z-score test mathematically unable to flag anything, and lets you choose the quartile convention.
🔒 This tool runs entirely in your browser. Your files are never uploaded to a server.
Separate with commas, spaces, tabs or new lines. Non-numeric entries are reported and skipped.
Distribution
Median
Mean
Std deviation
IQR
| Method | Range considered normal | Flagged | Values |
|---|
Every value, scored
| Value | z | modified z | Flagged by |
|---|
Calculated in this page; nothing is uploaded. An outlier is a value that does not fit a model, which is not the same as a value that is wrong — these methods tell you where to look, not what to delete.
How to use it
- Paste your numbers, separated however you like.
- Compare the three methods — disagreement is information, not a fault.
- Read any warning about the z-score ceiling; with small samples it matters.
- Investigate what got flagged rather than deleting it.
An outlier can hide itself
This is the most important thing on this page. The z-score measures distance from the mean in units of standard deviation — but a genuine outlier drags the mean towards itself and inflates the standard deviation, which is the denominator. A large enough anomaly can therefore make itself look ordinary.
data 10, 11, 12, 12, 13, 13, 14, 14, 15, 16, 95, 96
mean 26.75 standard deviation 32.16
z of 95 2.12 not flagged at 3
z of 96 2.15 not flagged at 3
modified z 36.6 and 37.1 both flagged emphatically
Two obvious anomalies, and the z-score test reports a clean dataset. This is not a small sample problem — with twelve points the ceiling discussed below is 3.175, so the test could have fired. It did not because the two values conspired to raise the spread that was meant to expose them, and two outliers mask each other far more effectively than one.
The modified z-score avoids this by replacing the mean with the median and the standard deviation with the median absolute deviation. Both are robust: moving one or two extreme points barely shifts them, so the anomaly has nothing to hide behind. That is why it is worth having all three methods in front of you rather than one number.
The z-score has a hard ceiling
The advice to treat a z-score above 3 as an outlier is repeated almost universally, and for small samples it is not merely
conservative — it is impossible to satisfy. For n values the largest absolute z-score achievable is
(n − 1) / √n:
n = 5 max |z| 1.789 z > 3 impossible
n = 10 max |z| 2.846 z > 3 impossible
n = 11 max |z| 3.015 just reachable
n = 30 max |z| 5.295
n = 100 max |z| 9.900
So with ten measurements, one value a million times larger than the others still scores 2.846 — the test can never fire. We checked this empirically as well as algebraically: constructing the most extreme possible dataset at n = 10, 11, 12 and 30 reproduces the bound exactly. The widget warns you when your sample size and threshold make the test vacuous, because a method that cannot possibly report anything is worse than no method at all.
Quartiles are not uniquely defined
If you have ever had two tools report different IQRs for the same numbers, this is why. There is no single agreed way to compute a quartile, and the common conventions genuinely differ:
data 10, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 18, 19, 95
linear interpolation Q1 13 Q3 16.5 IQR 3.5 fences 7.75 – 21.75
median of halves Q1 13 Q3 17 IQR 4 fences 7 – 23
Neither is wrong. Linear interpolation is what most statistical packages and spreadsheet percentile functions do; taking the median of each half is the older approach Tukey described and is what many textbooks teach. The fences differ by more than a point at each end, which is enough to change whether a borderline value is flagged — so the setting is exposed here instead of being buried.
Flagged is not the same as wrong
Every method here answers one question: does this value fit the shape I assumed the data has? None of them can tell you why it does not. A flagged point might be a transcription error, a sensor fault, a genuinely rare event, a different population mixed into your sample, or the discovery the whole dataset was collected to find.
Which is why the tool offers to copy either group and does not offer to "clean" your data. Removing points because a formula objected to them is a reliable way to delete real effects and to make a dataset look better behaved than it is. Look at what got flagged, work out what it is, and if you do exclude something, record that you did and why.
FAQ
Why do the three methods disagree?
Because they measure different things. The IQR method asks how far a value sits from the middle half of the data, using quartiles that extreme values barely affect. The z-score asks how many standard deviations it is from the mean — and both the mean and the standard deviation are pulled by the very values it is looking for. The modified z-score uses the median and the median absolute deviation, which are not. When the z-score is the one staying silent, that is usually the reason.
What is masking?
An outlier hiding itself by inflating the statistic used to detect it. The tool ships a twelve-point example: with two values at 95 and 96 among numbers in the teens, the standard deviation swells to 32.16 and their own z-scores come out at 2.12 and 2.15 — neither reaching the usual threshold of 3. The modified z-score scores the same two points at 36.6 and 37.1. Nothing is wrong with the arithmetic; the mean and standard deviation are simply the wrong tools when what you are looking for is already distorting them.
Why does the tool sometimes say the z-score test cannot flag anything?
Because with a small sample it mathematically cannot. For n values the largest possible absolute z-score is (n−1) divided by the square root of n. At n = 10 that is 2.846, so a threshold of 3 is unreachable no matter how extreme a value is — one point a million times larger than the rest still scores 2.846. The bound first exceeds 3 at n = 11. That is worth knowing because the "z greater than 3" rule is repeated everywhere without the caveat.
Which quartile convention should I use?
Either, as long as you know which one you used. There is no single definition: linear interpolation between order statistics is what most statistical software and spreadsheet percentile functions use, while taking the median of each half is the older Tukey approach. On the sample loaded here they give an IQR of 3.5 and 4 respectively, and fences of 7.75 to 21.75 against 7 to 23. Both are defensible, so the choice is a visible setting rather than a hidden assumption.
Should I delete the values it flags?
Usually not, and certainly not automatically. These tests identify values that do not fit an assumed shape — they cannot tell you whether a number is a typo, a measurement error, a genuine rare event or the most interesting thing in your dataset. Deleting points because a formula flagged them is how real effects get thrown away. Investigate first; if you do exclude anything, say so and say why.
Is my data uploaded?
No. All the arithmetic happens in the page.
How we compare
| Feature | Online Tool Store | A spreadsheet formula | R or Python |
|---|---|---|---|
| Data never leaves your device | ✓ | Depends | ✓ |
| Three methods side by side | ✓ | If you build it | ✓ |
| Warns when the z-score test is vacuous | ✓ | ✗ | ✗ |
| States which quartile convention it used | ✓ | ✗ | In the docs |
| Explains disagreement between methods | ✓ | ✗ | ✗ |
| Grubbs, Dixon and other formal tests | ✗ | ✗ | ✓ |
| Multivariate and time-series outliers | ✗ | ✗ | ✓ |
Good for a quick, honest look at a single column of numbers, and for seeing why two methods can reach opposite conclusions. It handles one variable at a time — for outliers defined across several variables, or anomalies in a time series where the trend matters, use a statistical environment with the right tests.