Tolerance stack-up calculator

Enter the dimensions in the loop around a gap, with their tolerances. You get the worst-case and RSS range of the gap, the predicted reject rate in ppm, Cpk, a Monte Carlo run and which tolerance matters most. Unequal tolerances (+0 / −0.12) are handled. Free, no sign-up, and nothing you type leaves your browser.

1-D linear stacks · worked example verified by script · Updated 16 Nov 2026

DimensionNominal (mm)Upper dev.Lower dev.DirectionRemove
A. Shaft: shoulder to circlip groove wall43.50+0.08−0.08+ opens gap
B. Ball bearing 6204 width14.000−0.12− closes gap
C. Spacer length10.00+0.05−0.05− closes gap
D. Gear hub width18.00+0.10−0.10− closes gap
E. Circlip thickness1.200−0.06− closes gap
Mean gap0.390nominal 0.300 mm
Predicted out of limits19 ppmCpk 1.37 (normal, RSS)
Worst case0.070 to 0.710 (±0.320)—
RSS (±3σ)0.237 to 0.543 (±0.153)—
Monte Carlorunning…—

Share of the variation (RSS)

How do you do a tolerance stack-up?

A stack-up answers one question: how much can this gap vary once real parts, each somewhere inside its tolerance, are put together? Five steps:

  1. Pick the requirement. One gap, clearance or overlap with a minimum and maximum, for example "gear axial float 0.05 to 0.60 mm".
  2. Draw the loop. Start at one face of the gap and walk through every part that touches, back to the other face. Each dimension you pass gets a sign: if making it longer opens the gap, if it closes the gap.
  3. Make every tolerance equal-bilateral. Convert each to a mean size and an equal ± tolerance (14 +0/−0.12 becomes 13.94 ± 0.06).
  4. Add them up by worst case (every part at its bad limit) and by RSS or Monte Carlo (the likely spread).
  5. Compare and fix. If the range breaks a limit, re-centre the nominal or tighten the tolerances that carry the most variation, not all of them.

The formulas, with nominal N, upper deviation U and lower deviation L for each dimension i (deviations signed, so +0/−0.12 is U = 0, L = −0.12):

Here is the capability assumed for every part process: means each tolerance is ±3σ wide, the classic RSS assumption. The predicted reject rate uses the normal distribution with that σ.

Worked example: axial float of a gear on a shaft

A gear and a 6204 ball bearing are clamped on a shaft between a shoulder and a circlip, with a spacer between them. The design needs 0.05 to 0.60 mm of axial float between the gear hub and the circlip: never zero (the parts would be loaded axially and could bind), and not so much that the gear walks. The calculator above starts with these numbers.

Gear, spacer and bearing on a shaft between a shoulder and a circlip, with the dimension loop A minus B, C, D, E giving the gapB bearingC spacerD gear hubEgap GA 43.50 ± 0.08 (opens)B 14 +0/−0.12C 10 ± 0.05D 18 ± 0.10E 1.2 +0/−0.06 · B–E close the gapnot to scale
The loop: A (shaft shoulder to the outer wall of the circlip groove) opens the gap; B, C, D and E close it. G = A − B − C − D − E.
Dim.PartDrawingSignMean± tWorst-case shareRSS share
AShaft: shoulder to circlip groove wall43.50 ± 0.08+43.5000.08025.0%27.4%
BBall bearing 6204 width14.00 0 / −0.12−13.9400.06018.7%15.4%
CSpacer length10.00 ± 0.05−10.0000.05015.6%10.7%
DGear hub width18.00 ± 0.10−18.0000.10031.2%42.7%
ECirclip thickness1.20 0 / −0.06−1.1700.0309.4%3.8%

Mean gap. The nominal sizes give 0.30 mm, but two parts have one-sided tolerances, so the mean gap is larger:

Worst case. Every part at its bad limit:

The gap runs from 0.07 to 0.71 mm. The minimum clears 0.05, but the maximum breaks the 0.60 limit by 0.11 mm. By worst case, this design fails.

RSS.

The ±3σ range is 0.237 to 0.543 mm, well inside both limits. With every part process at Cp 1.0, the gap has σ = 0.0510 mm, Cpk 1.37, and a predicted 19 ppm (about 1 in 52,432) outside the limits, nearly all on the high side.

