Tolerance Stack-up Analysis

Chains and loops, worst case, RSS, modified RSS and Monte Carlo, with the Machinery’s Handbook example worked step by step.

Parts are made with some variation. A single part’s tolerance is easy to read; whether an assembly will always go together depends on how the variations of several parts add up. A tolerance stack-up adds up the variation of every dimension that decides a gap, a clearance or a fit, so you can predict how the assembly will behave before anything is made. This page follows the method in the Machinery’s Handbook (“Tolerance Analysis and Assignment”), including its worked example, and extends it with geometric tolerances and design guidance. The basic one-dimensional worst-case and RSS examples are also on the GD&T Inspection and Tolerance Stack-up page. It is part of the Fits & Tolerances guide.

What a stack-up is

The Handbook describes two complementary jobs. Tolerance analysis works bottom-up: given the tolerances on each part, what variation will the assembly have? Tolerance assignment works top-down: given the variation the assembly can accept, what tolerance can each part have? Analysis is done on preliminary or final part tolerances to find needed design changes; assignment is done at the design stage to meet the assembly and function requirements. In practice you iterate between them.

The Handbook adds a warning that applies to all of it: part tolerances are not assigned arbitrarily, but based on manufacturing process capability, cost limits, and assembly and functional requirements. Overly restrictive tolerances limit the choice of processes and drive up cost, and small differences in tolerance can change cost dramatically.

The stack-up chain

A stack-up starts with a chain diagram: a picture of the assembly that identifies the dimension you want to solve (the assembly dimension, A) and every part dimension that contributes to it. Then write the chain as an equation, with a sign convention that gives each dimension a direction: positive for right or up, negative for left or down.

A = − B − C − D + E + F + G

That is the equation for the Handbook’s example (its Figure 5), a small bearing assembly with six contributing dimensions. The sizes below are in inches; the table also gives the mean and standard deviation of each dimension from manufacturing data.

DimensionSignMaxMinMean (µ), manufacturing dataStd. deviation (σ), manufacturing data
B−0.37600.37500.3754640.000106
C−0.59060.58580.5881260.001004
D−1.75101.74901.7501280.000203
E+0.18750.18250.1851470.000874
F+1.75501.74501.7507480.001200
G+0.93950.93550.9373310.000517
  • Clear part definition is essential. The Handbook stresses that unambiguous definition, as provided by geometric dimensioning and tolerancing, is required for accurate analysis, and that any variation allowed by reference drawings must be included in the dimensions of the stack.
  • Use the loop that matters. Follow the chain from one side of the gap, through each part and each contact, to the other side. A missing dimension or a wrongly signed one is the commonest source of a wrong answer.

Four methods

MethodIdeaUse it whenResult
Worst caseEvery dimension at its extreme, in the worst directionYou must guarantee fit; few dimensions (about seven or fewer) in the chain; parts are inspected so none are out of toleranceGuarantees 100% fit; tends to ask for tight, costly tolerances
StatisticalEach dimension is a normal distribution with a mean and a standard deviation from real data; the assembly dimension is another normal distributionYou have data from a controlled process (SPC); many dimensions contributeLikely values and ranges; allows larger tolerances; predicts conformance and defect rates; does not guarantee conformance
Root sum of squares (RSS)A statistical method with simplifying assumptions: each dimension’s mean is the middle of its tolerance and σ = (max − min) ÷ 6You have no manufacturing data but expect centered, normally distributed partsThe assembly is predicted to fall within ±3σ of its mean
Monte CarloA computer picks random values for every dimension, from its real distribution (normal, uniform or other), and combines them through the chain thousands of timesDistributions are not normal, the equation is nonlinear, or you want defect ratesA probability distribution of the assembly dimension, including defect rates

Worst case

A worst-case calculation is done twice: once for the maximum assembly dimension and once for the minimum. For a positive contributor use its maximum in the maximum equation and its minimum in the minimum equation; for a negative contributor the opposite:

Amax = − Bmin − Cmin − Dmin + Emax + Fmax + Gmax
Amin = − Bmax − Cmax − Dmax + Emin + Fmin + Gmin

Statistical

Assembly mean: µA = − µB − µC − µD + µE + µF + µG
Assembly standard deviation: σA = √( σB² + σC² + σD² + σE² + σF² + σG² )

The signs matter for the mean but not for σ, because variations add as squares. The normal distribution has about 68.26% of its area within ±1σ, 95.44% within ±2σ, and 99.74% within ±3σ (the Handbook’s statistical chapter). For 99% of assemblies, use ±2.5758σ.

RSS

µ = (max + min) ÷ 2
σ = (max − min) ÷ 6
Amax = µA + 3σA, Amin = µA − 3σA

The dividing-by-6 assumes a process whose ±3σ spread just fits the tolerance (a capability index of 1.0; see Statistical Tolerancing and Process Capability). Real processes that are better than that give a smaller assembly spread; worse processes, a larger one.

Modified RSS

