3D Print Hole Compensation: Typical Values by Material and Nozzle (Quick Reference)
Typical FDM hole compensation: PLA 0.10–0.30mm, PETG 0.15–0.30mm, ABS 0.20–0.35mm depending on nozzle and hole size. Full lookup table with the math, the physics behind it, and how to calibrate for your specific printer.
If you’re here you already know the problem: a 3D printed hole comes out smaller than the diameter you drew in CAD. You want a quick lookup of typical compensation values in millimeters so you can apply them and move on. This article leads with the table, then explains where the numbers come from for anyone who wants to dig deeper.
For one specific calculation — your exact printer, your exact material, your exact nozzle, with calibration override — use the Hole Tolerance Calculator. It runs every formula in this article live.
The lookup table — typical compensation in mm
Compensation = how much larger to draw the hole in CAD so the printed result matches the target diameter. Values below are for a tuned printer with no calibration override (out-of-the-box defaults).
PLA at 0.4mm nozzle
| Target hole | Typical compensation | Model this in CAD |
|---|---|---|
| 2mm | +0.27mm | 2.27mm |
| 3mm | +0.26mm | 3.26mm |
| 5mm | +0.24mm | 5.24mm |
| 8mm | +0.20mm | 8.20mm |
| 10mm | +0.18mm | 10.18mm |
| 15mm | +0.12mm | 15.12mm |
| 20mm | +0.08mm | 20.08mm |
| 25mm+ | +0.08mm (floor) | target + 0.08mm |
PETG at 0.4mm nozzle
Slightly more because PETG shrinks more (0.40% vs PLA’s 0.30%).
| Target hole | Typical compensation | Model this in CAD |
|---|---|---|
| 3mm | +0.27mm | 3.27mm |
| 5mm | +0.26mm | 5.26mm |
| 8mm | +0.23mm | 8.23mm |
| 10mm | +0.22mm | 10.22mm |
| 15mm | +0.18mm | 15.18mm |
| 20mm | +0.16mm | 20.16mm |
ABS / ASA at 0.4mm nozzle
ABS shrinks much more (0.70%), so compensation scales with hole size more aggressively.
| Target hole | Typical compensation | Model this in CAD |
|---|---|---|
| 3mm | +0.29mm | 3.29mm |
| 5mm | +0.30mm | 5.30mm |
| 8mm | +0.30mm | 8.30mm |
| 10mm | +0.31mm | 10.31mm |
| 15mm | +0.34mm | 15.34mm |
| 20mm | +0.36mm | 20.36mm |
Nylon (PA6 / PA12) at 0.4mm nozzle
Nylon’s 1.50% shrinkage dominates at all sizes. Calibration is mandatory for production work.
| Target hole | Typical compensation | Model this in CAD |
|---|---|---|
| 3mm | +0.31mm | 3.31mm |
| 5mm | +0.32mm | 5.32mm |
| 8mm | +0.32mm | 8.32mm |
| 10mm | +0.33mm | 10.33mm |
| 15mm | +0.37mm | 15.37mm |
| 20mm | +0.38mm | 20.38mm |
Larger nozzles (0.6mm and 0.8mm)
For nozzles larger than 0.4mm, multiply the compensation values above by nozzle / 0.4:
- 0.6mm nozzle: 1.5× the compensation
- 0.8mm nozzle: 2.0× the compensation
So a 5mm hole in PLA on a 0.6mm nozzle: 0.24 × 1.5 = +0.36mm compensation, model at 5.36mm.
This scaling holds because the inside-curve extrusion overshoot — the main contributor to undersize — is proportional to nozzle diameter.
Vertical-axis holes (add another +0.10mm)
If the hole’s axis is parallel to the bed (the print “carves out” the hole as it goes up), add another +0.10mm to all values above. This compensates for the bridging sag at the top of the hole.
Better practice: redesign the hole as a teardrop shape so the top is self-supporting, then no extra compensation is needed.
Where these numbers come from
Three physical effects shrink every FDM-printed hole. Adding them up gives the compensation:
total_compensation = material_shrinkage + slicer_polygon_approximation + extrusion_overshoot
Material shrinkage
Plastic contracts as it cools from extrusion temperature to room temp. The shrinkage is proportional to the hole diameter:
| Material | Linear shrinkage (XY) |
|---|---|
| PLA | 0.30% |
| PETG | 0.40% |
| ABS | 0.70% |
| ASA | 0.65% |
| Nylon | 1.50% |
| TPU | 0.60% |
| Polycarbonate | 0.70% |
| PLA-CF | 0.20% |
| PA-CF | 0.40% |
For a 5mm hole in PLA: 5 × 0.003 = 0.015mm of shrinkage. Tiny. For the same 5mm hole in Nylon: 5 × 0.015 = 0.075mm — five times more.
Slicer polygon approximation
Slicers convert circles into N-sided polygons before generating g-code. At the default ~0.04mm chord error, a 5mm hole becomes a 32-sided polygon. The inscribed polygon is slightly smaller than the true circle — about 0.02–0.03mm for typical hole sizes.
This effect is independent of hole size at typical chord settings; it’s always around 0.02–0.05mm.
Extrusion overshoot on inside curves
The dominant contributor for small holes. When the extruder traces an inside curve, it can’t decelerate fast enough at every direction change, depositing a tiny pile-up of material on the inside. The pile-up narrows the hole by 0.05–0.20mm depending on print speed, layer height, and pressure advance tuning.
This effect is roughly fixed in absolute terms — a 5mm hole and a 25mm hole both lose about 0.10mm to extrusion overshoot. That’s why small holes are proportionally worse: 0.10mm out of 5mm is 2%; 0.10mm out of 25mm is 0.4%.
Cross-checked against community measurements
Published kill-a-watt-style measurements from across the maker community converge on the same range as our formula. Typical measured values for a tuned 0.4mm nozzle in PLA at standard settings:
| Hole | Measured (community avg) | Our formula | Match |
|---|---|---|---|
| 3mm | 2.72–2.76mm (0.24–0.28 undersize) | 0.26mm comp | ✓ |
| 5mm | 4.76–4.80mm (0.20–0.24 undersize) | 0.24mm comp | ✓ |
| 10mm | 9.80–9.86mm (0.14–0.20 undersize) | 0.18mm comp | ✓ |
| 20mm | 19.90–19.94mm (0.06–0.10 undersize) | 0.08mm comp | ✓ |
Real-world variation between printers is roughly ±0.03mm at any given hole size. That’s exactly why the calibration override exists in the Hole Tolerance Calculator — print a 5mm test hole, measure, type the result, and every future recommendation scales to your specific printer’s actual behavior.
How to get the right number for your printer
The values above are typical for a well-tuned mid-tier printer (Bambu P1S / Prusa MK4S / Creality K1 class). Your specific printer’s flow rate, linear advance tuning, and bed mesh affect the actual undersize.
The 15-minute calibration procedure:
- In your CAD tool, model a 20mm × 20mm × 5mm block with a single hole through it. Set the hole diameter to exactly 5.00mm.
- Slice in PLA at standard settings (0.4mm nozzle, 0.2mm layer height, 100% flow).
- Print, let cool to room temperature.
- Measure the printed hole with calipers. Take the average of 3 readings around the perimeter.
- Open the Hole Tolerance Calculator, expand “Calibration override,” enter your measured value (e.g.
4.78), click Save.
From that point on, every recommendation scales to your printer. The calibration saves to your browser; clear it when you switch printers or change nozzle/material.
Common compensation mistakes
-
Adding a constant 0.2mm to every hole. This over-compensates large holes (causing loose fits) and under-compensates small ones (M2/M3 still won’t accept the bolt).
-
Using PLA compensation values for ABS. ABS shrinks 2× more. A 10mm hole in ABS needs 0.31mm, not 0.18mm. The difference is significant for tight fits.
-
Ignoring vertical holes. Top of a vertical hole sags from bridging. Either compensate +0.10mm extra or redesign as a teardrop.
-
Calibrating once with PLA, assuming it transfers to other materials. Different materials have wildly different shrinkage. Recalibrate per-material for production work.
-
Compensating a hex pocket the same as a round hole. Hex pockets need less compensation because the polygon approximation effect doesn’t apply and corners aren’t continuous curves. See the hex section of the calculator which uses a different formula for hex/square pockets.
Quick reference — the math
For circular holes:
shrinkageComp = target_diameter × shrinkage_pct / 100
slicerComp = max(0.08, 0.30 - 0.012 × target_diameter) × (nozzle / 0.4)
orientComp = 0.10 if vertical hole, else 0
compensation = shrinkageComp + slicerComp + orientComp
model_diameter = target_diameter + compensation
For hex / square pockets:
shrinkageComp = target_AF × shrinkage_pct / 100
hexComp = max(0.08, 0.14 - 0.005 × target_AF) × (nozzle / 0.4)
sqComp = max(0.09, 0.16 - 0.005 × target_AF) × (nozzle / 0.4)
model_AF = target_AF + shrinkageComp + hexComp_or_sqComp
Recommended workflow
For every CAD model with hardware fits (heat-set inserts, bolts, bearings, hex nuts, magnets):
- Open the Hole Tolerance Calculator on a second monitor.
- Pick the exact fit type (M3 heat-set, M3 clearance, M5 hex nut, 608 bearing, etc.).
- Pick your material and nozzle.
- Copy the recommended diameter into your CAD sketch.
- Save the per-printer calibration once after a test print so every subsequent recommendation is calibrated to your machine.
Five-step workflow. Holes fit on the first print. No reprints, no Z-test prints, no guessing.
Related reading
- Why Your 3D Printed Holes Always Come Out Too Small — the deep-dive on the physics of hole shrinkage and the three contributing effects.
- Heat-Set Inserts in 3D Printed Parts: A Practical Guide — for the most common engineering use case where hole compensation actually matters.
- How to Price Your 3D Prints in 2026 — for the pricing math that accounts for the failure rate when holes don’t fit on the first print.