Which tolerance matters? The gear hub, D, is the biggest single tolerance (±0.10), so it carries 43% of the RSS variance but only 31% of the worst-case sum. RSS squares the tolerances, so the largest one dominates, and tightening a small one (the circlip, 3.8%) achieves almost nothing.

Fixing it so worst case passes

The worst-case spread is 2 × 0.32 = 0.64 mm, but the requirement only allows 0.55 mm. No change of nominal can fit 0.64 into 0.55, so the tolerances must shrink by at least 0.045 mm in total (half-tolerances summing to 0.275 or less). Three options, each recomputed by the verifier script:

  • Re-centre only: shorten A to 43.44 mm so the mean gap sits mid-band (0.33). Worst case becomes 0.01 to 0.65: it now fails at both ends.
  • Tighten the gear hub only to ±0.05: worst case ±0.27, range 0.12 to 0.66. Narrow enough, but still off centre, so it fails high.
  • Both: A = 43.44 and hub ±0.05 gives 0.06 to 0.60 mm worst case, inside the limits, and an RSS range of 0.204 to 0.456 (Cpk 2.14).

Whether you need that extra machining cost depends on the next question.

Worst case or RSS: which should you use?

Worst case guarantees that every assembly fits if every part is in tolerance. RSS predicts the spread you will actually see when many parts are made by capable, centred processes, and lets you open up part tolerances. The gap between the two grows with the number of parts: with five equal tolerances, RSS is 45% of worst case; with ten, 32%.

  • Use worst case for two- or three-part chains (RSS saves little), safety or regulatory fits, low volumes, parts from uncontrolled sources, and anything where one bad assembly is unacceptable.
  • Use RSS or Monte Carlo for longer chains in volume production, when suppliers can show capability (Cpk of 1.33 or more is a common requirement) and an occasional reject at assembly is acceptable.
  • Report both. Many design reviews ask for the worst case and the statistical result side by side, as the calculator shows.

What RSS assumes, and what happens when it is wrong

RSS assumes each dimension is independent, normally distributed, centred on its mid-limit, and that its tolerance is ±3σ. Real processes break these. Tool wear drifts a machined length towards one limit; a supplier who sorts parts sends a flat (uniform) spread; a bearing maker may run close to one side. Two ways to stay honest:

  • Inflate the RSS. Bender (1962) proposed multiplying the RSS by 1.5 to allow for drift and non-normal parts. For the example: ±0.229 mm, a range of 0.16 to 0.62, which breaks the 0.60 limit again.
  • Simulate the distribution you expect. Switch the calculator's Monte Carlo to "Uniform": every part equally likely anywhere in its tolerance. Our verifier's 2,00,000-assembly run puts 0.56% of gears outside the limits, against 19 ppm for normal parts. The same drawing, roughly 296 times the rejects.

That is why RSS on a drawing should come with process data: either capability studies from the supplier or a Cp/Cpk requirement on the critical dimensions (often marked as key or critical characteristics).

How do you handle unequal tolerances in a stack-up?

Convert first, add second. The 6204 bearing width in the example is 14 mm +0/−0.12 (ISO 492 normal class allows the inner ring width to be up to 0.12 mm under size for bores over 18 up to 30 mm). As mean ± equal tolerance that is 13.94 ± 0.06. If you add the nominal 14.00 instead, the mean gap comes out at 0.30 instead of 0.39, and if you also use 0.12 as the ± value, the bearing's worst-case contribution doubles. The circlip (1.20 +0/−0.06) shifts the gap by another 0.03 mm the same way.

The same rule handles a dimension toleranced as limits (for example 9.95 to 10.05): mean 10.00, ± 0.05.

How do GD&T tolerances enter a 1-D stack-up?

Geometric tolerances add variation that a plus/minus stack can miss. Convert each one into an equal-bilateral contribution along the direction of the stack:

  • Position : the axis of the feature can move in any direction, so it adds ±t/2 to a stack that runs through that feature.
  • Profile of a surface applied equally around the true profile: a profile of 0.4 contributes ±0.2.
  • Flatness, parallelism, perpendicularity on a face that a stacked part sits on: include them when they can tilt or offset the contact along the stack direction.
  • Bonus tolerance (position at MMC): the feature gets more position tolerance as its size departs from MMC. A worst-case stack includes the full bonus at LMC; a statistical stack uses the size distribution you expect.

