Predict whether an assembly will meet functional requirements given the dimensional variation of its individual parts. Three core methods: Worst Case, RSS, and Monte Carlo — each with different risk assumptions.
🔩 What is a Tolerance Stackup?
When parts are assembled, their dimensional variations accumulate. A tolerance stackup analysis answers: will the gap, clearance, or interference in my assembly always be acceptable — for every part within tolerance?
Assembly Gap Example
Gap = Housing − (A + B + C) Each part has its own tolerance ±t. The question: is Gap ≥ 0 always?
Three Analysis Methods
1. Worst Case (WC)
All parts simultaneously at worst extreme. Conservative — guarantees 100% yield. Often over-constrains tolerances.
2. RSS (Statistical)
Root Sum of Squares. Assumes independent normal distributions. Predicts realistic assembly yield (~99.73% at 3σ).
3. Monte Carlo
Random sampling simulation. Handles any distribution shape, correlations, and non-linear stackups. Most realistic.
🧭 Which Method to Use?
Decision Guide
→Safety-critical, zero-defect required → Worst Case (100% compliance guaranteed)
→High-volume production, normal distributions → RSS (realistic yield prediction)
→Non-normal processes, skewed distributions, or correlated parts → Monte Carlo
→First pass / quick check → Run WC first, then RSS to see if tolerances can be relaxed
Tolerance Analysis
Method Comparison
Side-by-side summary of Worst Case, RSS, and Monte Carlo — assumptions, when to use each, and the typical difference in predicted tolerance.
📊 Comparison Table
Property
Worst Case
RSS
Monte Carlo
Predicted gap tolerance
Smallest (tightest)
Moderate (~40–60% looser)
Most realistic
Yield guarantee
100% (by definition)
~99.73% at 3σ
User-defined PPM
Assumes normal dist.
No — any dist.
Yes (required)
No — any dist.
Handles non-linear stackup
Linear only
Linear only
Yes
Part count sensitivity
Worsens rapidly with n
Scales as √n
Independent of n
Computation
Instant
Instant
Requires simulation
Typical use
Safety-critical, low volume
High volume production
Complex assemblies, R&D
Result
Tolerance range
Statistical tolerance
Distribution + PPM
📐 Gap Tolerance Formula Comparison
Worst Case: T_gap = Σ |tᵢ| (sum of ALL individual tolerances) RSS: T_gap = √(Σ tᵢ²) = √(t₁² + t₂² + ... + tₙ²) Monte Carlo: Gap = Σ sᵢ · Nᵢ(μᵢ, σᵢ) [simulated, 10k+ runs] sᵢ = direction coefficient (+1 or −1) | tᵢ = bilateral tolerance (half-range) | σᵢ = tᵢ/3 for 3σ process
⚠ Key Insight
For n equal tolerances t: WC gives T=n·t but RSS gives T=√n·t. For n=9 parts with t=0.1mm: WC→0.9mm, RSS→0.3mm. RSS allows 3× looser tolerances per part for the same assembly performance — but only if the normal distribution assumption holds.
Worst Case
Worst Case Stackup Calculator
Add parts to the loop. Each part contributes its full tolerance in the stackup direction. The gap must remain positive at both extremes to guarantee 100% assembly yield.
🧭 Direction Convention — What is +1 vs −1?
In a tolerance loop, you trace a path through the assembly from one side of the gap to the other. Each dimension either opens (increases) or closes (decreases) the gap.
+1 Opens the gap ↔
Traversing in the same direction as the gap arrow.
Typically the housing / outer envelope.
If this part grows, the gap gets larger.
−1 Closes the gap ←→
Traversing back through a part (opposing the gap arrow).
Typically internal components stacked inside.
If this part grows, the gap gets smaller.
Rule of thumb: Start at one wall of the gap.
Every part you cross going right is +1 (adds space).
Every part you cross going left (backtracking) is −1 (takes space).
Gap = Σ (+1 parts) − Σ (−1 parts).
⚙️ Assembly Chain Builder
Add parts below. Use +1 for the housing/outer reference and −1 for parts stacked inside it. The chain diagram updates live.
Direction:+1 Opens gap (housing, outer ref)−1 Closes gap (inner parts)Positive sign = dimension contributes positively to gap
Part NameNominal (mm)±Tol (mm)DirectionSens.
→ Each row contributes: +1 × nominal or −1 × nominal to the gap equation.
Live Assembly Chain — Signed Dimensions
📊 Results
Stackup Bar Chart — nominal & tolerance contribution per part
Gap Range Visualization
Worst Case
Worst Case — Theory & Formula
The simplest and most conservative stackup method. Every dimension simultaneously at its worst extreme. Guaranteed to work — but often unnecessarily tight.
📐 Formula
Nominal Gap G₀ = Σ sᵢ · Nᵢ (signed sum of nominal dimensions)
Worst Case Tol T_wc = Σ |tᵢ| (sum of all absolute tolerances)
Max Gap = G₀ + T_wc | Min Gap = G₀ − T_wc sᵢ ∈ {+1, −1} = direction in loop | Nᵢ = nominal dim | tᵢ = bilateral tolerance
🔩 Worked Example — Shaft in Housing
🏭 Bearing Assembly
Housing bore: 50.000 ±0.025 mm (direction +1, opens gap) Bearing OD: 49.900 ±0.010 mm (direction −1, closes gap) Required clearance: 0.050 to 0.180 mm
G₀ = (+1)(50.000) + (−1)(49.900) = 0.100 mm
T_wc = 0.025 + 0.010 = 0.035 mm
Max gap = 0.100 + 0.035 = 0.135 mm ✓ ≤ 0.180
Min gap = 0.100 − 0.035 = 0.065 mm ✓ ≥ 0.050
Result: PASSES worst case — 100% yield guaranteed
✅ Assumptions & Limitations
All parts are within their stated tolerance (by inspection or process control)
Dimensions are independent of each other
Conservative: probability of ALL parts simultaneously at worst extreme is extremely low for large n
For n=10 identical ±3σ parts: probability of WC scenario ≈ (0.0027)¹⁰ ≈ 2×10⁻²⁸
Use when yield MUST be 100% regardless of cost (e.g., aircraft, medical devices)
RSS Statistical
RSS Stackup Calculator
Root Sum of Squares. Assumes each part's dimension is normally distributed. The combined assembly gap is also normal — predict the sigma level and yield directly.
🧭 Direction Quick Reference
+1 Opens gap — housing, bore, outer envelope. Growing this dimension increases clearance.
−1 Closes gap — shafts, spacers, inner parts stacked inside. Growing these shrinks clearance.
Gap nominal G₀ = Σ (+1 parts × nominal) − Σ (−1 parts × nominal) | Direction does not affect variance (σ²), only the nominal.
⚙️ Assembly Chain Builder
For RSS, tolerance = kσ of the process. Adjust the Sigma Level (k) per part and the assembly target below.
Direction:+1 Opens gap−1 Closes gap
Part NameNominal (mm)±Tol (mm)Directionk (sigma)
Live Assembly Chain
Assembly sigma target3σ
📊 Results
Tolerance Contribution (σ² share per part) — Pareto
Assembly Gap Distribution — WC vs RSS comparison
RSS Statistical
RSS — Theory & Formula
Based on the statistical fact that when independent random variables are summed, their variances add. The combined standard deviation grows as √n, not n.
📐 Formula Derivation
Each part: xᵢ ~ N(Nᵢ, σᵢ²) where σᵢ = tᵢ / kᵢ (kᵢ = process sigma level)
Gap G = Σ sᵢ · xᵢ → G ~ N(G₀, σ_gap²)
σ_gap² = Σ (sᵢ·σᵢ)² = Σ σᵢ² (direction has no effect on variance)
σ_gap = √(Σ σᵢ²) = √(σ₁² + σ₂² + ... + σₙ²)
T_rss (at k·σ) = k · σ_gap = k · √(Σ (tᵢ/kᵢ)²) For equal kᵢ = k: T_rss = k · √(Σ(tᵢ/k)²) = √(Σ tᵢ²)
📈 WC vs RSS Interactive Comparison
Adjust n (number of equal parts) and individual tolerance to see how WC and RSS totals diverge.
Number of parts (n)
5
Each tolerance ±t (mm)
0.10
Sigma level (k)
3
WC vs RSS tolerance — vs number of parts
✅ RSS Assumptions
All dimensions independently normally distributed
Process is centered (mean = nominal) — zero mean shift
Stackup is a linear function of the component dimensions
RSS under-predicts risk if processes are skewed, bimodal, or correlated
Long-term mean shifts (1.5σ drift) need correction — see Six Sigma Shift page
Monte Carlo
Monte Carlo Simulation
Simulate thousands of assemblies by randomly sampling each part's dimension from its distribution. The result is the actual gap distribution — directly giving PPM out-of-spec.
⚙️ Assembly Setup
Direction:+1 Opens gap (housing/outer)−1 Closes gap (inner parts)
Part NameNominal (mm)±Tol (mm)DirectionDistribution
Live Assembly Chain
Simulations
Min gap spec
Max gap spec
⏳ Simulating…
📊 Simulation Results
Gap Distribution (simulated) — with spec limits
Normal Probability Plot of Gap — check normality assumption
Monte Carlo
Monte Carlo — Theory & Setup
How random simulation works for tolerance analysis. Distribution types, convergence, and when to use each distribution.
📐 Algorithm
For each part i, define its distribution: Normal(Nᵢ, σᵢ), Uniform(lo, hi), or Triangular(lo, mode, hi)
For each simulation run j = 1…N: sample one value xᵢⱼ from each part's distribution
Compute the gap: Gⱼ = Σ sᵢ · xᵢⱼ (the assembly equation)
After N runs, build the histogram of all Gⱼ values
Fit a normal distribution to Gⱼ to estimate effective sigma level
📋 Distribution Types
Normal N(μ, σ)
Best for: machined dimensions, CNC, grinding σ = tolerance / k (k=3 for 3σ process) Most common in precision manufacturing Default choice
Uniform U(lo, hi)
Best for: inspection-sorted parts, purchased parts with unknown process Worst-case for RSS comparison σ = (hi−lo)/(2√3) Conservative
Triangular T(lo, mode, hi)
Best for: processes with a preferred mode but bounded range Can model asymmetric processes (e.g., wear, thermal) σ = √((lo²+mode²+hi²−lo·hi−lo·mode−hi·mode)/18)
Convergence
5,000 runs: good for mean & σ 10,000: reliable to ~100 PPM 100,000: reliable to ~10 PPM 1,000,000: reliable to ~1 PPM Rule: 10× more runs per decade of PPM
Advanced
Six Sigma Mean Shift (1.5σ)
In long-term production, process means drift by up to ±1.5σ. The modified RSS method accounts for this shift in every component. Critical for automotive and high-volume manufacturing.
📐 Modified RSS with Mean Shift
Short-term (no shift): T_rss = k · √(Σ σᵢ²) → yields matches 3σ, 4σ, etc.
Long-term (1.5σ shift per part): T_rss_lt = k · √(Σ σᵢ²) + 1.5 · Σ σᵢ The mean shift term 1.5·Σσᵢ is the worst-case of ALL means shifting in the same direction
Motorola convention: 6σ short-term process = 4.5σ long-term = 3.4 PPM defect rate
⭐ Interactive Shift Effect
Adjust mean shift and see how it widens the assembly gap distribution.
Number of parts (n)
5
Each ±tol (mm)
0.10
Mean shift (× σ)
1.5
Sigma level (k)
3.0
Gap distribution: no shift vs with shift
Advanced
Sensitivity Analysis
Which part's tolerance contributes most to assembly variation? Sensitivity analysis ranks parts by their variance contribution — showing where tightening tolerance has the biggest impact.
📐 Sensitivity Coefficients
σ_gap² = Σ (∂G/∂xᵢ)² · σᵢ² = Σ sᵢ² · σᵢ² = Σ σᵢ² (linear stackup)
Contribution of part i: Cᵢ = σᵢ² / σ_gap² × 100% = (tᵢ/kᵢ)² / Σ(tⱼ/kⱼ)²
Sensitivity rank: sort parts by Cᵢ descending For nonlinear stackup G(x₁…xₙ): sensitivity = (∂G/∂xᵢ)² · σᵢ² at nominal values
⭐ Interactive Sensitivity Explorer
Build an assembly and see which parts dominate variance. Tighten the top contributor first — it gives the most reduction per dollar spent.
Part Name±Tol (mm)k (sigma)
📊 Variance Contribution Breakdown
Pareto of variance contribution (%) per part
GD&T
GD&T & Tolerance Loops
How GD&T symbols (position, flatness, runout) translate into stackup loop contributions. Setting up the closed-loop equation from a drawing.
🔁 The Closed-Loop Method
Every tolerance stackup starts from a closed loop: starting at one end of the gap, traverse through each part in the assembly, and return to the other end. Assign +1 to dimensions that open the gap, −1 to those that close it.
Loop equation: G = D_housing − D_part_A − D_part_B − D_spacer + D_shim
At nominal: G₀ = Σ sᵢ · Nᵢ = 0 (balanced loop — all gaps accounted for)
GD&T contributions: add geometric tolerances as bilateral tolerances to the loop
📋 GD&T Symbols → Stackup Contribution
GD&T Symbol
Stackup Contribution
How to Include
⊕ True Position (⌀ t)
±t/2 in each axis
Add ±t/2 as bilateral tol in relevant axis
— Flatness (t)
±t/2 tilt/bow
Add ±t/2 to dimension perpendicular to surface
◎ Runout / Concentricity (t)
Full value t (unilateral)
Add as ±t/2 (bilateral equivalent)
∥ Parallelism (t)
±t/2 over length L
Add ±t·(d/L)/2 where d = distance from datum
⊿ Angularity (t)
±t/2 at nominal angle
Project onto stackup direction: ±(t/2)·cos θ
⊙ Cylindricity (t)
±t/2 radial
Add ±t/2 as radial tolerance
Dimensional tol ±t
Direct ±t
Directly add ±t to the loop
💡 Rules of Thumb
Every loop must close — start and end at the same datum
Assign directions consistently: traversing left-to-right is +1 for openings
Floating fastener: position tol = (hole tol + clearance hole tol) / 2 per axis
Fixed fastener: position tol = clearance / 2 per axis
Do not mix GD&T and ± linear tolerances without converting GD&T to bilateral linear equivalents
Bonus tolerance (MMC/LMC modifiers) changes tolerance value with actual mating size