It is almost always the same post-mortem. The button binds and won’t spring back. The clamshell seam gaps on one corner. The lid snaps shut on the bench but not over the PCB once the connectors are populated. Each part measured in-spec, every drawing was signed off, and yet the assembly fights you — because nobody added the tolerances up, and a stack of individually-fine numbers quietly summed into an interference.

What a tolerance stack-up actually is
A stack-up is a chain of dimensions whose tolerances accumulate into one gap or fit you care about. Pick the thing that must work — the air gap behind a button, the clearance between a lid rib and a PCB, the engagement of a snap — and trace the dimensions that set it, link by link, from one side of the joint to the other. Every link has a nominal value and a tolerance. The nominals add up to your nominal gap. The tolerances add up to how far that gap can wander, and that wander is the whole game.
The discipline is mechanical: walk a loop from a fixed reference, through each contributing surface, back to the feature you are measuring. Add a dimension when the loop moves toward the target, subtract when it moves away. If your loop doesn’t close on paper — if you can’t write the gap as a sum and difference of real, toleranced dimensions — you don’t yet understand the assembly, and the molds don’t care how confident you feel. Get the chain written down first. The arithmetic afterward is the easy part.
Worst-case analysis: the guarantee you pay for
Worst-case is the pessimist’s method, and it is exactly one line: add the magnitudes of all the ± tolerances in the chain. If five dimensions each carry ±0.1 mm, the gap can drift by ±0.5 mm, full stop. You are assuming every part conspires to its worst extreme simultaneously — every link long when you need it short.
The payoff is a hard promise: if the worst-case gap still assembles, 100 % of parts assemble, including the ones built on a bad day from a tired tool. That is why safety-critical and zero-rework features — a battery contact that must never short, a sealing face, a mechanism that can’t be hand-fitted on the line — get worst-cased without apology. The cost is that the method is brutally conservative for long chains, and the only way to make a worst-case sum fit is to tighten the individual tolerances. Tight tolerances on molded parts mean slower cycles, side actions, fussier tools, and higher scrap. Worst-case is honest, and honesty here is expensive.
Statistical / RSS: betting on the bell curve
Worst-case assumes the impossible: that independent parts all hit their extremes at the same instant. In reality each dimension has its own distribution, most parts cluster near nominal, and the extremes rarely line up. Root-sum-square (RSS) prices that in — you square each tolerance, sum the squares, and take the root:
TRSS = √(Σ ti2)
Because squaring punishes the big contributors and forgives the small ones, RSS is always tighter than the arithmetic sum, and the gap between the two widens as the chain gets longer. RSS is the right tool when many parts combine, each tolerance is roughly the same order of magnitude, and the distributions are approximately normal, independent, and centered. It is the wrong tool when you have two or three links (too few to average out), when one part dominates the chain, or when a process runs against a hard limit and piles up on one side — a mold that’s tuned to the low edge of a dimension is not a centered bell curve, and RSS will lie to you in exactly the optimistic direction that hurts.

