Guides

Tolerance stack-up example: worst case vs RSS, step by step

A tolerance stack-up answers one question: given the tolerance on every part, what range can a gap or overlap in the assembly take? The example below goes from the loop diagram to the answer three ways: worst case, root sum square (RSS) and RSS inflated by Bender's 1.5 factor. The same six-part stack gives three different verdicts. Every number on this page is computed at build time by the engine behind the tolerance stack-up calculator, so you can open the example there and change it.

The assembly

A 20 mm shaft carries a 6204 deep groove ball bearing, a spacer, a spur gear and a thrust washer, all pushed against a shoulder and retained by a DIN 471 circlip. The requirement is the axial end float between the washer and the circlip. It must be at least 0.100 mm so the circlip always seats in its groove, and at most 0.500 mm so the gear mesh stays in line. Units are mm throughout.

RefDimensionDrawingSignSource of tolerance
A Shaft, shoulder to circlip groove wall 41.900 +0.100 / -0.000 + Drawing, turned feature
B Bearing 6204 inner ring width 14.000 +0.000 / -0.120 - ISO 492:2023 Normal class, d 18 to 30 mm
C Spacer 8.000 ± 0.050 - Drawing, ground faces
D Gear hub width 18.000 ± 0.050 - Drawing, faced both sides
E Thrust washer 0.500 ± 0.020 - Purchased shim
F Circlip DIN 471, 20 mm shaft 1.200 +0.000 / -0.060 - DIN 471 thickness s, h11

Step 1: draw the loop

Start on one face of the gap and walk through touching parts, one dimension per part, until you arrive at the other face. Here the loop starts at the circlip face and runs along the circlip thickness to the groove wall. It continues along the shaft to the shoulder, then back out through the bearing, spacer, hub and washer to the other face of the gap. Take the direction that opens the gap as positive: the shaft dimension A is positive, and every part packed into that length (B to F) is negative. This convention is from Fischer (2011); any consistent one works.

Loop diagram for the shaft end float The shaft dimension A runs from the shoulder to the circlip groove wall in the positive direction. The bearing B, spacer C, gear hub D, washer E and circlip F each run in the negative direction. The end float gap sits between the washer and the circlip. Shoulder Bearing Spacer Gear hub Washer Circlip Gap A (+) B (-) C (-) D (-) E (-) F (-)
Loop diagram, not to scale. Gap = A - B - C - D - E - F. Scroll the diagram sideways to see the gap.

Step 2: convert every tolerance to equal bilateral

Three of the six tolerances are unilateral. Before adding anything, rewrite each as a mean and a symmetric half width:

xˉi=xi+T+,i−T−,i2,ti=T+,i+T−,i2\bar{x}_{i} = x_{i} + \dfrac{T_{+,i} - T_{-,i}}{2}, \qquad t_{i} = \dfrac{T_{+,i} + T_{-,i}}{2}

where xi is the drawing nominal and T+,i, T-,i the plus and minus tolerances. Skipping this step is the most common way to get the wrong nominal gap. From the drawing nominals the gap is 0.200 mm; from the means it is 0.340 mm, a difference of 0.140 mm that a worst case on the drawing values would miss.

RefSignMeanHalf widthHalf width²σ (k = 3)
A + 41.950 0.050 0.0025 0.0167
B - 13.940 0.060 0.0036 0.0200
C - 8.000 0.050 0.0025 0.0167
D - 18.000 0.050 0.0025 0.0167
E - 0.500 0.020 0.0004 0.0067
F - 1.170 0.030 0.0009 0.0100
Sum 0.340 (signed) 0.260 0.0124 0.0371 (RSS)

Step 3: worst case

Worst case assumes every part sits at the limit that hurts, all at once. The half width of the gap is the plain sum of the half widths:

tWC=∑iti=0.260 mmt_{\text{WC}} = \sum_{i} t_{i} = 0.260\ \text{mm}

so the gap runs from 0.080 to 0.600 mm. That breaks both requirements: the circlip might not seat, and the end float can exceed 0.500 mm. On a worst case basis the design fails: the tolerances must be tightened or a selective shim added.

Step 4: root sum square (RSS)

RSS treats each dimension as an independent random variable. If every tolerance is ±3σ of a centred normal process, the variances add, so the half width of the gap is the square root of the sum of the squared half widths:

tRSS=∑iti2=0.0124 mm2=0.111 mm,σ=tRSS3=0.037 mmt_{\text{RSS}} = \sqrt{\sum_{i} t_{i}^{2}} = \sqrt{0.0124\ \text{mm}^{2}} = 0.111\ \text{mm}, \qquad \sigma = \dfrac{t_{\text{RSS}}}{3} = 0.037\ \text{mm}

The RSS gap is 0.229 to 0.451 mm, comfortably inside the 0.100 to 0.500 mm requirement. The seeded Monte Carlo run in the calculator (20,000 samples, seed 1) agrees: mean 0.340 mm, σ 0.038 mm, and 0.01 % of assemblies outside the requirement.

Step 5: Bender's 1.5 factor

Bender (1962) observed that production parts are rarely centred normals, and proposed multiplying the RSS result by 1.5 as a practical allowance:

tB=1.5 tRSS=1.5×0.111 mm=±0.167 mmt_{\text{B}} = 1.5\,t_{\text{RSS}} = 1.5 \times 0.111\ \text{mm} = \pm 0.167\ \text{mm}

so the gap runs from 0.173 to 0.507 mm. The lower limit is safe. The upper limit now sits 0.007 mm over. The Bender result falls between RSS and worst case. In this example it is the one that asks a useful question: how confident are we in the spacer and hub processes?

The three answers side by side

MethodHalf width (mm)Gap range (mm)Against 0.100 to 0.500
Worst case± 0.2600.080 to 0.600Outside 0.100 to 0.500
RSS± 0.1110.229 to 0.451Inside 0.100 to 0.500
RSS × 1.5 (Bender)± 0.1670.173 to 0.507Outside 0.100 to 0.500
Monte Carlo, ±3σ normalsσ 0.0380.226 to 0.453 (0.135 to 99.865 percentile)0.01 % outside

Open this example in the calculator

What RSS quietly assumes: Cp and Cpk

The RSS line above is only as good as the statement "each tolerance is ±3σ of a centred normal". In capability terms that is Cp = Cpk = 1.0 for every part. Real processes differ in two directions, and they pull the answer opposite ways.

Process assumptionGap σ (mm)Monte Carlo mean (mm)Outside 0.100 to 0.500
Cp = Cpk = 1.0 (±3σ, centred)0.0370.3400.01 %
Cp = Cpk = 1.33 (±4σ, centred)0.0280.3400.00 %
Cp = 1.33, every mean shifted 1σ to open the gap (Cpk = 1.0)0.0280.4050.04 %

Better capability shrinks the spread. Mean shifts that all lean the same way move the whole distribution, and the reject rate climbs even though every part is still inside its drawing tolerance. Shifts that lean the same way are not rare: a turner who aims for maximum material on every shaft face, or a batch of spacers ground from one setting, produce exactly that correlation. This is what the Bender factor, or an explicit mean shift, is there to cover. Ask the supplier for Cpk, not Cp, and model the shift if Cpk is well below Cp.

Which method to use

MethodUse whenAvoid when
Worst caseTwo to four contributors; safety-critical fits; one-off or low volume builds; no capability data; interchangeable spares must fit any assembly.Many contributors, where it forces tolerances tighter than the processes need.
RSSFive or more independent contributors from stable, centred processes with known Cpk of 1.0 or better; volume production that accepts a small reject or rework rate.Few contributors, unknown suppliers, or correlated parts (same machine, same setting, same batch).
RSS × 1.5 (Bender)Early design, when statistical tolerancing is justified by volume but process data does not exist yet.When real Cpk data is available: model the shift instead.
Monte CarloNon-normal contributors (uniform, skewed), GD&T bonus, or when you need a reject rate rather than a range.As a substitute for knowing the input distributions: the output is only as good as they are.

Common mistakes

MistakeWhat goes wrongFix
Inconsistent sign conventionA dimension added instead of subtracted moves the nominal gap by twice its size.Draw the loop first. One direction is positive; each dimension gets its sign from the direction it is walked.
Unilateral tolerances used as if bilateralNominal gap taken from drawing values, here 0.200 instead of 0.340 mm.Convert every contributor to mean ± half width before adding.
Mixing unitsA purchased part quoted in inches added to a metric stack; a 0.002 in tolerance read as 0.002 mm.Convert every contributor to one unit before entering it. The calculator uses one unit per stack.
Forgetting GD&T bonusA position tolerance at MMC grows as the feature departs from MMC. Using the stated zone alone understates the variation.Add the bonus to the zone, then halve it: position T with bonus B becomes ± (T + B) / 2 (ASME Y14.5-2018 terms).
Two dimensions per part in the loopDouble-counts a part and inflates the stack.Each part in the loop contributes one dimension, between the two faces the loop touches.
RSS on two or three partsThe statistical benefit is small and the normal assumption carries the whole answer.Use worst case, or Monte Carlo with real distributions.

Scope of this example

The stack is one-dimensional and linear: every dimension acts along the shaft axis with a sensitivity of +1 or -1. It ignores thermal growth of the shaft and housing, bearing internal clearance, circlip dish and groove wall chamfer, and any tilt of the faces. Where face perpendicularity matters, a GD&T orientation or runout tolerance on the spacer and hub faces belongs in the loop too, and ASME Y14.5-2018 defines how those zones apply.

References

SourceUsed for
ASME Y14.5-2018, Dimensioning and TolerancingGD&T terms: position, MMC, bonus tolerance, orientation.
Bender, A. (1962), "Benderizing tolerances: a simple practical probability method of handling tolerances for limit stack-ups", Graphic Science, December 1962The 1.5 inflation factor on RSS.
Fischer, B. R., Mechanical Tolerance Stackup and Analysis, 2nd ed., CRC Press, 2011Loop diagram, sign convention, equal-bilateral conversion, worst case and RSS.
ISO 492:2023, Rolling bearings, radial bearings, geometrical product specifications and tolerance valuesInner ring width tolerance, Normal tolerance class.
DIN 471:2011, Retaining rings for shaftsCirclip thickness and tolerance.

Related: tolerance stack-up calculator, press fit calculator, all guides.