Tolerance Stack-Up Calculator (Worst Case, RSS, Monte Carlo)

Enter each dimension in a one-dimensional loop with its nominal, tolerance and direction. The calculator returns the nominal gap, the worst case limits, the RSS limits and a seeded Monte Carlo distribution with yield against an optional target. Values are in millimetres by default, with an inch toggle. The stack is stored in the page URL so it can be shared, exported as CSV or printed as a report.

Length unit
Stack contributors, lengths in mm
#NameSignNominal (mm)+Tol or zone (mm)-Tol (mm)GD&TBonus (mm)DistributionkRow actions
1
n/a
2
n/a
3
n/a

Results

Worst case

Nominal gap
10.000 mm
Min
9.800 mm
Max
10.200 mm
Half width
± 0.200 mm

RSS

Min
9.878 mm
Max
10.122 mm
Half width
± 0.122 mm
Sigma
0.041 mm

Bender factor 1.0

Monte Carlo

Mean
10.000 mm
Sigma
0.041 mm
P0.135
9.877 mm
P50
10.000 mm
P99.865
10.127 mm
Sample min / max
9.847 / 10.165

20,000 samples

Monte Carlo histogram

9.840 mmGap distribution, line is the RSS normal curve10.171 mm

Loop diagram

Dim 1 (+25.000)Dim 2 (-10.000)Dim 3 (-5.000)Gap (10.000)
Loop diagram in mm. Blue bars are positive contributors, orange are negative; each starts where the previous one ends. The green bar is the nominal gap.

Method

Equal-bilateral conversion. Each contributor is first converted to a mean and an equal-bilateral half width. For a plus/minus tolerance, mean = nominal + (plus - minus) / 2 and half width = (plus + minus) / 2, so 10 +0.2/-0.1 becomes 10.05 ± 0.15. A GD&T position tolerance of zone T with bonus B at MMC becomes nominal ± (T + B) / 2; a profile tolerance of zone T becomes nominal ± T / 2 (Fischer 2011, ASME Y14.5-2018).

Worst case. The nominal gap is the signed sum of the contributor means, with positive contributors in the loop direction and negative ones against it. The worst case half width is the plain sum of all half widths, and the limits are the nominal gap minus and plus that sum. Every part at its limit at the same time is assumed, so the result is conservative.

Root sum square (RSS). The RSS half width is the square root of the sum of the squared half widths, multiplied by the Bender factor. A factor of 1.0 gives the textbook RSS; 1.5 is the inflation Bender proposed to cover mean shifts and non-normal processes seen in production (Bender 1962). The reported sigma is the root sum square of the contributor sigmas.

Monte Carlo. Each sample draws every contributor from its distribution and adds the draws with their signs. A normal contributor has sigma = half width / k, where k is the sigma multiplier (default 3, so the tolerance equals 3 sigma). A uniform contributor is drawn evenly across its full tolerance, with sigma = half width / √3. The generator is seeded (mulberry32, Box-Muller), so the same inputs and seed always give the same result. Percentiles use linear interpolation on the sorted samples (Creveling 1997).

Assumptions

  • The stack is one-dimensional and linear: every contributor adds or subtracts directly along one axis, with a sensitivity of +1 or -1.
  • Contributors are statistically independent.
  • A normal tolerance equals k sigma of the process, with k = 3 by default.
  • GD&T position and profile tolerances are converted to equal-bilateral values on the nominal. Datum shift, datum simulation and form variation are not modelled.
  • No thermal expansion, deflection under load or assembly shift is included.
  • All lengths in one stack use one unit.

Standards and references

StandardNote
ASME Y14.5-2018, Dimensioning and TolerancingGD&T terms, position and profile zones, bonus tolerance at MMC.
Bender, A., SAE Paper 620206, 1962Statistical tolerancing for the designer; source of the 1.5 RSS inflation factor.
Fischer, B. R., Mechanical Tolerance Stackup and Analysis, 2nd ed., CRC Press, 2011Loop diagram, sign convention, equal-bilateral conversion, worst case and RSS method.
Creveling, C. M., Tolerance Design, Addison-Wesley, 1997Statistical tolerancing and Monte Carlo simulation of assemblies.

Worked example: three-part linear stack

A 25 ± 0.1 mm housing bore contains a 10 ± 0.05 mm spacer and a 5 ± 0.05 mm bush. The gap is 25 - 10 - 5. All three are normal with k = 3, Bender factor 1.0. This is the default stack loaded in the calculator.

ResultValue
Nominal gap10.000 mm
Worst case9.800 to 10.200 mm (± 0.200)
RSS9.878 to 10.122 mm (± 0.122), sigma 0.041 mm
Monte Carlo, seed 1, 20,000 samplesmean 10.000 mm, sigma 0.041 mm

Frequently asked questions

When should I use RSS instead of worst case?

Use worst case when every assembly must fit, the part count is small, or failure is safety critical. Use RSS when there are several independent contributors from capable processes and a small reject rate is acceptable. RSS gives a tighter band because all parts rarely sit at their limits together.

What is the Bender factor?

It is a multiplier on the RSS half width. Bender (SAE 620206, 1962) proposed 1.5 to allow for process mean shifts and distributions that are not centred normals. Use 1.0 for textbook RSS and 1.5 for a more conservative statistical result.

How is bonus tolerance at MMC applied?

For a position tolerance, set the zone T and the bonus you expect from the feature departing from MMC. The contributor becomes nominal ± (T + bonus) / 2. For example T 0.2 mm with 0.1 mm bonus gives ± 0.15 mm. Bonus is only offered for position.

Why does the Monte Carlo sigma differ slightly from the RSS sigma?

Monte Carlo estimates sigma from a finite random sample, so it carries sampling error of roughly 1 percent at 20,000 samples. The default stack gives 0.041 mm from both methods. Larger sample counts reduce the difference; a different seed gives a slightly different estimate.

Can I mix millimetres and inches in one stack?

No. One stack uses one unit. The toggle converts every displayed value between mm and inches; the calculation itself is the same.

How do I share or save a stack?

The whole stack is encoded in the page URL after #s=. Use Copy link and send the address; opening it restores every row and setting. Export CSV saves the contributor table and Download report prints the inputs, results and method.

What sign should each contributor have?

Draw the loop from one side of the gap to the other. Dimensions that go in the positive direction are +, those that come back are -. The nominal gap is the signed sum.