Many practitioners add a safety factor to RSS (commonly 1.5, from Bender’s work, discussed in Fischer’s Mechanical Tolerance Stackup and Analysis) to allow for drift and non-centered processes: Tassembly = 1.5 × √ΣT². It sits between RSS and worst case and is a convenient compromise when there is little data. It is an industry convention, not a standard.

The Handbook’s example, step by step

Worst case0.14540.1722Modified RSS (1.5×)0.14900.1686RSS (±3σ)0.15230.1653Statistical, 99%0.15470.16430.14000.15000.16000.17000.1800inches
Four methods applied to the same assembly. Worst case guarantees every assembly; the statistical methods predict a narrower range and let you assign larger tolerances, at the cost of a small defect rate.

Worst case

Amax = −0.3750 − 0.5858 − 1.7490 + 0.1875 + 1.7550 + 0.9395 = 0.1722
Amin = −0.3760 − 0.5906 − 1.7510 + 0.1825 + 1.7450 + 0.9355 = 0.1454

Worst case predicts 0.1454 to 0.1722 inch: a band of 0.0268, which is the sum of all six tolerances.

Statistical (99% of assemblies)

µA = −0.375464 − 0.588126 − 1.750128 + 0.185147 + 1.750748 + 0.937331 = 0.159508
σA = √( 0.000106² + 0.001004² + 0.000203² + 0.000874² + 0.001200² + 0.000517² ) = 0.001879

99 percent of the area under a normal curve lies within ±2.5758σ, so the assembly dimension is expected to fall between 0.159508 − 2.5758 × 0.001879 = 0.154668 and 0.159508 + 2.5758 × 0.001879 = 0.164348 inch (the Handbook’s 0.154668 to 0.164348). The spread is 0.0097, about 36% of the worst-case band.

RSS (no manufacturing data)

With no data, take each mean as the middle of its range and σ = (max − min) ÷ 6:

DimensionMean (µ)Std. deviation (σ)
B0.37550.000167
C0.58820.000800
D1.75000.000333
E0.18500.000833
F1.75000.001667
G0.93750.000667

µA = 0.1588
σA = √Σσ² = 0.002167
Amax = µA + 3σA = 0.165301
Amin = µA − 3σA = 0.152299

RSS predicts 0.152299 to 0.165301 inch (the Handbook’s 0.152299 to 0.165301), a band of 0.0130, about 49% of the worst case.

Monte Carlo

Using the same manufacturing means and standard deviations, 100,000 random assemblies (computer-generated, repeatable seed) give:

  • Mean 0.159515 and standard deviation 0.001885 (compare 0.159508 and 0.001879 from the formulas: the same, as it should be).
  • Range of the simulated assemblies: 0.1515 to 0.1683 inch.
  • 98.96% fall inside the statistical 99% limits, and 100% fall inside the worst-case limits (0.1454 to 0.1722).
  • For normal distributions the Monte Carlo result simply confirms the formulas. Its value is for non-normal data, nonlinear chains and defect-rate predictions.

Modified RSS

Summing the ± tolerances gives 0.0134 (worst case). Their RSS is 0.0065. With the 1.5 factor: ± 0.0098, about the middle of the assembly range 0.1588: 0.1490 to 0.1686 inch.

Geometric tolerances in a stack

A stack of plus-minus size dimensions is only part of the story. Form, orientation, location and runout tolerances also move features, and they have to be put in the chain as numbers. The Handbook warns that care must be taken to ensure the effects of geometric variation are included in the dimensions of the stack-up.

Tolerance in the loopHow it enters the stack
Position (⌀t)A feature’s axis may be up to t ÷ 2 from true position in any direction. In a one-dimensional stack the contribution is ± t ÷ 2; add the bonus tolerance if the size is at a modifier condition. Datum shift adds more (see the Position and Location page)
Size at MMC or LMCThe virtual condition (size plus geometric tolerance) is the worst-case boundary for fits and gaps; use it in a worst-case loop
Flatness, perpendicularity, parallelismAdd the full zone width on the surface involved (a flat surface that sits across a gap can be out by its flatness)
ProfileEqual bilateral profile t contributes ± t ÷ 2; a unilateral zone contributes t on one side only
RunoutContributes its full indicator movement in the direction of the gap, and half of it to the centerline offset
FitsA bearing or press fit between two parts adds its clearance to the loop wherever the loop passes through the fit (see How Fits Work)

Angles and two dimensions

When parts act at an angle, a dimension’s effect on the assembly is its component in the direction of the gap: ΔA = ΔX × cos θ, where θ is the angle between the dimension and the gap. The factor cos θ is the sensitivity of the assembly to that dimension. A stack-up of 2D or 3D features is a vector loop: write each dimension as a vector, resolve it along the direction you care about, and add the contributions with their sensitivities. Worst case sums |cos θ| × T; RSS sums (cos θ × T)². An angle tolerance contributes the length of the part times the angle in radians.

Assigning tolerances

Assignment spreads a “tolerance budget” among the contributing dimensions so that the assembly meets its target. The Handbook lists the common ways to do it:

MethodHow it works
Even assignmentPart feature tolerances are assigned equally among the dimensions
Proportional scalingPreliminary tolerances are assigned and analyzed. If the assembly tolerance exceeds the allowed amount, the part tolerances are scaled down proportionally
Weight factorsA weight factor, based on manufacturing difficulty, is given to each tolerance; the assembly tolerance is divided in proportion to the weights
Cost minimizationA cost-against-tolerance relationship is determined for each dimension, and an optimization finds the combination of tolerances with the lowest total cost
Total cost minimizationLoosens tolerances to cut cost while also counting the cost of lower yield from defective parts

There are infinitely many ways to assign part tolerances to reach a given assembly tolerance, so analytical solutions are usually not possible; the methods above are rules for choosing a good one.

More worked examples

Example 1: assigning a budget three ways

The assembly gap may vary by ± 0.30 mm in total (the stack is four dimensions, n = 4).

  • Even assignment, worst case: T ÷ n = 0.30 ÷ 4 = ± 0.075 mm on each part.
  • Even assignment, RSS: T ÷ √n = 0.30 ÷ 2 = ± 0.150 mm on each part: twice as generous, if you accept the statistical risk.
  • Weight factors (worst case), with weights 1, 1, 2, 4 for the four parts in order of how hard they are to hold: the budget is split in proportion to the weights:
PartWeightTolerance (± mm)
Part 110.038
Part 210.038
Part 320.075
Part 440.150

The tolerances add to ± 0.30 mm, as they must, but the hard part gets the largest share.

Example 2: how many parts is “too many” for worst case?

Parts in the chain (each ± 0.05)Worst caseRSSWorst case ÷ RSS
3± 0.150± 0.0871.73×
5± 0.250± 0.1122.24×
7± 0.350± 0.1322.65×
10± 0.500± 0.1583.16×
15± 0.750± 0.1943.87×

Worst case grows with n and RSS with √n, so the gap between them widens as the chain gets longer. The Handbook’s “seven or fewer” guideline for worst case reflects this: at seven dimensions worst case is already 2.6 times the RSS result.

Example 3: a vector loop component

A pin is toleranced ± 0.10 mm along a line at 30° to the gap direction. Its effect on the gap is 0.10 × cos 30° = ± 0.0866 mm. At 90° it contributes nothing, at 0° all of it.

Troubleshooting

SymptomLikely causeTry
Assemblies fail although the stack-up passedA contributor was missing from the loop, a sign was wrong, or a geometric tolerance was left outRebuild the chain from the drawing, check each sign, and add position, form and fit contributions
Statistical result looks too goodParts are not centered or not normally distributed; the process has driftedUse measured means, or Monte Carlo, or modified RSS; check the process with SPC
Worst case demands impossible tolerancesToo many dimensions in the chain, or a loose assembly requirementShorten the chain (datum from one feature), or accept a small defect rate with RSS
The same assembly dimension depends on a fitClearance of a bearing or pin was not countedAdd the fit’s clearance (for example H7/g6) as a contributor
An angle’s effect is much larger than expectedA small angle error over a long armUse the leg length times the angle in radians, or tolerance the end position directly

Related

FAQ

Which method should I use?

Worst case if every part must fit and the chain is short; statistical or RSS when there are many dimensions and the processes are capable and centered; Monte Carlo when the data are not normal or you need a defect rate. Many designs check worst case first, then relax.

Why is the RSS range so much narrower than worst case?

Because it is very unlikely that every part will be at its extreme in the same direction at once. RSS exploits that, which is why it needs the assumptions of independent, centered, roughly normal dimensions.

Where does σ = (max − min) ÷ 6 come from?

It assumes the tolerance band is ±3σ, which gives 99.73% of parts inside the limits for a centered normal distribution (capability index 1.0). If your process is better than that, σ is smaller.

How do I handle a dimension with a bilateral and a unilateral tolerance?

Convert every dimension to a mean (the middle of its range) and an equal ± tolerance before you add. A dimension 25.00 +0.10 −0.00 becomes 25.05 ± 0.05.

Should I include a safety factor?

On RSS, many companies do (the modified RSS factor of 1.5); on worst case, no, because it already assumes the worst. Choose a factor your quality system can justify with data.

Can a stack-up replace a gage or a test?

No. It predicts the assembly from the drawing; it does not know the actual parts. Verify critical assemblies with measured parts or a functional test.

References

  • Machinery’s Handbook, 31st edition, Industrial Press: “Tolerance Analysis and Assignment” (the tolerance stack-up chain; worst-case, statistical, RSS and Monte Carlo methods; tolerance assignment) and “Statistical Analysis of Manufacturing Data”.
  • Fischer, B. R., Mechanical Tolerance Stackup and Analysis, CRC Press (modified RSS, geometric tolerances in stack-ups, vector loops).
  • Bender, A., “Statistical Tolerancing as it Relates to Quality Control and the Designer”, Automotive Division Newsletter of ASQC, 1968 (the 1.5 factor).
  • ASME Y14.5-2018, Dimensioning and Tolerancing.

Last reviewed: October 2026. The worst-case, statistical and RSS results reproduce the Handbook’s worked example.