Tolerance stack-up in 3D printing is the accumulation of individual part tolerances across a chain of mating features, and the reason a two-part assembly that looks perfect in CAD can bind, rattle, or refuse to close on the bench. A single part printed to ±0.2mm is fine on its own; put four of those tolerances in series across a lid, a boss, a pin and a bore, and the worst-case gap can swing by 0.8mm — more than enough to turn a slip-fit into an interference fit. At Layer X, most assembly failures we see are not single-part accuracy problems at all. They are stack-up problems that were never budgeted for. This guide goes beyond single-part tolerance tables and shows how to allocate clearance across the whole assembly so it works on the first build.
Why single-part tolerance guides are not enough
Most tolerance advice stops at one number per process — useful for a bracket, useless for a snap-fit enclosure. The moment two printed parts have to mate, the relevant question is no longer "how accurate is this part?" but "how far can the gap between these two features move once both parts are at their tolerance limits?" That is a statistical and geometric question, governed by the same principles engineers apply to machined and moulded assemblies. The international reference here is ISO 286, the system of limits and fits that defines clearance, transition and interference fits — and its logic applies to printed parts just as it does to turned shafts and reamed bores. ISO 2768 (general tolerances for linear and angular dimensions) is the second document worth having open, because it frames how unspecified dimensions default in a drawing.
The trap in additive manufacturing is that each process carries a different tolerance band, and assemblies increasingly mix them. A carbon-filled SLS housing bolted to a DMLS metal mounting plate stacks two very different accuracy budgets in the same chain. You cannot allocate clearance sensibly until you know the true, per-process number for every part in the stack.
The per-process tolerances you are actually stacking
Every number below is what we hold in production at our Ahmedabad facility — not a marketing best case. These are the inputs to any stack-up calculation.
| Process | Standard tolerance | Best achievable | Notes for stack-up |
|---|---|---|---|
| DMLS metal | ±0.1mm | Below ±0.05mm (post-machined) | Critical mating faces can be finish-machined out of the stack entirely |
| SLA resin | ±0.1mm | ±0.05mm (professional grades) | 25µm layers; best where fine locating features matter |
| SLS nylon (PA12) | ±0.2mm | ±0.2mm | No supports, isotropic — but thermal shrink drives the band |
| FDM polymer | ±0.3mm | ±0.2mm (process-qualified) | Widest band; the dominant term in any mixed stack |
Two things follow immediately. First, the loosest process in the chain sets the tone: an FDM lid on an SLA base inherits the FDM ±0.3mm, not the SLA ±0.05mm. Second, our overall studio capability of ±50µm is a per-feature figure on qualified geometry — it is the floor, not the number you plan an assembly around. Plan around the process tolerance of the parts you are actually printing.
Worst-case versus statistical (RSS) stack-up
There are two ways to add tolerances across a chain, and choosing the wrong one either wastes material or ships a part that binds.
- Worst-case (arithmetic) stack: add every tolerance in the chain at its extreme. Four PA12 features at ±0.2mm give a worst-case variation of ±0.8mm. This is the conservative, guaranteed-fit method — use it for safety-critical or single-shot assemblies where a rebuild is expensive.
- Statistical (Root-Sum-Square, RSS): add the tolerances in quadrature — the square root of the sum of the squares. The same four ±0.2mm features give √(4 × 0.2²) = ±0.4mm. RSS assumes it is statistically unlikely that every feature hits its limit in the same direction at once, which holds well for batch production.
The gap between ±0.8mm worst-case and ±0.4mm RSS is the clearance budget you are arguing over. For a one-off functional prototype, we design to worst-case so it fits on the first try. For a 250-off batch of enclosures, RSS is realistic and stops you over-loosening every joint. The published guidance behind RSS is standard GD&T practice under ASME Y14.5, which every design engineer specifying printed assemblies should treat as the common language for the drawing.
Allocating clearance: a worked example
Take a common job: a PA12 SLS housing with a cylindrical boss that locates into a bore in a mating PA12 lid, printed on our SLS nylon 3D printing line. Both features carry ±0.2mm.
- Nominal fit: you want a slip fit — say 0.15mm nominal clearance between boss OD and bore ID.
- Stack the tolerances: boss OD can grow +0.2mm and bore ID can shrink −0.2mm. Worst-case, the clearance closes by 0.4mm.
- Check for interference: 0.15mm nominal minus 0.4mm worst-case swing = −0.25mm. That is an interference fit — the parts will not assemble. The design fails on paper.
- Re-allocate: open the nominal clearance to 0.5mm. Worst-case now leaves 0.5 − 0.4 = 0.1mm clearance at the tight extreme, and 0.9mm at the loose extreme.
- Decide if 0.9mm is acceptable for location. If the loose extreme rattles too much, tighten the process (move one part to SLA at ±0.05mm) rather than the nominal.
This is the core discipline: you size the nominal clearance to survive the stack, then decide whether the loosest resulting fit is still functional. Designers who skip step 3 are the ones who email us asking why a "0.1mm clearance" boss will not go in.
Rules of thumb for printed assembly clearances
Once you have run the stack a few times, these starting clearances (per side, before stack correction) save iterations. Always verify against your own tolerance chain — these are inputs, not answers.
| Fit type | SLS PA12 (±0.2mm parts) | SLA resin (±0.05mm parts) | When to use |
|---|---|---|---|
| Free-running clearance | 0.4–0.5mm | 0.15–0.2mm | Lids, covers, non-locating joints |
| Close sliding / locating | 0.3mm | 0.1mm | Bosses, dowels, alignment pins |
| Snap-fit engagement | 0.3–0.4mm deflection gap | 0.1–0.15mm | Living hinges, cantilever clips |
| Press / interference | −0.1 to −0.2mm | −0.05mm | Permanent inserts, bearing seats |
Notice the SLA column is roughly a quarter of the SLS column — a direct consequence of the tighter tolerance band. If your assembly cannot tolerate the wider SLS clearances, that is a signal to move the precision-critical part to SLA resin and keep the structural body in nylon.
Anisotropy, shrinkage and build orientation
A stack-up number assumes the tolerance is the same in every direction. In additive manufacturing it usually is not. FDM parts are weaker and slightly less accurate in Z than in the XY plane; SLS parts shrink as the powder cake cools, and features far from the build-plate centre can drift differently to features near it. Two practical consequences for assemblies:
- Orient mating features in the same plane. If a boss and its bore both lie in XY on their respective parts, they share the same accuracy regime and the stack tightens. Split them across XY and Z and you add an anisotropy term to the chain.
- Nest mating parts in the same build where volume allows. Parts printed in one build share the same thermal history, so their shrinkage correlates — the RSS assumption of independence becomes conservative in your favour.
SLS is the friendliest process here because it prints without supports and gives isotropic strength, so orientation is driven by accuracy and packing rather than support access. This is one reason we route functional multi-part assemblies to SLS nylon by default. For the underlying single-part accuracy behaviour, our guide to 3D printing tolerances and dimensional accuracy covers how each process arrives at its band.
How Layer X designs the stack out before printing
We treat tolerance stack-up as a design-review step, not a post-mortem. Before a multi-part job goes to the machine, we run the critical dimension chain, flag any fit that fails worst-case, and either re-allocate clearance or recommend moving one part to a tighter process. That discipline is a large part of why our first-pass yield sits at 99.4% across 2,000-plus parts shipped — assemblies that are designed to survive their own stack-up rarely come back. Where a fit genuinely cannot be opened up, we post-machine DMLS mating faces or specify SLA for the locating part, pulling that feature's tolerance out of the chain. Our full production discipline runs under ISO 9001:2015, with AS9100 Rev D and ISO 13485:2016 for aerospace and medical assemblies where the stack is not allowed to fail.
For teams tuning existing parts, our note on how to improve 3D print dimensional accuracy pairs well with this one — tighten the single-part band first, then the stack has less to absorb.
The takeaway
Assemblies do not fail because a printer missed a dimension by 0.2mm. They fail because four correct 0.2mm tolerances were allowed to accumulate into a 0.8mm swing that nobody budgeted a clearance for. Pick worst-case for one-offs and RSS for batches, size your nominal clearance to survive the stack rather than the single feature, keep mating features in the same plane, and move the precision-critical part to a tighter process instead of squeezing an impossible fit out of a loose one. Do that and your assembly fits on the first build.
Designing a multi-part printed assembly and unsure how the tolerances will stack? Upload your CAD file for a 24-hour quote — we will run the critical dimension chain and flag any fit that needs re-allocating before a single part is printed.