Keep size and geometric tolerances on separate rows in the calculator: they come from different processes, which is what makes them independent in an RSS.

Checking a textbook example

Many introductions use four dimensions in a chain: 11 ± 1, 10 ± 2, 6 ± 1 and 6 ± 1.5, adding to 33. Worst case: , so 33 ± 5.5. RSS: , so 33 ± 2.87. Type them into the calculator (all with a + sign) to check. The RSS figure is not "more exact" than the worst case: it is a prediction of the ±3σ spread, valid only under the assumptions above.

Learn tolerancing on real drawings

Skill-Lync's design courses teach GD&T, datums and virtual condition, the inputs to every stack-up, on industry drawings.

Frequently asked questions

What is tolerance stack-up analysis?

Tolerance stack-up analysis adds up the tolerances of the parts in an assembly to find how much a critical gap or fit can vary. You trace a loop of dimensions from one side of the gap to the other, then compute the extreme values (worst case) or the likely spread (RSS or Monte Carlo) and compare them with the requirement.

What is the difference between worst case and RSS?

Worst case adds every tolerance, so it assumes every part is at its limit in the bad direction at once: 100% of assemblies fit, at the cost of tight part tolerances. RSS adds tolerances as root-sum-square, assuming independent, centred, normally distributed parts. In this page's example it predicts a spread of ±0.153 mm against ±0.32 mm worst case.

When should I use worst case instead of RSS?

Use worst case for short chains (two or three parts), for safety-critical or low-volume assemblies, and when you cannot rely on the supplier's process being centred and capable. Use RSS or Monte Carlo for chains of four or more parts in volume production, with process capability data (Cpk) to back the assumption, and keep worst case as a cross-check.

How do you handle unequal tolerances such as +0 / −0.12?

Convert each dimension to its mean size and an equal ± tolerance before you add anything. A bearing width of 14 mm +0 / −0.12 becomes 13.94 ± 0.06 mm. Adding the nominal 14 with a ±0.12 tolerance, a common mistake, shifts the gap by 0.06 mm and doubles that part's contribution.

What does RSS assume?

RSS assumes the part dimensions are independent, roughly normal, centred on the middle of their tolerance, and that each tolerance equals plus or minus three standard deviations (Cp = 1.0). If parts are uniformly spread or their processes drift off centre, RSS is optimistic. Inflating it by 1.5 (Bender's method) or running a Monte Carlo covers that.

What is Monte Carlo tolerance analysis?

A Monte Carlo analysis builds thousands of virtual assemblies, drawing each part dimension at random from an assumed distribution (normal, uniform or skewed), and counts how many gaps fall outside the limits. It handles any distribution and non-linear stacks. The calculator above runs 100,000 assemblies in your browser in well under a second.

How do GD&T tolerances enter a 1-D stack-up?

Convert each geometric tolerance into an equal-bilateral contribution along the stack direction. A position tolerance of diameter 0.2 lets the feature axis move ±0.1 in any direction; a profile of 0.4 applied equally around the true profile contributes ±0.2. Bonus tolerance at MMC adds more variation, which you include only for the size range you expect.

Related on Skill-Lync

Sources

  • ISO 492, Rolling bearings — Radial bearings — Geometrical product specifications (GPS) and tolerance values: normal tolerance class, inner ring width deviation 0/−120 µm for 18 mm < d ≤ 30 mm (as listed in bearing makers' catalogues, e.g. SKF "Tolerances" tables).
  • A. Bender Jr., "Benderizing tolerances: a simple practical probability method of handling tolerances for limit stack-ups", Graphic Science, December 1962 (the 1.5 inflation factor for RSS).
  • ASME Y14.5-2018, Dimensioning and Tolerancing (position, profile and MMC bonus tolerance definitions).
  • Worked example and all its numbers: Skill-Lync, recomputed by scripts/verify/stackup.py (pure Python; Monte Carlo 2,00,000 assemblies, seed 20261116) and cross-checked against this page's calculator code at build time.
Design and manufacturing careers

Talk to a counsellor.

Stack-ups, GD&T and DFM come up in every design-engineer interview at automotive and product companies. We'll map the right program to the job you want.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.