Datums and the datum reference frame
A tolerance is meaningless until you say from where. The datum reference frame is the set of references — primary, secondary, tertiary — that everything in the chain is measured from, and it is where stack-ups quietly go wrong. Dimension a boss from the left wall on the drawing while the assembly actually locates off the right wall, and the part’s own width tolerance is now injected straight into your gap as pure datum drift. You measured a real, in-tolerance part; you just measured it from the wrong place.
Two rules keep you honest. First, measure from the same references the assembly uses to locate. If two halves register on a pair of pins and matching bosses, your chain starts at those pins — not at a convenient edge that happens to be easy to touch with calipers. Second, keep the datums consistent down the chain; every time you re-reference to a new surface, you import that surface’s tolerance and its form error. A chain of three dimensions off one good datum almost always beats three dimensions daisy-chained feature-to-feature, where the errors compound link by link and the part “grows” in ways no single dimension predicts.
Molded versus machined: know your real numbers
The single most common stack-up error is borrowing tolerances from the wrong process. CNC-machined metal holds roughly ±0.025 mm on ordinary features without drama. Injection-molded plastic does not come close: plan for about ±0.1 to ±0.2 mm on a typical dimension, looser across the parting line, looser still on long spans, and looser again for high-shrink or fiber-filled resins. If you sketch a chain assuming machined precision and then mold the parts, every link is two to eight times wider than your math, and the gap you carefully sized to 0.3 mm was fiction.
Molding also adds error sources that don’t exist in a milled block. Shrinkage — commonly 0.4–0.6 % for ABS or PC, well over 1 % for semi-crystalline resins like POM or nylon — scales with the dimension, so a long wall moves far more than a short boss, and it pulls in differently along and across the flow. Warp bows and twists the part after ejection, so a flatness or a parallelism error rides on top of every point-to-point dimension you measure. Both belong in the budget, not in the footnotes. A flat-looking lid that bows 0.3 mm across its length will close on the bench and gap in the field, and no point dimension on the drawing ever told you so.
A fully worked example
Five stacked parts — say a lid, a gasket carrier, a PCB standoff, a boss, and a base — each contributing a dimension toleranced at ±0.1 mm. The design intent is a 0.30 mm nominal clearance between the closed lid and the top of the tallest component. The question is the only one that matters: does it still close at the extremes?
Worst-case: arithmetic sum of the magnitudes.
- TWC = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 = ±0.50 mm
- Tightest gap = 0.30 − 0.50 = −0.20 mm
Negative clearance is interference. In the worst-case world, this assembly does not close — the lid lands on the component 0.20 mm early, the technician leans on it, the snaps creak, and somebody files a quality issue. Every part was in spec.
RSS: root-sum-square of the same five tolerances.
- TRSS = √(0.12 + 0.12 + 0.12 + 0.12 + 0.12) = √(5 × 0.01) = √0.05 ≈ ±0.224 mm
- Tightest gap = 0.30 − 0.224 = +0.076 mm
Statistically, the clearance survives — barely. Roughly 0.076 mm of air, about three sheets of office paper, on the worst statistical build. So which number do you design to?
The decision. Worst-case says redesign or tighten; RSS says ship it, but it’s tight. If these are five molded parts on real distributions and the consequence of an occasional rub is cosmetic, RSS is a defensible bet — but +0.076 mm is not a margin you celebrate, because it assumes centered, normal, independent processes and the first time a tool runs to one edge, that cushion evaporates. The cheaper, smarter move is usually allocation rather than blanket tightening. Open the gap to a 0.45 mm nominal if the industrial design tolerates it, or tighten the one or two dominant links and leave the rest loose. Suppose you can hold the standoff and the boss — the two easy ones — to ±0.05 mm and leave the other three at ±0.1 mm:
- TRSS = √(0.052 + 0.052 + 0.12 + 0.12 + 0.12) = √0.035 ≈ ±0.187 mm, gap → +0.113 mm
You bought 50 % more clearance by tightening two forgiving features instead of all five. That is the entire point of doing the math: it tells you which tolerance to spend money on, not just that you have a problem.
Tolerance allocation: spend where it’s cheap
Allocation is the design move that follows the analysis. Total budget is fixed by the gap; your job is to distribute it intelligently. Hand the loose tolerance to the feature that is cheap or forgiving to hold — a generous on a non-mating wall, a thick rib, a dimension that runs with the flow direction — and spend your tight tolerance only on the link the gap genuinely depends on. Tightening everything uniformly is the lazy, expensive answer: you pay for precision on features that never touch anything. The competent answer is lopsided on purpose — one or two features held close, everything else relaxed — and it ships at lower cost with more margin than the part where every dimension wears the same tolerance out of habit.
Process capability: “in tolerance” is not one number
RSS quietly assumes your processes are capable and centered, and that assumption deserves a name: Cpk. It measures how comfortably a process fits inside the tolerance band, counting from whichever limit the process sits closest to. A capable process keeps roughly six standard deviations between its limits, so for a ±0.1 mm feature the math runs like this:
- Cpk = 1.00 → σ ≈ 0.033 mm — marginal, about 2700 ppm outside, edges scraping the limits
- Cpk = 1.33 → σ ≈ 0.025 mm — the usual production target, comfortably inside
- Cpk = 1.67 → σ ≈ 0.020 mm — tight, the band to spec when failure isn’t an option
Two suppliers can both certify a part “in tolerance” while behaving nothing alike. One running Cpk 1.33 hugs nominal and feeds RSS the centered bell it expects. One running Cpk 1.0, shifted to one edge, puts a fat tail right against the limit — and your RSS gap, which assumed centered normals, no longer holds. “In tolerance” on a capable, centered process is a different animal from “in tolerance” on a marginal one, and only the former earns the statistical discount. If you can’t get capability data, don’t spend the RSS savings.
Choosing the method: part count and consequence
Two questions decide it. How many links? Two or three, use worst-case — there’s nothing to average and RSS just flatters you. Six or more roughly-equal contributors, RSS starts earning its keep. What happens if a part lands at the edge? If the failure is safety, a hard short, a non-reworkable seal, or a recall, worst-case it regardless of count — the conservatism is cheap insurance. If the worst outcome is a slightly tight fit on a fraction of units and you have capability data to back the distributions, RSS lets you avoid over-paying for tolerances you statistically never need. Many real designs split the difference: worst-case the one or two features that must never fail, RSS the rest of the chain.
Common mistakes and failure modes
- Never doing the stack-up. The headline failure. Each part passes inspection, the assembly fights you, and the chain finally gets added up after the tools are cut. Do it on paper while changes are still free.
- Worst-casing everything. Safe, but you over-tighten features that never mate and pay in cycle time and scrap for clearance no customer will ever consume.
- Trusting RSS with too few parts or non-normal data. RSS on a two-link chain, or on a process pinned to one edge of its tolerance, manufactures margin that does not exist.
- Ignoring datum drift. Measuring from a convenient edge instead of the surfaces the assembly locates on injects a part’s own tolerance straight into the gap.
- Tightening the wrong feature. Spending precision on a small or non-dominant link while the contributor that actually moves the gap stays loose. Find the dominant term first.
- Forgetting molded shrink and warp. Budgeting machined tolerances for molded parts, and treating a bowed wall as if it were a clean point-to-point dimension. Both eat your gap before assembly even starts.
Quick reference
| Method | When to use | Formula | Trade-off |
|---|---|---|---|
| Worst-case | Few links (≤3); safety / zero-rework / no hand-fit features | T = Σ|ti| | Guarantees 100 % assemble; conservative and expensive to hold |
| RSS (statistical) | Many links (≥6), similar magnitudes, normal & independent, capable processes | T = √(Σ ti2) | Looser, cheaper; a small fraction may fall outside if assumptions break |
| Allocation | After analysis, when the budget is tight | Spend tight tol on dominant link, loose on the rest | Lowest cost for the margin; needs you to know the dominant contributor |
| Cpk check | Before trusting any RSS number | Cpk ≥ 1.33 target | Validates “in tolerance” is centered & capable, not edge-pinned |
Before you release the drawings, run the loop once: write the chain from the real datums, sum it worst-case, then RSS it, identify the dominant link, confirm your tolerances match the actual process (machined or molded, shrink and warp included), and check that the supplier can hold what your math assumes. Fifteen minutes here is the cheapest insurance in the whole program.
Every dimension in a chain carries a tolerance, and they add up whether or not you do — worst-case when failure isn’t allowed, RSS when the numbers and the process earn it, and always spend your tight tolerance on the one link that actually sets the gap.