Every FDM user meets this eventually: a 5 mm hole that a 5 mm rod will not enter. The usual advice is to add "about 0.2 mm" and move on, which works often enough to survive as folklore and fails in the two cases where you most need it — very small holes and precise fits.
The reason is geometric rather than mechanical. An extruded bead has width. As the nozzle walks the inside of a bore, that width sits partly where the hole was supposed to be, and the tighter the curve the more of it ends up on the wrong side. The lost material is set by extrusion width, not by the size of your feature, which is why the same absolute error is trivial at 50 mm and catastrophic at 2 mm.
How much to add, by diameter
Every figure below comes from the same solver behind
the calculator, at the stock calibration
(holeK 0.5, shaftK 0.2). The last column is
what you draw in CAD for the hole to finish on nominal.
| Nominal | Undersize | As % of dia | Model this |
|---|---|---|---|
| 2 mm | 0.390 | 19.50% | 2.39 |
| 3 mm | 0.390 | 13.00% | 3.39 |
| 4 mm | 0.368 | 9.19% | 4.37 |
| 5 mm | 0.345 | 6.90% | 5.34 |
| 6 mm | 0.330 | 5.50% | 6.33 |
| 8 mm | 0.311 | 3.89% | 8.31 |
| 10 mm | 0.300 | 3.00% | 10.30 |
| 12 mm | 0.292 | 2.44% | 12.29 |
| 16 mm | 0.283 | 1.77% | 16.28 |
| 20 mm | 0.278 | 1.39% | 20.28 |
| 25 mm | 0.273 | 1.09% | 25.27 |
| 30 mm | 0.270 | 0.90% | 30.27 |
| 40 mm | 0.266 | 0.67% | 40.27 |
| 50 mm | 0.264 | 0.53% | 50.26 |
Read the middle column rather than the first. In millimetres the correction only moves from 0.390 down to 0.264 across the whole range — a factor of 1.5 — while as a fraction of the feature it varies by nearly forty times. That single fact explains most "my printer is inaccurate" complaints. The printer is equally inaccurate at both ends; the part is not equally forgiving.
This is also why a flat "add 0.2 mm" rule behaves the way it does in practice. It is roughly right around 20 mm, slightly tight everywhere, and badly short below 5 mm, which is exactly where people report that the rule "stopped working".
The model stops discriminating below 3.33 mm
The curvature term is capped, deliberately. Below about 3.33 mm it holds flat and the reported correction sits at 0.390 mm for a 3 mm hole, a 2 mm hole and a 1 mm hole alike.
That is a limitation, and it is better to say so than to publish four decimal places nobody can hit. Uncapped, the term would keep climbing and produce confident-looking numbers for 1 mm holes that no 0.4 mm nozzle can hold anyway — at that point the bead is wider than the wall it is drawing. Treat anything under 3 mm as needing a test print, not a table.
Below roughly 1.5 mm on a 0.4 mm nozzle the correction approaches the diameter itself, and no CAD number rescues it. Drill it, or fit a finer nozzle. The same wall shows up in heat-set insert holes, where M2 turns out to be impossible at 0.4 mm because the required allowance exceeds the knurl depth it has to fit inside.
Nozzle matters, layer height mostly does not
Since the error is driven by extrusion width, nozzle diameter is the dominant variable. Doubling it nearly doubles the correction.
| Nozzle | Extrusion width | Undersize | Model this |
|---|---|---|---|
| 0.2 mm | 0.225 | 0.188 | 5.19 |
| 0.25 mm | 0.281 | 0.227 | 5.23 |
| 0.4 mm | 0.450 | 0.345 | 5.34 |
| 0.6 mm | 0.675 | 0.502 | 5.50 |
| 0.8 mm | 0.900 | 0.660 | 5.66 |
Layer height is a minor term by comparison. Across the entire practical range, 0.1 mm to 0.32 mm, the correction moves by just 0.033 mm — less than the ±0.080 mm the machine varies by anyway at 0.2 mm layers.
| Layer | Undersize | Repeatability |
|---|---|---|
| 0.10 mm | 0.330 | ±0.060 |
| 0.15 mm | 0.338 | ±0.070 |
| 0.20 mm | 0.345 | ±0.080 |
| 0.28 mm | 0.357 | ±0.096 |
| 0.32 mm | 0.363 | ±0.104 |
So printing finer to fix a hole size is close to pointless: you move the correction by hundredths while the noise moves with you. Change the nozzle, or change the model.
Run your own numbers Enter the nominal size, pick the fit class and the material, and the calculator returns the dimensions to model.A hole and a peg are not the same error
The temptation, when a shaft will not enter a bore, is to shrink the shaft. That trades away more than it looks like it does, because the two errors are not the same size.
| Nominal | Hole undersize | Peg oversize | Ratio |
|---|---|---|---|
| 3 mm | −0.390 | +0.110 | 3.55× |
| 5 mm | −0.345 | +0.110 | 3.14× |
| 10 mm | −0.300 | +0.110 | 2.73× |
| 20 mm | −0.278 | +0.110 | 2.52× |
| 40 mm | −0.266 | +0.110 | 2.42× |
A peg is a convex path the nozzle tracks from the outside, so the bead lands where it belongs and the error stays roughly constant at 0.110 mm. A bore is concave and the bead leans inward, so the error is two to three and a half times larger and grows as the hole shrinks. The practical rule follows: correct the hole, leave the peg alone. The hole is where nearly all of the error lives, and it is the feature that scales with size.
Calibrate it once, on your machine
The table above uses stock constants. Yours will differ, and one test print settles it. Model a plate with a 20.00 mm through hole and a 20.00 mm peg — both drawn at exactly 20.00, no compensation — and print it with your normal profile.
In PLA, 0.3% shrinkage puts the expected size at 19.940 mm before any process error. Measure both features and the calculator's calibration inputs will back out your own constants:
| Measured hole | Measured peg | Your holeK | Your shaftK |
|---|---|---|---|
| 19.63 | 20.05 | 0.566 | 0.200 |
| 19.55 | 20.12 | 0.727 | 0.356 |
| 19.72 | 19.98 | 0.384 | 0.044 |
Stock is holeK 0.5 and shaftK 0.2, so a
machine landing on 19.63 / 20.05 is close to standard and the published
table will serve it well. One landing on 19.55 is losing noticeably more material
and needs its own numbers.
It is worth the twenty minutes. At a 5 mm hole, the difference between
holeK 0.3 and holeK 0.7 is 0.252 mm of
correction — 1.6× the machine's entire repeatability band. No amount
of slicer tuning recovers a wrongly assumed constant.
Measure the bore with pin gauges or a bore gauge, not caliper knife edges.
Caliper jaws bridge a curve and read a hole low, which inflates your
holeK and then over-corrects every hole you draw afterwards. If
the coupon reports a hole larger than 19.940, that is the usual
cause.
Is any of this worth it, given the noise?
Fair question, and one worth answering with the numbers rather than enthusiasm. A well-tuned consumer machine repeats to about ±0.080 mm at 0.2 mm layers. Compare that to the correction:
| Nominal | Undersize | Band | Ratio |
|---|---|---|---|
| 3 mm | 0.390 | ±0.080 | 4.9× |
| 5 mm | 0.345 | ±0.080 | 4.3× |
| 10 mm | 0.300 | ±0.080 | 3.8× |
| 20 mm | 0.278 | ±0.080 | 3.5× |
| 50 mm | 0.264 | ±0.080 | 3.3× |
The correction is always at least three times the noise, so applying it is clearly worth doing — it removes the largest, most predictable part of the error. What it does not do is make the noise disappear. A fit that needs better than ±0.080 mm will not be reliable no matter how carefully you compensate, and that is a design problem rather than a slicer setting. Add a chamfer, split the tolerance, or use a bought bushing.
Frequently asked
Should I use horizontal expansion in the slicer instead?
You can, but it applies to every feature on the part at once, including outside walls that were already correct and pegs that need only a third as much. Correcting in CAD lets each feature get the right number. Slicer compensation is the blunt instrument; use it when you are printing somebody else's model.
Does material change the hole correction?
Barely, and much less than people expect. Shrinkage differs a lot between materials, but shrinkage is a separate term that scales with the whole part, not with the bore — see shrinkage compensation for where it does and does not cancel. The process allowance here is driven by extrusion width, which is a property of the nozzle and the flow, not the polymer.
Why is the correction not simply the extrusion width?
Because only part of the bead ends up inside the hole, and how much depends on
the curvature of the path. The model uses half the width as its baseline
(holeK 0.5), scaled by a curvature factor that grows as the hole
gets smaller, plus a small layer-height term. That is what the coupon calibrates.
My holes print oversize, not undersize. What now?
Check the measurement method first, since calipers read bores low rather than high, so a genuine oversize reading is unusual. If it holds up, you are likely under-extruding, in which case fix flow before compensating — otherwise you are cancelling one error with another and both will drift.
Does this apply to vertical holes only?
The table assumes a hole printed as a vertical bore, which is the common case. A hole printed on its side is a different geometry: it sags at the top and prints elliptical, and no diametral correction fixes that. Reorient the part or ream it.