Tolerance stack-up: a worked example using worst-case and RSS.
A tolerance stack-up tells you whether a stack of toleranced parts will still fit together at the extremes of production. This is a full worked example — real dimensions, both the worst-case and RSS methods, and the decision of which tolerance to tighten when the gap fails.
Why a stack-up matters
Every dimension on a drawing carries a tolerance, and tolerances add up across an assembly. A shaft sitting in a housing, a stack of shims, a connector seating in a bore — each interface depends on the sum of several toleranced features. If you only check individual parts, you can have every component in spec and still end up with assemblies that bind or rattle. A stack-up analysis catches that before you cut metal.
The assembly
Take a simple, common case: a spacer and a retaining ring assembled into a housing bore, and we want to know the axial gap that remains. The four contributors:
| Feature | Nominal (mm) | Tolerance (mm) |
|---|---|---|
| A — Housing bore depth | 40.00 | ±0.10 |
| B — Spacer length | 25.00 | ±0.05 |
| C — Retaining ring thickness | 2.00 | ±0.03 |
| D — Shoulder height | 10.00 | ±0.05 |
The gap G is what is left of the bore depth after the spacer, ring, and shoulder are seated. We want to confirm G never goes negative (parts interfere) and never opens beyond 1.0 mm (the ring loses retention).
Building the loop
Walk the dimension loop in one direction and assign signs. The bore depth opens the gap, so it is positive; the parts that fill the bore close the gap, so they are negative.
Nominal gap = A − B − C − D = 40.00 − 25.00 − 2.00 − 10.00 = 3.00 mm.
So at nominal, the gap is a comfortable 3.00 mm. The question is what the tolerances do to it. Note the rule that catches beginners: regardless of the plus or minus sign you gave each dimension in the loop, the tolerances always add. Variation never cancels.
Method 1: worst-case
Worst-case (also called arithmetic stack) assumes every part is simultaneously at its worst limit. Sum the tolerances:
Total tolerance = 0.10 + 0.05 + 0.03 + 0.05 = ±0.23 mm.
So the gap ranges from 3.00 − 0.23 = 2.77 mm to 3.00 + 0.23 = 3.23 mm. Both ends are comfortably above zero and below 1.0 mm... except the maximum 3.23 mm exceeds our 1.0 mm retention limit badly. In this example the nominal was deliberately oversized to show the point: worst-case says this design does not work, because the gap can open far past the functional maximum.
Method 2: RSS
RSS (Root Sum Square) recognises that all parts being at their extreme at once is statistically rare. Instead of adding tolerances, you take the square root of the sum of their squares:
RSS tolerance = √(0.10² + 0.05² + 0.03² + 0.05²) = √(0.0100 + 0.0025 + 0.0009 + 0.0025) = √0.0159 = ±0.126 mm.
The RSS gap ranges from 2.87 mm to 3.13 mm — noticeably tighter than the worst-case ±0.23 mm. RSS assumes each dimension is centred and normally distributed (roughly ±3 sigma at the tolerance limits). It predicts the spread of real assemblies rather than the impossible all-at-once extreme.
| Method | Stack tolerance | Min gap | Max gap |
|---|---|---|---|
| Worst-case | ±0.23 mm | 2.77 mm | 3.23 mm |
| RSS | ±0.126 mm | 2.87 mm | 3.13 mm |
Which tolerance to tighten
Suppose the gap must be reduced. Do not tighten every tolerance equally — in RSS, the largest tolerance dominates because it is squared. Here, A (the bore depth, ±0.10) contributes 0.0100 of the 0.0159 total, about 63%. Halving A to ±0.05 drops the RSS tolerance to √(0.0025+0.0025+0.0009+0.0025) = √0.0084 = ±0.092 mm — a big gain from one change. Tightening C (±0.03) would barely move the result. Spend your tolerance budget on the biggest contributor.
Rather than do this by hand each time, drop the loop into the tolerance stack-up calculator — it runs both worst-case and RSS, ranks the contributors, and shows the sensitivity of each dimension instantly.
Common stack-up mistakes
- Cancelling tolerances by sign. A minus sign on a dimension flips its nominal contribution, never its tolerance. Tolerances always add.
- Mixing equal-bilateral and unequal limits. Convert every limit dimension to an equal-bilateral ± form (shift the nominal) before stacking, or the arithmetic drifts.
- Using RSS on a low-volume or uncentred process. Without capability data, RSS over-promises. When in doubt, run worst-case.
- Forgetting GD&T bonus tolerance. At MMC, position callouts gain bonus tolerance that belongs in the stack — ignoring it makes you tighten parts that did not need it.
- Not verifying parts to the loop. A stack-up is only as good as the measured dimensions. Balloon the drawing and capture the real characteristics first.
That last point ties back to inspection: the dimensions feeding your stack-up should come from a controlled, ballooned drawing, not a memory of the print. CadNexa's auto-ballooning tool numbers every characteristic and exports them, so the loop you analyse matches the part you actually measure.