What a tolerance stack-up tells you
A gap in an assembly, such as the end play of a shaft, the clearance under a cover or the overhang of a pin, is not a dimension on any one drawing. It is the sum and difference of several part dimensions. Each of them varies within its tolerance, so the gap varies too. A stack-up computes how much, and whether the gap stays inside the limits the design needs.
To set it up, start at one face of the gap and walk to the other face through the parts that touch each other. Every dimension you cross in the direction of the walk adds to the gap (+); every dimension you cross against it subtracts (−). The signed sum of the nominal values must give the nominal gap. If it does not, the loop is wrong.
The methods and their formulas
For each dimension with nominal d, upper deviation es and lower deviation ei, the calculator uses the mid-limit value m = d + (es + ei)/2 and the half tolerance h = (es − ei)/2. With direction aᵢ (+1, −1 or ±0.5):
Mean gap μ = Σ aᵢ mᵢ Worst case: μ ± Σ |aᵢ| hᵢ RSS: μ ± √Σ (aᵢ hᵢ)²
- Worst case assumes every part is at the limit that hurts most, all at the same time. If the worst-case limits are inside the requirement, every assembly fits, whatever the distributions. It is the right method for few parts, safety-critical fits and small batches.
- RSS (root sum square) assumes every dimension is normally distributed, centred, with its tolerance equal to ±3σ, and independent of the others. The gap then has σ = √Σ(aᵢσᵢ)², and ±3σ of the gap equals the RSS value. Large deviations of several parts in the same direction at once are rare, so RSS is much narrower than worst case when there are many parts.
- Statistical lets you say what each tolerance covers: ±3σ, or ±4σ to ±6σ for capable processes, and normal or uniform. For a uniform distribution over the tolerance σ = h/√3, which is the cautious choice when nothing is known about the process. The expected fraction outside the limits uses the normal approximation: Φ((LSL − μ)/σ) + 1 − Φ((USL − μ)/σ), with 0 on a side where the limit lies beyond the worst case, because no assembly can be there. The assembly Cpk is min(USL − μ, μ − LSL)/3σ.
- Monte Carlo draws every dimension at random from its distribution, adds them, and counts. It needs no normal approximation, so it is the check when uniform rows or few dimensions make the sum non-normal. The generator uses a fixed seed, so the same input gives the same result.
Which result should I use?
| Situation | Usual choice |
|---|---|
| 2 to 4 dimensions, or a fit that must never fail | Worst case |
| Many dimensions from capable, centred processes in production | RSS or statistical, with the expected ppm |
| Processes unknown, or parts sorted at the limits | Statistical with uniform rows, or worst case |
| Mixed distributions, or a decision near the limit | Check with Monte Carlo and 1 000 000 samples |
The verdict on top says “meets at worst case” when every assembly fits, “fails at worst case, meets statistically” when the statistical ±3σ range is inside the limits but the worst case is not, and “fails statistically” otherwise. A statistical pass is only as good as its assumptions: it relies on processes that are centred and in control. Check them with the capability calculator.
Worked example: shaft end play
This is the shaft and housing assembly from K. W. Chase’s chapter on tolerance allocation in the Dimensioning and Tolerancing Handbook (section 14.3). The end play of the shaft must be 0.020 ± 0.015 in, so the minimum gap is 0.005 in and the maximum 0.035 in. Press Load worked example to see it.
| Dim. | Part | Nominal (in) | Tolerance (in) | Direction |
|---|---|---|---|---|
| A | Retaining ring | 0.0505 | ± 0.0015 | − |
| B | Shaft | 8.000 | ± 0.008 | + |
| C | Bearing | 0.5093 | ± 0.0025 | − |
| D | Bearing sleeve | 0.400 | ± 0.002 | + |
| E | Housing | 7.711 | ± 0.006 | − |
| F | Bearing sleeve | 0.400 | ± 0.002 | + |
| G | Bearing | 0.5093 | ± 0.0025 | − |
- Nominal gap: −0.0505 + 8.000 − 0.5093 + 0.400 − 7.711 + 0.400 − 0.5093 = 0.0199 in (the handbook rounds it to 0.020).
- Worst case: 0.0015 + 0.008 + 0.0025 + 0.002 + 0.006 + 0.002 + 0.0025 = ± 0.0245 in. The gap ranges from −0.0046 to 0.0444 in, so it can fail on both sides: at worst, the parts interfere.
- RSS: √(0.0015² + 0.008² + 0.0025² + 0.002² + 0.006² + 0.002² + 0.0025²) = √0.00012275 = ± 0.01108 in. The gap ranges from 0.00882 to 0.03098 in, inside the requirement.
- Statistical (normal, ±3σ): σ = 0.01108/3 = 0.003693 in. Cpk = (0.0199 − 0.005)/(3 × 0.003693) = 1.34. About 27 ppm are expected below the minimum and 22 ppm above the maximum, about 49 ppm in total.
- Contributions: the shaft B carries 52 % of the variance and the housing E 29 %. These two long dimensions are where a tighter tolerance pays; tightening the bearings or the ring changes almost nothing.
The handbook gives the same worst case (0.0245) and RSS (0.0111) and goes on to reallocate the tolerances by cost. The verdict here is “fails at worst case, meets statistically”: fine for a production line with capable processes, not for a one-off build from parts at their limits.
Common mistakes
Wrong signs in the loop
If the signed nominal values do not add up to the nominal gap shown on the assembly drawing, a direction is wrong. Check the loop before you look at any tolerance.
Mixing a diameter into a radial stack
When the loop runs through the centre of a hole or pin, only half of the diameter and half of its tolerance belong in the loop. Use the ±½ direction for those rows.
Using RSS for a handful of parts
With two or three dimensions the statistical advantage is small, and the result depends heavily on each dimension really being normal and centred. A uniform distribution or worst case is safer.
Assuming centred processes
RSS assumes each process is centred on the middle of its tolerance. A process that runs near one limit shifts the gap, and the RSS limits no longer hold. Asymmetric tolerances are handled here by centring on the mid-limit value; a real process shift is not.
Forgetting the parts that are not dimensions
Clearances in bolt holes, form errors, thermal expansion and wear also move the gap. Add them as rows when they matter.
Questions
What does “±3σ (Cp = 1)” mean?
It is the assumption about how much of each tolerance the process uses. ±3σ means the tolerance is just wide enough for 99.73 % of the parts, a capability Cp of 1, which is the classic RSS assumption. If your suppliers run at Cp = 1.33, choose ±4σ and the statistical gap gets narrower. Worst case and RSS do not depend on this setting.
Why do the statistical ppm and the Monte Carlo count differ?
The statistical ppm uses the normal distribution for the gap; Monte Carlo counts simulated assemblies. With uniform rows the true distribution has shorter tails than a normal one, so Monte Carlo usually finds fewer failures. With very small fractions, Monte Carlo needs many samples: 49 ppm means about 5 assemblies in 100 000, so the count is rough. Use 1 000 000 samples for a better estimate.
Can I enter a tolerance like +0.1/0?
Yes. Enter 0.1 as upper and 0 as lower deviation. The calculator works with the mid-limit value, so a unilateral tolerance shifts the mean gap. A note tells you when the mean gap differs from the nominal gap.
Does it handle geometric tolerances (GD&T)?
Only if you convert them to an equivalent ± contribution along the loop yourself, for example a position tolerance of a hole as ± half the tolerance zone diameter in the loop direction. Bonus tolerance and datum shift are not modelled.
How do I know the calculations are right?
The calculator reproduces the worst-case and RSS results of the handbook example above. Every closed-form result was also checked against an independent implementation in Python (NumPy and SciPy) on ten random stacks with asymmetric tolerances, ±½ directions and uniform rows, with differences below one part in ten billion, and the Monte Carlo results were checked against a separate 4-million-sample simulation.
Is my data uploaded?
No. Everything is calculated in your browser. The stack is kept only in this browser’s local storage, and a share link carries the data inside the link itself.
Related tools: the process capability calculator tells you which ±σ assumption your processes support; the uncertainty budget uses the same root-sum-square idea for measurement errors; and a Gage R&R study checks that the gauge can measure the gap at all.
References
- K. W. Chase, “Minimum-Cost Tolerance Allocation”, chapter 14 in P. J. Drake (ed.), Dimensioning and Tolerancing Handbook, McGraw-Hill, 1999.
- B. R. Fischer, Mechanical Tolerance Stackup and Analysis, 2nd edition, CRC Press, 2011.
- JCGM 101:2008, Evaluation of measurement data – Supplement 1 to the “Guide to the expression of uncertainty in measurement” – Propagation of distributions using a Monte Carlo method (for the Monte Carlo principle).