Tolerance stack-up in CNC machining: why parts that pass inspection still fail at assembly
- Tolerance stack-up is the cumulative effect of every individual part tolerance along a dimension chain in an assembly.
- Every part can be in tolerance and the assembly can still be out of specification, because the deviations add in the same direction.
- Worst-case addition sums all deviations and is the safe basis for a guarantee; root-sum-square combines them statistically and gives a narrower predicted range, which is defensible only at higher volumes.
- In a machine shop the largest single contributor is usually the number of set-ups a part needs, not the tolerance written on the drawing.
- The fix is cheap before production and expensive after it: review the closing dimension, the datums and the set-up count while the drawing is still a drawing.
What tolerance stack-up is
Tolerance stack-up is the accumulated effect of individual part tolerances on a dimension that is not directly specified on any single drawing. It is the difference between controlling parts and controlling an assembly.
Every dimensioned feature carries a tolerance. When parts are assembled, the dimensions that govern fit form a chain, and the variations along that chain add up. The dimension at the end of the chain — called the closing dimension — has no tolerance of its own printed anywhere. It is the arithmetic consequence of everything before it. A gap, an interference, a shaft sitting too deep in a bore, a panel that will not sit flush: these are closing dimensions, and they are where tolerance problems become visible.
The important consequence is counter-intuitive. A stack can fail even when 100% of parts pass 100% inspection. Each part sits inside its own tolerance band, but nothing constrains all of them to sit in the middle of it. If three parts each land at the far edge of their bands in the same direction, the assembly fails with no non-conforming part anywhere in the batch.
A worked example
Three parts stack between a housing face and a shaft shoulder, with a nominal total length of 20.00 mm.
| Component | Nominal | Tolerance | Minimum | Maximum |
|---|---|---|---|---|
| A | 10.00 mm | ±0.05 | 9.95 | 10.05 |
| B | 6.00 mm | ±0.03 | 5.97 | 6.03 |
| C | 4.00 mm | ±0.02 | 3.98 | 4.02 |
| Worst-case total | 20.00 mm | ±0.10 | 19.90 | 20.10 |
| Root-sum-square total | 20.00 mm | ±0.062 | 19.938 | 20.062 |
Worst case = 0.05 + 0.03 + 0.02 = ±0.10 mm
Root-sum-square = √(0.05² + 0.03² + 0.02²) = √0.0038 = ±0.0616 mm
Now suppose the assembly requires the total to be 20.00 ±0.08 mm. Worst-case addition gives ±0.10 mm, which fails the requirement. Root-sum-square gives ±0.062 mm, which passes it. The same three parts, the same tolerances, two opposite answers — and the choice between them is a decision about risk, not about mathematics.
Worst case or root-sum-square?
| Method | What it assumes | Use it when | Risk |
|---|---|---|---|
| Worst-case addition | Every part sits at the extreme edge of its tolerance, all in the same direction | Safety-critical function, low volume, a guarantee must hold, or the assembly cannot be adjusted | Over-tightens tolerances and raises cost; the assumption is statistically very unlikely |
| Root-sum-square (RSS) | Deviations are independent and roughly normally distributed around nominal | Higher volumes with a stable process, where a known small failure rate is acceptable | A process that is centred off nominal, or a skewed distribution, quietly breaks the assumption |
| Monte Carlo simulation | Explicit distributions per contributor, sampled many times | Mixed processes, asymmetric tolerances, or where the cost of being wrong is high | Needs real data on distributions; garbage in, confident garbage out |
RSS is not a licence to loosen everything. It assumes each contributor's distribution is centred and independent. If a machine is set up to run consistently toward one edge of a band — which happens when an operator trims a dimension to stay safe on the other side — the distribution is no longer centred, and the RSS prediction is optimistic. With three contributors, as in the example above, the statistical argument is weak in any case, because there is not yet a distribution worth the name.
Where accumulated error actually comes from
On a drawing, tolerances look like machine accuracy. In a shop, most of the stack comes from four other places.
- Set-up count. Every time a part is re-fixtured, a new datum is established and its own positional error enters the chain. A feature cut in a second operation is no longer positioned by the machine's accuracy; it is positioned by the machine's accuracy plus how accurately the part was located the second time. This is usually the largest single contributor, and it is the one most easily removed by choosing a 4-axis or turn-mill route.
- Datum changes. If a drawing dimensions one feature from datum A and another from datum B, the distance between A and B is now part of both chains. Reducing a part to a single primary datum, with everything else referenced from it, removes that shared error.
- Fixturing and clamping. A part clamped hard enough to hold it rigidly may deform, springing back to a different dimension once released. In thin-wall parts this can exceed the machining tolerance itself.
- Thermal effects. Aluminium expands by roughly 23 µm per metre per degree Celsius. A 200 mm aluminium part measured at 30 °C rather than 20 °C is about 46 µm longer. On a ±0.02 mm dimension, the measurement environment matters as much as the machine.
- Tool wear and finishing operations. A finishing pass removes an indeterminate amount of material, and tool wear drifts across a production run. Both are managed by in-process measurement, but they are real contributors to a stack.
Five rules for reviewing a stack before production
1. Identify the closing dimension first
Before checking any individual tolerance, write down what has to be true for the assembly to work: a gap range, a flush condition, an interference, a functional clearance. If nobody can state the closing dimension and its allowable range, there is nothing to review against, and the drawing will be quoted on individual tolerances alone.
2. Draw the chain explicitly
List every dimension from one end of the chain to the other, including the ones that look unimportant. A washer thickness of 0.5 ±0.1 mm contributes more to a stack than a machined face at ±0.02 mm, and it is usually the dimension nobody checked.
3. Count the set-ups before tightening any tolerance
Ask how many times the part is re-fixtured, and which datum each feature is referenced from. If a critical feature needs a second set-up, moving it to a 4-axis machine often improves the achievable result more than halving its tolerance does — at lower cost, because a looser tolerance on a better-controlled route machines faster.
4. Allocate tolerance by control cost, not evenly
If the closing dimension must come down, spend the tightening where it is cheapest to control. Grinding a bore to ±0.005 mm may be routine, while holding ±0.005 mm on a long milled face may need a slower operation, extra passes and a temperature-controlled inspection. In the example above, if worst-case compliance is mandatory, allocation might look like this:
| Component | Original | Reallocated | Control method | Relative cost |
|---|---|---|---|---|
| A | ±0.05 | ±0.040 | Standard milling | Unchanged |
| B | ±0.03 | ±0.025 | Turning, single set-up | Low increase |
| C | ±0.02 | ±0.015 | Grinding after machining | Grinding operation added |
| Total worst case | ±0.10 | ±0.080 | — | — |
The requirement is met by removing 0.02 mm from the total, split so that most of it comes out of the two components where tighter control is nearly free, and the smallest share from the component where it requires a new operation.
5. Design an adjustment in rather than tolerancing a problem out
A shim, a slotted hole, a threaded adjuster or a dowel position set at assembly absorbs stack variation for a fraction of what tightening three tolerances costs. If a stack is genuinely marginal and the components are already tight, adding one degree of adjustment is usually the cheapest engineering change available.
What to send with the drawing
- The closing dimension and its allowable range, stated as a functional requirement rather than a nominal.
- Which dimensions are critical and which are reference.
- The assembly drawing or a sketch of the stack, so the chain can be checked rather than assumed.
- The datums that the design intends, including whether the part is located from a face, a bore or a pair of holes.
- Any interchangeability requirement — for example, whether a part from one supplier must fit a part from another.
With those five items, the process route, the set-up count and the inspection method can be planned together, and the achievable tolerance per feature can be confirmed before production rather than reported after it.
Questions about tolerance stack-up
Can every part be in tolerance and the assembly still fail?
Yes, and it is common. Individual tolerances only constrain each part to its own band; they do not constrain all parts to the same part of it. Three parts each at the far edge of their bands, in the same direction, produce an assembly outside specification with no defect anywhere in the batch.
Should I use worst-case or root-sum-square?
Use worst-case when the function is safety-critical, the volume is low, or the assembly cannot be adjusted — it is the only method that supports an unconditional guarantee. Use RSS at higher volumes with a stable, centred process where a small known failure rate is acceptable. With only three or four contributors, RSS has weak statistical justification, so treat it as an engineering judgement rather than a calculation.
Is the machine or the tolerance the problem?
Usually neither. On most parts the largest contributor is the number of set-ups, because each re-fixturing adds a locating error to the chain. Reducing set-ups by moving to a 4-axis or turn-mill route often improves the result more than tightening the tolerance, and costs less because a looser tolerance machines faster.
Does temperature matter at these tolerances?
Yes, above roughly 100 mm. Aluminium expands about 23 µm per metre per °C, so a 200 mm part measured 10 °C above the reference temperature is about 46 µm longer than nominal. On tolerances of ±0.02 mm or tighter, the measurement temperature and the agreed reference temperature belong on the drawing.
Can stack-up be fixed after the parts are made?
Sometimes, by selecting and matching parts, reworking one component, or introducing an adjustment at assembly. All three cost more than solving it on the drawing, and matching parts is only viable at low volume because it consumes inventory. Raise the closing dimension at quotation, not at assembly.
Cite this page
Boyang Hardware. "Tolerance Stack-Up in CNC Machining: Why Parts That Pass Inspection Still Fail at Assembly." www.bycncmachining.com, published 17 September 2026, updated 17 September 2026.
This page is dated and versioned so it can be quoted with a reliable source date. If you cite a figure from it, cite the revision date above — the numbers are reviewed when the page is updated.
Related pages
Have a stack you want checked?
Send the assembly requirement and the drawing. The closing dimension, the set-up count and the achievable tolerance per feature come back with the quotation.