In short
Tolerance stack-up analysis predicts how the individual part tolerances in an assembly add up to variation in a functional dimension - a gap, a clearance, an interference or an alignment. It answers two questions an exam or an interviewer will always ask: *will the parts always fit*, and *which tolerance should I tighten if they do not*. Every dimension on a drawing has a tolerance because nothing can be made exactly; the stack-up is the arithmetic that connects those tolerances to assembly function and to cost. It is examined in Engineering Metrology and Measurements, Machine Design, Design for Manufacture and GATE ME (limits, fits and tolerances), and used daily in design and quality roles at Maruti Suzuki, Tata Motors, Bosch, Mahindra, Bajaj, TVS, Godrej, L&T, Cummins, Wipro Infrastructure and the engineering-services arms of TCS, Tata Technologies, Infosys and Capgemini.
Explained
Basic terms and the Indian standard system
- Basic (nominal) size: the theoretical dimension from which limits are derived. Actual size: what the part measures. Limits: the maximum and minimum permitted sizes.
- Tolerance: upper limit − lower limit; always positive. Unilateral (20 +0.00/−0.05), bilateral symmetric (20 ± 0.025) or bilateral unequal (20 +0.04/−0.01).
- Deviation: difference between a limit and the basic size - upper deviation (ES for hole, es for shaft) and lower deviation (EI, ei).
- Allowance: the intentional difference between hole and shaft sizes - positive gives clearance, negative gives interference.
- IS 919 (adopted from ISO 286) gives the ISO system of limits and fits: 18 grades IT01, IT0, IT1 … IT16 and fundamental deviations lettered A-ZC (holes, capitals) and a-zc (shafts, small letters). IS 2709 guides the selection of fits; IS 8000 covers geometrical tolerancing on drawings; IS 10719/IS 10721 cover tolerances for castings and forgings.
- Standard tolerance unit i = 0.45·D1/3 + 0.001·D micrometres, D = geometric mean of the diameter step in mm. IT6 = 10i, IT7 = 16i, IT8 = 25i, IT9 = 40i, IT10 = 64i, IT11 = 100i - each grade from IT6 upward is about 1.6× the previous.
- Hole basis (H shaft-letter, e.g. H7/g6) is preferred in India and worldwide because a hole is made with a fixed-size tool (reamer, broach) while a shaft is easily turned to size.
- Fits: clearance (H7/g6, H8/f7), transition (H7/k6, H7/n6), interference (H7/p6, H7/s6, H7/u6).
Why stack-up is needed, and the loop diagram
- A functional requirement (a gap, a protrusion, a bearing end-float) is almost never a single toleranced dimension - it is the *result* of several, each with its own tolerance.
- Step 1 - define the requirement: state the gap or clearance, its nominal value and the acceptable limits (e.g. gap must stay between 0.1 and 0.5 mm so a seal works and does not rattle).
- Step 2 - draw the loop (chain) diagram: start at one face of the gap and walk through contacting features, part by part, back to the other face. The loop must close.
- Step 3 - sign each link: moving in the chosen positive direction (say left-to-right or upward) is +; moving against it is −. Dimensions that enlarge the gap are positive, those that consume it are negative.
- Step 4 - sum the nominals: gap nominal = Σ(+dims) − Σ(−dims).
- Step 5 - accumulate the tolerances by worst-case or statistical method (below).
- Step 6 - compare with the requirement and, if it fails, reallocate: tighten the largest contributor, shift a nominal, add a shim/selective assembly, or relax the requirement.
- Only one dimension in a chain may be left unspecified; over-dimensioning (closing the chain with every dimension toleranced) creates a redundant, uncontrollable requirement - the classic drawing error.
- Baseline (datum) dimensioning keeps each feature referenced to a common datum and avoids accumulation; chain dimensioning stacks tolerances link by link; direct dimensioning controls the critical distance itself and leaves the rest to add up.
Worst-case (arithmetic) stack-up
- Assumes every part is simultaneously at its worst limit. Tolerance of the gap T = Σ|Ti| - the arithmetic sum, regardless of sign of the link.
- Gap max = Σ(max of + dims) − Σ(min of − dims); Gap min = Σ(min of + dims) − Σ(max of − dims).
- Advantages: simple, needs no statistics, guarantees 100% interchangeability - every part within tolerance assembles.
- Limitations: very conservative. For n equal tolerances the stack grows as n, forcing tight (and expensive) part tolerances; the probability of all n parts being at their limits with the same sign is vanishingly small.
- Mandatory where failure is unacceptable or production volume is low: safety-critical aerospace and medical parts, single-piece or job-shop work, and any fit checked by a go/no-go gauge.
Statistical stack-up - RSS and its variants
- Part dimensions vary randomly and roughly normally about the mean, so tolerances combine as variances, not as sums.
- Root sum square (RSS): T_rss = √(ΣTi²) - assumes each part tolerance equals ±3σ (so ±T corresponds to 3σ), centred, and independent.
- RSS is much tighter than worst case: for n equal tolerances T_rss = T·√n against T_wc = T·n, a saving factor of √n (4 links → RSS is half of worst case).
- The price: a small predicted fraction of assemblies fall outside the predicted gap - at ±3σ per part the assembly gap is also ±3σ, i.e. about 2,700 ppm outside if everything is perfectly centred.
- Modified RSS / Spotts: T = (T_wc + T_rss)/2 - a practical compromise used when distributions are unverified.
- Benderised RSS (Bender's factor): T = 1.5·√(ΣTi²), allowing for real processes that are neither perfectly centred nor perfectly normal.
- Six-sigma (dynamic) stack-up: each contributor is scaled by its process capability, σi = Ti/(3·Cpk,i), and a mean shift is included; this is what automotive suppliers using APQP/PPAP actually submit.
- Monte Carlo simulation: sample each dimension from its measured distribution thousands of times, build the histogram of the gap, and read off the rejection rate. Handles non-linear stacks (angles, trigonometry, 3D), non-normal distributions and GD&T effects that formulae cannot. Standard in CETOL 6σ, 3DCS, VisVSA and the tolerance analysis tools in Creo, CATIA and NX.
- Sensitivity: for a non-linear relation Y = f(x1…xn), use the first-order expansion - each term carries a sensitivity ai = ∂Y/∂xi, so T = √(Σ(ai·Ti)²) and worst case = Σ|ai·Ti|. For a simple 1D linear stack all ai = ±1.
Contribution, allocation and cost
- Percentage contribution (RSS): %i = Ti²/ΣTi² × 100 - identifies the dimension worth tightening. In worst case it is |Ti|/Σ|Ti| × 100.
- The largest tolerance dominates a stack quadratically in RSS: halving the biggest contributor usually buys more than tightening three small ones.
- Equal allocation: given an assembly tolerance T_asm over n links, each part gets T_asm/n (worst case) or T_asm/√n (RSS).
- Proportional (weighted) allocation: share the assembly tolerance in proportion to nominal size, difficulty or process capability, so no part is given a tolerance its process cannot hold.
- Cost rises steeply as tolerance tightens - roughly cost ∝ 1/T or a·(1/T) + b; a turned surface at ±0.1 mm may cost ₹x, at ±0.01 mm needs grinding at several times that, and at ±0.002 mm needs lapping. Economic tolerance allocation minimises Σ cost subject to the stack-up constraint.
- Remedies when a stack fails: tighten a tolerance; change the nominal (re-centre the gap); reduce the number of links (fewer parts, integrated castings); use a shim, spacer or adjusting screw; use selective assembly (sort parts into grades and match them - standard for engine piston-bore and bearing selection); or specify GD&T instead of ± to control the real requirement.
GD&T effects inside a stack-up
- Convert every geometric tolerance into an equivalent ± contribution before adding it: a diametral position tolerance ⌀0.2 gives ±0.1 in any one direction through the axis.
- Bonus tolerance (MMC): with an M modifier, departure of the feature size from MMC adds to the position tolerance - bonus = |actual size − MMC size|; total position tolerance = stated + bonus. Include the *maximum* bonus in a worst-case stack.
- Datum shift: when a datum feature is itself called at MMC, the part can shift inside its gauge; that shift is an extra stack contributor, not covered by the position tolerance.
- Virtual condition = MMC ± geometric tolerance (plus for an external feature, minus for an internal one) - the boundary used to prove that a pin always enters a hole: VC_pin ≤ VC_hole.
- A profile tolerance of 0.4 all-round is ±0.2 on the surface; a flatness or parallelism callout contributes its full value to a thickness stack, and runout affects rotating-assembly stacks.
- Projected tolerance zone (P) matters for threaded/press-fit inserts, where tilt of the fastener axis over the mating part's thickness enters the stack.
- Angular tolerances convert to linear through the arm length: linear error ≈ L·tanθ ≈ L·θ(rad). A ±0.5° tilt over 60 mm is about ±0.52 mm - often the biggest hidden contributor in a stack.
Key points
- Tolerance stack-up - accumulation of individual part tolerances into variation of an assembly dimension or gap.
- Loop diagram - signed chain of dimensions from one side of the gap to the other; it must close, and only one link may be unspecified.
- Sign convention - dimensions in the positive direction add, those against it subtract; tolerances always add in magnitude for worst case.
- Worst case - T = Σ|Ti|; guarantees 100% interchangeability, costs the most, grows linearly with the number of links.
- RSS - T = √(ΣTi²); assumes ±3σ, centred, independent, normal parts; grows as √n, so it is cheaper but allows a small reject rate.
- Modified RSS (Spotts) = (T_wc + T_rss)/2; Benderised = 1.5√(ΣTi²) - practical middle grounds.
- Monte Carlo - simulation of the whole stack; the only honest method for non-linear, 3D or non-normal problems.
- Sensitivity ai = ∂Y/∂xi - multiplies each tolerance in non-linear or angular stacks.
- Percentage contribution - Ti²/ΣTi² in RSS; tells you which tolerance to tighten.
- Cp = (USL−LSL)/6σ, Cpk includes centring; Cpk ≥ 1.33 is the usual automotive PPAP acceptance in India.
- Allocation - T_asm/n (worst case) or T_asm/√n (RSS) for equal shares; weight by process capability in practice.
- Cost vs tolerance is inverse and steep - turning, grinding and lapping differ by an order of magnitude in both tolerance and cost.
- IS 919 / ISO 286 - 18 IT grades and letter deviations; hole basis (H) preferred; IS 2709 for selecting fits; IS 8000 for GD&T on drawings.
- Bonus tolerance = |actual size − MMC|, added to a position tolerance at MMC; datum shift is an extra, separate contributor.
- Virtual condition - the fixed boundary a feature never violates; a pin assembles if VC_pin ≤ VC_hole.
- Angular error converts as L·tanθ; small angles over long arms dominate stacks.
- Remedies - tighten the top contributor, re-centre the nominal, reduce link count, add a shim, or use selective assembly.
- Baseline dimensioning avoids accumulation; chain dimensioning causes it - never dimension a closed chain fully.
Formulas and examples
Hole/shaft deviations: hole limits = D + ES, D + EI; shaft limits = D + es, D + ei (D = basic size)
Clearance_max = Hole_max − Shaft_min; Clearance_min = Hole_min − Shaft_max; Allowance = Hole_min − Shaft_max
Standard tolerance unit i = 0.45·D1/3 + 0.001·D (i in µm, D in mm = √(D1·D2) of the size step)
Nominal gap G = Σ(+dimensions) − Σ(−dimensions) (mm)
Worst case: T_wc = Σ|ai·Ti|; G_max = G + T_wc, G_min = G − T_wc (for symmetric ±Ti)
RSS: T_rss = √(Σ(ai·Ti)²) (Ti = half-tolerance = ±value, taken as 3σi)
Modified RSS (Spotts): T = (T_wc + T_rss)/2; Benderised RSS: T = 1.5·√(ΣTi²)
σ_assembly = √(Σ(ai·σi)²); with σi = Ti/(3·Cpk,i) for a capable process
Cp = (USL − LSL)/(6σ); Cpk = min[(USL − µ)/3σ, (µ − LSL)/3σ]; Z = (Limit − µ)/σ
% contribution (RSS) = (ai·Ti)² / Σ(ai·Ti)² × 100
Allocation: Ti = T_asm/n (worst case) or Ti = T_asm/√n (RSS), n = number of links
Bonus tolerance = |actual feature size − MMC size|; Total position tol = stated + bonus
Virtual condition: external feature VC = MMC + geometric tol; internal feature VC = MMC − geometric tol
Angular to linear: δ = L·tanθ ≈ L·θ(rad) (L = arm length mm, θ in radians)
Example 1 - Worst case versus RSS on a four-part stack A shaft assembly inside a housing: housing bore depth 100 ± 0.10, and inside it a bearing 20 ± 0.05, a spacer 30 ± 0.08, a gear hub 40 ± 0.06. The gap closes the loop.
- Nominal gap = 100 − (20 + 30 + 40) = 10.00 mm.
- Worst case: T_wc = 0.10 + 0.05 + 0.08 + 0.06 = ±0.29 mm → gap 9.71 to 10.29 mm.
- RSS: T_rss = √(0.10² + 0.05² + 0.08² + 0.06²) = √(0.0100 + 0.0025 + 0.0064 + 0.0036) = √0.0225 = ±0.15 mm → gap 9.85 to 10.15 mm.
- Spotts: (0.29 + 0.15)/2 = ±0.22 mm. Benderised: 1.5 × 0.15 = ±0.225 mm.
- Contributions (RSS): housing 0.0100/0.0225 = 44.4%, spacer 28.4%, hub 16.0%, bearing 11.1% - so tighten the housing depth first.
- If the requirement were a gap of 10 ± 0.20 mm, worst case fails (±0.29) but RSS passes (±0.15); the design decision is whether a small reject rate is acceptable.
Example 2 - Hole and shaft fit, clearance limits A ⌀50 H7/g6 fit. From IS 919 tables: H7 hole = 50.000/50.025 (ES = +25 µm, EI = 0); g6 shaft = 49.991/49.975 (es = −9 µm, ei = −25 µm).
- Hole tolerance = 25 µm; shaft tolerance = 16 µm.
- Clearance_max = 50.025 − 49.975 = 0.050 mm = 50 µm.
- Clearance_min = 50.000 − 49.991 = 0.009 mm = 9 µm (= allowance).
- Total fit variation = 25 + 16 = 41 µm = 50 − 9. Both limits are positive, so it is a clearance fit (a running fit for a shaft in a bush).
- Cross-check with the tolerance unit: D = √(30 × 50) = 38.7 mm → i = 0.45 × 38.71/3 + 0.001 × 38.7 = 0.45 × 3.383 + 0.0387 = 1.56 µm. IT7 = 16i = 25 µm and IT6 = 10i = 15.6 ≈ 16 µm - matching the table.
Example 3 - Statistical capability and reject rate A plate thickness is specified 5.00 ± 0.10 mm. The press shop measures µ = 5.03 mm, σ = 0.025 mm.
- Cp = 0.20/(6 × 0.025) = 0.20/0.15 = 1.333 - the process is capable in spread.
- Cpk = min[(5.10 − 5.03)/0.075, (5.03 − 4.90)/0.075] = min[0.933, 1.733] = 0.933 - not capable as centred.
- Z at the upper limit = (5.10 − 5.03)/0.025 = 2.8 → about 0.26% above USL; Z at the lower limit = 5.2, effectively zero → total reject ≈ 0.26% (2,600 ppm).
- Re-centring to µ = 5.00 would give Cpk = Cp = 1.333 and about 63 ppm - the cheapest correction available, requiring no tolerance change.
- For a stack, this process contributes σ = T/(3·Cpk) = 0.10/(3 × 0.933) = 0.0357 mm effective, not 0.0333 - ignoring the shift under-predicts assembly variation.
Example 4 - Bonus tolerance and virtual condition (pin into hole) A pin ⌀10.00/9.95 with position tolerance ⌀0.1 at MMC must enter a hole ⌀10.20/10.25 with position tolerance ⌀0.1 at MMC.
- Pin MMC = 10.00 (largest external), VC_pin = 10.00 + 0.1 = 10.10 mm.
- Hole MMC = 10.20 (smallest internal), VC_hole = 10.20 − 0.1 = 10.10 mm.
- VC_pin = VC_hole → the parts just assemble in the worst case: a zero-clearance (line) condition, the limiting floating-fastener case - acceptable, but with no margin.
- If the pin is produced at 9.96, bonus = |9.96 − 10.00| = 0.04 → total position tolerance = 0.1 + 0.04 = ⌀0.14 mm, i.e. ±0.07 mm in a 1D stack.
- To gain margin, open the hole MMC to 10.30: VC_hole = 10.20 mm, giving 0.10 mm of guaranteed clearance.
Example 5 - Angular contributor and tolerance allocation A sensor bracket: mounting face to sensor tip = 60 mm, face perpendicularity ±0.3°, plus three linear links of ±0.05, ±0.04 and ±0.03 mm. The tip must stay within ±0.20 mm of nominal.
- Angular term: δ = 60 × tan(0.3°) = 60 × 0.005236 = ±0.314 mm - already larger than the whole requirement.
- Worst case total = 0.314 + 0.05 + 0.04 + 0.03 = ±0.434 mm - fails badly.
- RSS = √(0.314² + 0.05² + 0.04² + 0.03²) = √(0.09860 + 0.0025 + 0.0016 + 0.0009) = √0.10360 = ±0.322 mm - still fails, because one term dominates (95.2% of the RSS variance).
- Fix the dominant term: tightening perpendicularity to ±0.10° gives δ = 60 × 0.001745 = ±0.105 mm → RSS = √(0.01103 + 0.0050) = ±0.127 mm, worst case ±0.225 mm. RSS now passes.
- Alternative with no tolerance change: shorten the arm to 25 mm → δ = 25 × tan(0.3°) = ±0.131 mm → RSS = ±0.149 mm. Shortening the lever arm is usually cheaper than tightening an angle.
- Equal allocation check: to hold ±0.20 mm over 4 links, each gets 0.20/4 = ±0.05 mm (worst case) or 0.20/√4 = ±0.10 mm (RSS).
| Method | Formula | Assembly tolerance (4 links of ±0.05) | Guarantees fit | Typical use | ||
|---|---|---|---|---|---|---|
| Worst case | Σ | Ti | ±0.200 mm | Yes, 100% | Safety-critical, low volume, gauging | |
| RSS | √(ΣTi²) | ±0.100 mm | No, ~2,700 ppm | High-volume, capable processes | ||
| Spotts (modified) | (T_wc+T_rss)/2 | ±0.150 mm | Nearly | Unknown distributions | ||
| Benderised | 1.5√(ΣTi²) | ±0.150 mm | Nearly | Real shop-floor processes | ||
| Monte Carlo | Simulation | Depends on data | Quantified | Non-linear, 3D, GD&T stacks |
| Process | Typical tolerance on ⌀50 | Nearest IT grade | Relative cost |
|---|---|---|---|
| Sand casting / forging | ±0.5 to ±1.5 mm | IT14-IT16 | 1 |
| Rough turning / milling | ±0.2 mm | IT12 | 2 |
| Finish turning | ±0.05 mm | IT9-IT10 | 4 |
| Reaming / fine boring | ±0.015 mm | IT7 | 8 |
| Cylindrical grinding | ±0.008 mm | IT6 | 15 |
| Lapping / honing | ±0.002 mm | IT3-IT4 | 40+ |
Loop diagram, Example 1 (positive direction = left to right)
+100.00 ±0.10 housing bore depth
− 20.00 ±0.05 bearing width
− 30.00 ±0.08 spacer length
− 40.00 ±0.06 gear hub width
----------------------------------
= 10.00 gap (the unspecified link that closes the loop)
Where it is used
- Automotive design and quality: engine and transmission stacks (piston-to-bore, bearing end-float, gear backlash), panel gap-and-flush on body shops at Maruti Suzuki, Tata Motors, Mahindra, Hyundai Chennai and Bajaj - submitted as part of APQP/PPAP dimensional studies with Cpk ≥ 1.33.
- Tier-1 component suppliers: Bosch, Sundram Fasteners, Rane, Endurance, Varroc and Minda run stack-ups on injector, brake and lighting assemblies, and use selective assembly for pistons, bearings and injector nozzles.
- Bearings, pumps and valves: SKF, Schaeffler, Kirloskar, KSB and L&T Valves control running clearance, axial float and seal squeeze through H/g and H/f fits chosen from IS 2709.
- Aerospace and defence: HAL, ISRO/VSSC, BrahMos and DRDO labs use worst-case stacks (interchangeability without rework) plus Monte Carlo for assembly tooling and shim schedules.
- Consumer durables and electronics enclosures: Godrej, Voltas, Havells, Dixon and Foxconn India control plastic-moulded snap-fit gaps, keypad travel and screen flushness, where shrinkage adds to the stack.
- Job roles: design engineer / GD&T engineer, tolerance analysis engineer in engineering-services firms (Tata Technologies, L&T Technology Services, QuEST, Cyient, TCS, Capgemini Engineering), quality and metrology engineer on CMM, and manufacturing/process engineer setting process tolerances and gauges.
Interview questions
- Q: What is tolerance stack-up? A: It is the accumulated effect of individual part tolerances on a functional assembly dimension such as a gap or clearance, computed by summing the dimensions in a closed loop with signs and combining their tolerances.
- Q: Difference between worst-case and RSS analysis? A: Worst case adds tolerances arithmetically (Σ|Ti|) and guarantees every in-spec part assembles; RSS adds them in quadrature (√ΣTi²), gives a much smaller result, but accepts a small statistical reject rate.
- Q: When would you insist on worst case? A: When failure is unacceptable or cannot be reworked - safety-critical, aerospace or medical parts - and in low-volume or one-off production where statistics do not apply.
- Q: Why does RSS use the square root of the sum of squares? A: Because independent random variables combine by adding variances, and the tolerance is proportional to the standard deviation, so σ_asm = √Σσi².
- Q: What assumptions does RSS make, and when do they break? A: Normal, independent, centred distributions with tolerance = ±3σ; they break when a process is off-centre, when tool wear makes the distribution skewed, or when parts come from the same mould cavity and so are correlated.
- Q: How do you decide which tolerance to tighten? A: Compute the percentage contribution - Ti²/ΣTi² for RSS - and tighten the largest contributor, since variance scales with the square of the tolerance.
- Q: What is bonus tolerance? A: With a position tolerance applied at MMC, any departure of the feature size from MMC is added to the position tolerance: bonus = |actual size − MMC|.
- Q: What is virtual condition and how is it used in a stack-up? A: It is the worst-case boundary of a feature, MMC plus geometric tolerance for an external feature and MMC minus for an internal one; a pin enters a hole if VC_pin ≤ VC_hole.
- Q: How do you include an angular tolerance in a linear stack? A: Convert it with δ = L·tanθ, where L is the arm length from the pivot or datum to the point of interest; small angles over long arms often dominate the stack.
- Q: What is the relation between Cpk and the σ you use in a stack-up? A: For a capable, measured process σ = T/(3·Cpk), so a low Cpk inflates the effective σ and the predicted assembly variation - using T/3 blindly under-predicts it.
- Q: Which Indian standard governs limits and fits, and which fit system is preferred? A: IS 919 (aligned with ISO 286) for the system of limits and fits, with IS 2709 for selecting them; hole basis is preferred because holes are produced with fixed-size tools.
- Q: Your stack fails by 0.1 mm and the customer will not change the requirement. What do you do? A: In order of cost: re-centre the nominal, reduce the number of links, add a shim or adjustment, use selective assembly, convert ± to GD&T to recover the true requirement, and only then tighten the dominant tolerance.
- Q: Why is a fully dimensioned closed chain a drawing error? A: Because the last dimension is determined by the others, so its tolerance is doubly controlled and uncontrollable in production; one link must be left free to absorb the stack.
Common mistakes
- Getting the signs wrong in the loop, or not closing the loop at all - the commonest exam error; always draw the chain before computing.
- Adding half-tolerances to full tolerances in the same sum; keep everything as ± half-tolerance or convert unequal bilateral limits to an equivalent mean dimension ± half-tolerance first.
- Subtracting tolerances for a subtracted dimension - in worst case tolerances always add in magnitude, whatever the sign of the dimension.
- Using RSS when only a handful of parts are made, or when the processes are not centred and capable - statistics need volume and data.
- Ignoring geometric and angular contributors (flatness, perpendicularity, runout, datum shift) and analysing only the ± size dimensions.
- Forgetting bonus tolerance and datum shift at MMC, which makes a stack look tighter than it actually is.
- Mixing µm and mm, or reading the hole row as the shaft row in an IS 919 table; also quoting clearance_min as hole_min − shaft_min instead of hole_min − shaft_max.
- Tightening every tolerance to make a stack pass, instead of the one dominant contributor - it multiplies cost without fixing the problem.
Related topics
- Engineering drawing and GD&T · Metrology and measurements: limits, fits and gauges · Statistical quality control and process capability · Design for manufacture and assembly · CAD and 3D modelling · Machine design: shafts, keys and bearings