In this guide
You toleranced every part on your assembly drawing. Each part, inspected alone, passes. Then you assemble the stack — and the shaft won't go through, or the cover gap is 2mm on one side and zero on the other. Every part was "in tolerance," yet the assembly fails. Welcome to tolerance stack-up: the arithmetic of how small variations add up across an assembly.
This guide explains worst-case and statistical stack-up analysis, with worked examples you can use directly in your design report — and shows how the answer changes your tolerance choices (and your manufacturing cost).
The core idea
An assembly dimension is the sum (or difference) of part dimensions. If each part dimension has a tolerance, the assembly variation is some combination of them. Two ways to combine:
1. Worst-case (arithmetic) stack-up: assume every part sits at its worst limit simultaneously.
T_asm = Σ |T_i| (sum of absolute tolerances)
Guaranteed — if the worst-case assembly works, every assembly works. But it's pessimistic: the chance of all parts at their extremes simultaneously is tiny, so it forces tight (expensive) tolerances.
2. Statistical (RSS) stack-up: assume variations are independent and roughly normal (centered processes).
T_asm = √(Σ T_i²) (root sum of squares)
Realistic for production quantities from capable processes — typically predicts 30–50% less variation than worst-case. But it accepts a small predicted reject rate (usually designed for 3σ, i.e. ~0.27% out of spec) and it requires the processes to actually be centered and capable. For one-off student builds, worst-case is the honest choice; for batch production, RSS.
Note: RSS assumes each tolerance represents the same statistical spread (usually ±3σ) and independent, centered processes. If your workshop's process isn't centered (the machinist always cuts to the high side), RSS over-promises. State your assumption in the report.
Worked example 1: the housing stack (1D)
A shaft shoulder must sit 0.1–0.5mm clear of a housing face. The stack: housing depth 60±0.2, spacer 25±0.1, shaft shoulder position 84.7±0.15 (dimensions arranged so nominal clearance = 60 + 25 − 84.7 = 0.3mm).
Worst-case: clearance varies by ±(0.2 + 0.1 + 0.15) = ±0.45 → clearance ranges 0.3±0.45 = −0.15 to +0.75mm. Negative clearance = interference = fails. Worst-case says: redesign (tighten tolerances or change nominals).
RSS: ±√(0.2² + 0.1² + 0.15²) = ±√(0.04+0.01+0.0225) = ±√0.0725 ≈ ±0.27 → clearance 0.03 to 0.57mm. RSS says it (probably) works — but with only 0.03mm margin at 3σ, a wise designer still tightens something or shifts the nominal.
The engineering move: increase nominal clearance to 0.4mm (adjust the shaft shoulder to 84.6) and tighten the housing to ±0.1. Worst-case then: 0.4±0.35 = 0.05–0.75 ✓. Small changes, big robustness — that's what stack-up analysis buys you.
Worked example 2: bolt-hole clearance (2D-ish)
Four M8 bolts must pass through clearance holes in two plates. Each hole position toleranced ±0.2 in X and Y per plate. Worst-case hole-center mismatch between plates: 0.2+0.2 = 0.4mm per axis → diagonal 0.57mm. M8 clearance hole (Ø9) on M8 bolt (Ø8): radial clearance 0.5mm. Worst-case mismatch 0.57 > 0.5 → may not assemble. Fixes: open the holes to Ø9.5, tighten position tolerance to ±0.1, or use one tight hole + one slot (the classic solution — slots absorb the stack-up).
Design lesson: slots, oversize holes on one part, and adjustment features are stack-up management by design — often cheaper than tight tolerances.
The tolerance loop: drawing the chain
For each critical assembly requirement (a clearance, a fit, a gap):
- Identify the requirement and its limits (e.g. "gap 0.2–0.8mm").
- Trace the tolerance loop — the chain of part dimensions connecting the two faces, following the assembly like a loop. Every dimension in the loop contributes; dimensions outside it don't.
- Assign each a tolerance (from process capability — see below).
- Compute worst-case and RSS.
- If it fails: loosen the requirement, tighten the biggest contributor (the largest tolerance dominates RSS — halving the biggest term helps most), shift nominals, or redesign (slots, adjustments, fewer parts in the chain).
Fewer parts in the chain beats tighter tolerances. Every interface adds variation — a classic design-for-assembly win is eliminating a part from the stack entirely.
Process capability: what tolerances you can actually claim
| Process | Typical tolerance (±) | Notes |
|---|---|---|
| Laser cutting | ±0.1–0.2mm | |
| CNC milling | ±0.05mm (down to ±0.01 with care) | |
| Manual mill/lathe (student) | ±0.1–0.2mm | Be honest about your workshop |
| 3D printing (FDM) | ±0.2–0.3mm | Plus 0.2–0.3mm hole undersize |
| Sheet metal bending | ±0.5mm on flange dims, ±1° | |
| Pressed/drilled holes | ±0.15mm position |
Claiming ±0.02mm on a manual lathe in your stack-up while the workshop holds ±0.15mm invalidates the analysis. Match claimed tolerances to demonstrated capability — and say which process each tolerance assumes.
Statistical refinements (know they exist)
- 3σ vs 6σ design: RSS at 3σ per part predicts ~0.27% assembly rejects; safety-critical stacks use tighter criteria.
- Monte Carlo simulation: sample each dimension from its distribution thousands of times and histogram the assembly result — handles non-normal distributions and nonlinear stacks (angles, trigonometry). A spreadsheet Monte Carlo is a strong project-report inclusion.
- Geometric tolerances in the stack: position and profile tolerances contribute like dimensional ones; a full 3D stack-up includes them. For student work, convert geometric requirements to equivalent ± where defensible, and note the simplification.
What to put in the report
- The critical assembly requirement(s) and why each is critical
- Tolerance loop diagram (a sketch of the chain — examiners love this)
- Table: each contributing dimension, its tolerance, process assumed
- Worst-case and RSS calculations
- Verdict and design changes driven by the analysis (this is the point — analysis that changes nothing is decoration)
- Statement of assumptions (centered processes, 3σ, one-off vs batch)
Common mistakes
- No stack-up at all — tolerancing parts in isolation and hoping the assembly works.
- Missing contributors in the loop — forgetting the gasket thickness, the washer, the paint layer.
- RSS on a one-off build — statistical comfort doesn't apply when n=1; use worst-case.
- Tightening all tolerances equally — attack the largest contributor; RSS is dominated by it.
- Claiming process capability you don't have — ±0.02mm from the manual lathe.
- Over-constraining the design instead of adding adjustment — slots and shims are legitimate engineering.
- Ignoring thermal effects on long stacks (aluminium grows 23µm/m/°C — a 500mm stack swinging 30°C moves 0.35mm).
Where to go from here
- Engineering Tolerances & Fits Explained — the individual tolerances that feed your stack-up.
- CAD to Prototype: Fusion 360 & 3D Printing — datum dimensioning in the CAD model behind your stack-up.
- More design-analysis topics in the Mechanical branch hub.