What is a tolerance stack-up, and how should you use one?
Two methods are in ordinary use. Worst case adds the tolerances and asks whether the function survives even if every part is at its bad limit together. Root-sum-square combines them statistically and asks a milder question, which is only meaningful if the processes are capable, centred and independent. Every number below is hypothetical teaching maths. The fit limits are assumed for the exercise. They are not a BrahmWorks measurement, not a resin limit and not a process capability.
A device packed in a moulded pulp tray
What goes into the chain
Start from the function. Name the gap in one sentence, then list only the dimensions that move it. Each needs a nominal, a tolerance and a sign: does going larger open the gap or close it? A note that says "typical unless stated" is a stack with the numbers missing.
Name the gap in one sentence, then list only the dimensions that move it.
Datums are in the chain. If the housing is dimensioned from the outside and the lid from an inner lip, you just added both edges. One functional datum, shared in words on both drawings, shortens the chain. Position, profile and flatness belong in it when they move the function. A linear ± does not absorb a flatness error you forgot.
Worst case
For a gap that is A minus B minus C, the smallest gap is the smallest A minus the largest B minus the largest C. The largest gap is the largest A minus the smallest B minus the smallest C. You are not averaging. You are pairing the limits that hurt.
If every part meets its drawing, the gap stays inside that range only when the chain is complete. Warp, draft, shift, temperature and moisture are often missing, so the guarantee is only as good as the list. Passing by tightening every contributor buys capability you may not need. Move the nominal, or tighten the term that dominates, before you squeeze the small ones.
Root-sum-square, and when it lies
Root-sum-square takes each tolerance half-width, squares it, adds the squares, and takes the square root. Independent errors that are roughly centred tend to cancel. The combined half-width is smaller than the arithmetic sum, so the predicted gap looks safer.
The prediction assumes independent dimensions, each process centred on nominal, and well-behaved tails. It fails when one tool moves two dimensions together, when the press runs to one side to save a cosmetic face, or when you have no data because you have not moulded the part. Using it to accept a design that fails at the drawing limits is how a small batch will not assemble, with no single part out of spec.
Early on, put the nominal where worst case meets the function, or accept the residual risk with an owner. Use root-sum-square later to see which term dominates. Do not use it as permission.
Worked example: a latch gap
Invented latch, three contributors, one direction. The numbers are chosen so the arithmetic is easy. They are not a recommended gap for any resin.
Housing inner face, H = 20.00 ± 0.10 mm. Hook thickness, T = 1.50 ± 0.05 mm. Lid face to hook root, L = 18.20 ± 0.10 mm. Gap G = H − T − L.
Nominal G = 20.00 − 1.50 − 18.20 = 0.30 mm.
Worst-case minimum = 19.90 − 1.55 − 18.30 = 0.05 mm. Worst-case maximum = 20.10 − 1.45 − 18.10 = 0.55 mm.
Assume, for the exercise only, that the latch works between 0.15 mm and 0.65 mm. Below 0.15 it does not engage cleanly. Above 0.65 the hook does not hold. Those limits are not a test result.
Worst case then fails on the low side: 0.05 is under 0.15. The high side, 0.55, is inside 0.65.
Root-sum-square half-width = √(0.10² + 0.05² + 0.10²) = √0.0225 = 0.15 mm. Predicted gap = 0.30 ± 0.15, so 0.15 mm to 0.45 mm. That interval sits on the bottom of the assumed window and looks acceptable. It is the optimistic reading. The drawings still allow 0.05 mm. If you ship to the drawings, you will eventually build that unit.
Labelled calculation: move the nominal, do not tighten everything
Change only L, from 18.20 ± 0.10 to 18.10 ± 0.10. Tolerances are unchanged. New nominal G = 20.00 − 1.50 − 18.10 = 0.40 mm.
Worst-case minimum = 19.90 − 1.55 − 18.20 = 0.15 mm. Worst-case maximum = 20.10 − 1.45 − 18.00 = 0.65 mm.
The worst case now lands on both assumed limits. That is not a comfortable design. It is a design with zero room for anything the stack omitted: warp of the lid, draft you add later, a fillet that eats 0.05 mm, moisture growth if the resin moves. The honest conclusion is that the nominal is in the right place and the design is still fragile. Next moves, in order: include the omitted contributors with their own allowances, or open the functional window with a hook that tolerates more variation, or tighten only the largest contributors (H and L at ±0.10, not T at ±0.05) once a process can hold it. Tightening T first is the common mistake. It is the small term.
If you did tighten H and L to ±0.05 and left T at ±0.05, worst-case half-width would be 0.05 + 0.05 + 0.05 = 0.15 mm around 0.40, so 0.25 mm to 0.55 mm. That sits inside 0.15 to 0.65 with 0.10 mm of arithmetic margin. Whether ±0.05 is a fair moulding tolerance is a question for the moulder and the feature. This article does not claim it is.
Nothing in the sum is a capability study. √0.0225 is arithmetic, not evidence that your process is normal. The stack also says nothing about the strength of the hook. A gap can be in window on a hook that yields on the first assembly.
Once these limits are on a drawing another factory will build to, they belong in the release pack described in How to Take a Hardware Prototype to Production.
What people leave out of the chain
Draft moves a wall along its depth, so a stack from an undrafted print is a different part. Warp is not a bilateral tolerance until you measure it. Temperature and, for some resins, moisture change length after the bench check. A lid that can sit slightly off until the screws pull home is a contributor with a sign. Float in a slot saves the stack only if you meant it.
A moulder may also aim off the nominal to protect a cosmetic face. The statistical stack assumed they aim at the middle. Ask.
Checklist before you sign a fit
- The function is one sentence, with a numeric window and a unit.
- Every contributor has a nominal, a tolerance and a sign.
- Both drawings share the datum in words, not two convenient edges.
- Worst case is computed. If it fails, the failure is visible, not averaged away.
- Root-sum-square is used only with the assumptions stated, never as a silent pass.
- Draft, warp, temperature, moisture and assembly shift are in the chain or listed as omitted.
- The largest contributors are the ones you consider tightening.
- A nominal shift was tried before a tolerance squeeze.
- The window is a requirement, not a number copied from this article.
- Strength, wear and yield are separate from the geometric gap.
- The issue, the revision and the owner sit on the same note as the arithmetic.
Related questions
Should every dimension be in the stack?
No. Extra dimensions that do not move the function hide the ones that do. They also tempt you to tighten cosmetics because they are "in the stack". Keep the chain to the functional path. Review the other dimensions for manufacturability, not by adding them into this sum.
Is ±0.1 mm a normal plastic tolerance?
There is no normal that this article will bless. A short, well-supported feature and a long unsupported wall are not the same process. Ask the moulder what they will hold on the features that dominate your stack, at the resin and the tool you are actually buying. Then put those numbers in the sum and throw the generic band away.
Do machined parts need a different method?
The arithmetic is the same. The omissions change. A machined stack cares about setup, tool deflection and datum transfer between operations. It usually has less shrink and less warp than a moulding, and it can still fail worst case if you stack five operations onto one gap. Do not borrow a moulding tolerance onto a machined drawing, or the reverse, because the process changed.
What do you do when worst case fails and the tool is already cut?
Change the nominal if a metal-safe cut can do it, accept a screened assembly with a written limit and a gauge, or change the function. Screening without a gauge is a hope that the line will notice. A statistical argument without data from this tool is not a disposition. Measure a sample, put the observed centre and spread next to the drawing, and decide with those numbers labelled as that sample, not as a new law.
Review the stack with the drawings
Bring both drawings, the functional window and the list of effects you suspect you omitted. BrahmWorks can check whether the chain matches the function, and whether the fix is a nominal, a datum or a tolerance you do not need.
