Quick answer
Winsorization is a way of limiting the influence of outliers by replacing values beyond a chosen percentile (for example above the 99th) with the value at that percentile, so every data point is kept but extreme values no longer dominate averages.
Formula: x_w = min(max(x, P_low), P_high)
What is winsorization?
Winsorization caps extreme values instead of removing them. Choose a percentile, say the 99th, and replace every value above it with the value at the 99th percentile. Every row stays in the data; the extreme ones just stop dominating the average. The name comes from biostatistician Charles Winsor.
x_w = min(max(x, P_low), P_high)
Most business metrics only have a long tail on one side (revenue, session duration, items per order), so you usually cap only the top.
A worked example: average order value
Ten orders (sample numbers): $22, $30, $35, $40, $45, $47, $55, $60, $80, $921.
| Raw | Winsorized at the 90th percentile | |
|---|---|---|
| Highest value | $921 | $80 |
| Mean (AOV) | $133.5 | $49.4 |
| Median | $46 | $46 |
One bulk order makes the raw average nearly three times the median. Capping it at the 9th value ($80) gives an average that describes a typical order, while still counting the large order as a large one. (With only ten values the 90th percentile is coarse; in real data use the 99th on thousands of orders.)
Winsorizing vs trimming vs log transform
| Method | What happens to extremes | Sample size | Good for |
|---|---|---|---|
| Winsorize | Pulled in to the cap | Unchanged | Means and tests on heavy-tailed metrics |
| Trim | Removed | Smaller | Trimmed means; robust summaries |
| Log transform | Compressed | Unchanged | Modelling multiplicative effects |
| Median | Ignored | Unchanged | Describing a typical value |
Choosing the cap
- Start with the 99th percentile for revenue and duration; use the 95th when samples are small or tails extreme.
- Compute the cap on the combined data, not separately for each group you compare, otherwise the groups are capped differently.
- Decide before looking at the results. Picking the cap that gives the answer you hoped for is a form of p-hacking.
- Report it. "Revenue per user, winsorized at P99" tells readers what they are looking at.
When not to winsorize
- When the extremes are real and important: enterprise deals, whales in a game, fraud.
- When you report actual totals (revenue for finance must not be capped).
- When extremes are tracking errors. A $92,100 order that should have been $921 is a data-quality bug; fix it at the source.
Finding percentiles in TapCub
A distribution analysis on a numeric property (such as order amount) shows each bucket's count and share, plus the mean and median; its automatic top edge is the 99th percentile, so larger values land in the last bucket. That bucket tells you how many values a P99 cap would affect. Pages per session and session duration can be picked as the subject directly. To compute a winsorized mean, export the raw rows and cap them in a spreadsheet or notebook. See also percentile and CUPED, another variance-reduction tool.
See also
Was this explanation clear?
We use your answers to fix and expand this page.
Couldn’t send. Please try again in a minute.
Thanks for the feedback. We’ll use it to improve this page.You’ve already sent feedback on this page. Thanks.

Product Experience Specialist
Writes about product experience, practical workflows, and growth, turning complex processes into clear steps for everyday decisions.