Tolerances on a Print Bed
When I started printing parts that needed to fit together, I assumed tolerance was a single number I could look up: “add 0.2mm to any mating dimension.” The assumption was wrong in a way that cost me about a month of failed test prints before I understood what was actually going on.
Tolerance in FDM is not a single offset. It is a function of the joint type, the axis of the feature, the material, the layer height, and the specific printer. The 0.2mm rule applies somewhere in the middle of a large space of cases. Outside the middle, it is noise.
What Goes Wrong
A simple through-hole for an M3 bolt is a useful starting case. The hole is designed at 3.0mm — exactly the bolt’s nominal diameter. On the print bed, the hole comes out at approximately 2.7mm. The difference is not random: FDM over-extrudes slightly at the perimeter of negative features, a behavior sometimes called “hole shrinkage” or “perimeter swelling.”
The fix is well-known: design the hole larger than nominal. For an M3 clearance hole in PETG, I use 3.4mm. That is larger than the standard clearance recommendation in metal, because the plastic wall of the hole deflects slightly under the bolt head in a way metal does not.
The design dimension and the print dimension are different things, and the difference is not consistent. Treating them as the same thing is the most common mistake in FDM part design.
Axes Matter
The swelling behavior is not uniform across axes. Features in the XY plane (horizontal to the bed) behave differently from features in the Z axis (vertical, built up layer by layer).
A 10mm tall post designed at 10mm tall will print very close to 10mm tall. The layer height is consistent and cumulative error is small over 10mm.
A 10mm diameter circle in XY will not be 10mm. The combination of perimeter swelling and the discretization of the circle into line segments produces a feature that is reliably undersized.
The practical rule: add tolerance to XY features. Trust Z features more.
Test Coupons Before Parts
The fastest way through this problem is not reading tolerance guides (including this one). It is printing a test coupon specific to your printer, material, and layer height, then measuring the result.
A useful test coupon for shaft/hole fits:
- Print a block with five holes in 0.1mm increments around your target dimension
- Print a mating shaft at nominal
- Fit the shaft against each hole
- Use the tightest fit that still allows assembly without force as your clearance offset
This takes one print and twenty minutes. The result is a number specific to your setup that no chart can give you.
Snap Fits and Flexure Features
Snap fits deserve their own section because the failure mode is specific: a snap fit that was designed to flex will often snap off instead of snapping in, not because the tolerance was wrong but because FDM layers delaminate under the bending stress.
The mitigations:
- Orient the part so that the snap arm layers are parallel to the bending direction (this puts the layer interfaces in compression during deflection, not tension)
- Increase perimeter count on snap arm features — four or five perimeters instead of the usual two
- PETG and TPU tolerate snap fit use cases much better than PLA, which is brittle along layer lines
Clearance on snap fits is also a different problem than clearance on holes. The snap arm needs to deflect past the catch feature and then spring back. The design deflection needs to be achievable in the as-printed part — which, depending on material, may be 60-80% of the design dimension.
The Workflow I Use
For any mating feature I have not printed before in a given material:
- Design the feature at nominal
- Add a test block to the same print with the feature at nominal ±0.1mm and ±0.2mm
- Print the test block first
- Measure and select the dimension to use in the actual part
- Print the actual part
This adds one print to the project and eliminates at least three failed iterations.
The extra print is free compared to the time spent on a failed part that looked right in the model.