3D Print Hole & Fit Compensation

FDM printers make holes too small and pins slightly too big. Enter the size and the fit you want, and this tool gives the diameter to model in CAD for the hole and for the pin. Measure one test print, or a whole test plate, for numbers that match your own printer.

Published October 30, 2026

1. Size and fit

2. Printer and file

Line width is usually 100 to 120% of the nozzle (0.4 mm nozzle: 0.42 to 0.48 mm).

3. Test print (optional)

Print a hole and a pin near this size, measure them, and enter what you modelled and what you got.
Measure a hole with a pin gauge, drill shanks or the inside jaws of calipers at mid-depth, not at the first layer.

Model These Sizes

Model the hole at
-
Model the pin at
-
ItemHolePin

    Calibrate From a Test Plate

    Print a plate of holes (and pins) in a range of sizes, measure each one, and paste the results below as modelled measured pairs, one per line. The tool fits a straight line, measured = slope × modelled + offset, by least squares, then turns it round to give the size to model for any target.

    Make a test plate (STL)

    Smallest hole on the left. Circles use 128 segments, so the STL itself loses under 0.03% of the size. Made in your browser; nothing is uploaded.

    STL Facets: How Many Segments?

    An STL stores a circle as straight flats with their corners on the circle. A pin is still its full size across the corners, but a hole is only as big as the circle that fits inside the flats.

    SegmentsInscribed ØHole loss

    How 3D Print Hole Compensation Works

    A 3D-printed hole usually comes out 0.1 to 0.4 mm smaller than modelled and a printed pin a little bigger, so you model the hole oversize and the pin undersize. This tool works out how much, for the fit you want, and adds the size lost to the STL's flat facets.

    Three things make an FDM hole small. The STL turns the circle into flats, so the hole is only as big as the circle inside them. The extruded line is squashed and bulges sideways, and on the inside of a curve it piles up more than on the outside. And the plastic shrinks a little as it cools. A pin has the same squash and shrinkage, but its flats do not make it smaller across the corners.

    The Method

    1. Target sizes from the fit
    printed hole − printed pin = clearance c
    both printed: hole = D + c/2, pin = D − c/2
    metal pin: hole = D + c   metal hole: pin = D − c
    Clearance is diametral (whole size). Clearance per side is c/2.
    2. Polygon (STL) resolution
    rinscribed = r · cos(π / n)
    chord error e = r · (1 − cos(π / n))
    segments needed n ≥ π / arccos(1 − e / r)
    n is the number of flats around the circle. CAD programs set it from a chord (sag) tolerance, an angle, or a fixed count. Slicers may simplify further (Cura "Maximum Resolution" and "Maximum Deviation", PrusaSlicer "Slice resolution").
    3. Typical print model (no test print)
    printed hole = (1 − s) · cos(π/n) · CAD − ehole
    printed pin = (1 − s) · CAD + epin
    e = factor × line width
    s is typical linear shrinkage (PLA 0.3%, PETG 0.4%, ABS 0.7%). Typical hole factors: PLA 0.35, PETG 0.45, ABS/ASA/PC 0.40, nylon 0.45, TPU 0.55; pins about 0.15 to 0.25. These are starting values, not measurements; your printer will differ.
    4. One measured test print
    CAD = target + (modelled − measured)
    One hole tells you the offset at that size. Printing errors are mostly a fixed amount, not a percentage, so this works well for sizes near the one you measured. It replaces the typical model.
    5. Calibration by least squares
    measured = a · modelled + b
    a = Σ(x − x̄)(y − ȳ) / Σ(x − x̄)², b = ȳ − a·x̄
    CAD = (target − b) / a
    With several sizes the fit finds both the fixed offset b and the part that grows with size (a). The residuals show how well a straight line fits; under about 0.03 mm is as good as calipers can measure. Calibration wins over a single test print.
    6. Slicer alternatives
    Slicers can grow holes for you: PrusaSlicer "XY Size Compensation" (all outlines), OrcaSlicer and Bambu Studio "X-Y hole compensation" and "X-Y contour compensation", Cura "Hole Horizontal Expansion". These apply one offset to every hole, so use either the slicer setting or this tool's CAD sizes, not both.

    Typical Starting Clearances for FDM

    These are typical diametral clearances between the finished (as-printed or real) hole and pin, the kind of values commonly used for FDM parts. They are larger than machined fits because printed surfaces have layer lines and are never perfectly round. Test before you rely on them. For machined parts, use the ISO Tolerance Fit calculator; for dowels in metal, see the Dowel Pin Hole Size Chart.

    FitTypical clearanceRange usedNearest ISO fit (guide)
    Press (interference)−0.10 mm−0.15 to −0.05 mmH7/p6
    Snug / transition+0.05 mm0 to +0.10 mmH7/k6
    Slip / sliding+0.20 mm+0.15 to +0.25 mmH7/g6
    Loose / running+0.40 mm+0.30 to +0.50 mmH9/d9 to H11/c11

    A real H7/g6 fit at 10 mm has only 0.005 to 0.029 mm clearance. No FDM printer holds that, so the ISO names here describe the feel of the fit only. For a true H7 bore in a printed part, model the hole about 0.2 mm under size and ream it.

    Worked Example

    A 10 mm printed pin sliding in a printed hole, PLA, 0.45 mm line width
    • Slip fit, clearance 0.20 mm, so the printed hole should be 10.10 mm and the pin 9.90 mm.
    • STL exported at 0.01 mm chord tolerance: n ≥ π / arccos(1 − 0.01/5) = π / 0.06327 = 49.7, so 50 segments, and the hole loses 10 × (1 − cos(π/50)) = 0.020 mm.
    • Typical errors: hole 0.35 × 0.45 = 0.158 mm small, pin 0.15 × 0.45 = 0.068 mm big, shrinkage 0.3%.
    • Hole: (10.10 + 0.158) ÷ (0.997 × cos(π/50)) = 10.309 mm to model. Pin: (9.90 − 0.068) ÷ 0.997 = 9.862 mm.
    • Modelled at plain 10.00 mm, the hole would come out about 9.79 mm and the pin 10.04 mm: a 0.25 mm interference instead of a slip fit.
    A 6 mm steel dowel pressed into a printed hole
    • Press fit, −0.10 mm, metal pin, so the printed hole should be 5.90 mm.
    • A test hole modelled at 6.00 mm measured 5.78 mm: it prints 0.22 mm small.
    • Model the hole at 5.90 + 0.22 = 6.12 mm.
    Calibration from a test plate
    • Holes modelled at 3, 4, 5, 6, 8, 10 and 12 mm measured 2.71, 3.73, 4.76, 5.77, 7.79, 9.80 and 11.82 mm (the example in the tool).
    • Least squares gives slope a = 1.0114 and offset b = −0.310 mm, with every point within 0.015 mm of the line. Small holes lose more: 0.29 mm at 3 mm but 0.18 mm at 12 mm.
    • For a 10.10 mm printed hole, model (10.10 + 0.310) ÷ 1.0114 = 10.29 mm.

    Tips for Accurate Printed Fits

    • Calibrate flow first. Over-extrusion makes every hole smaller. Set the extrusion multiplier and steps per mm before you tune holes, and check shrinkage and scale for big parts.
    • Measure away from the first layer. Elephant's foot squashes the first layers inwards; a hole is smallest at the bed. Chamfer the bottom edge 0.4 to 0.6 mm in CAD.
    • Print holes vertical where you can. A horizontal hole is not round (the top sags), so make it a teardrop or flat-topped shape, or drill it.
    • Small holes are worse. Below about 3 mm, print a pilot and drill to size. For screws and inserts, use the Heat-Set Insert & Screw Hole Size tool and the Clearance Hole Chart.
    • Recalibrate per material. PETG and TPU bulge more than PLA; nylon and ABS shrink more. Keep a calibration for each filament you use often.
    • Want it stronger? More walls around a hole help more than infill. See the Strength vs Infill Estimator.

    Frequently Asked Questions

    The STL turns a circle into flat facets, and a hole is only as big as the circle that fits inside them. The extruded plastic is also squashed sideways and piles up on the inside of tight curves, and it shrinks slightly as it cools. Together these usually make FDM holes 0.1 to 0.4 mm small.

    Typical starting values for FDM, measured on the finished parts, are about 0.2 mm on the diameter for a sliding fit, 0.4 mm for a loose running fit, 0 to 0.1 mm for a snug fit and 0.05 to 0.15 mm of interference for a press fit. Print a test pair to confirm, because every printer and filament differs.

    Enough that the chord error is well under your print accuracy, about 0.01 mm. The number needed is n = π / arccos(1 − e / r): a 10 mm hole needs 50 segments for 0.01 mm, and a 50 mm hole needs 112. Export with a chord or deviation tolerance rather than a fixed count so small and large circles are both fine.

    Either works, but not both at once. Slicer settings such as X-Y hole compensation or Hole Horizontal Expansion grow every hole by the same amount, which is quick. Modelling the sizes in CAD lets each hole have its own fit, and the calibration here also corrects errors that change with size.

    Not straight off the printer. An H7 hole at 10 mm has a tolerance of 0.015 mm, while a good FDM printer holds about ±0.05 to 0.1 mm. Print the hole about 0.2 mm under size and ream it to H7, or press in a metal bushing.

    Clearances and print errors without a test print are typical starting values, not measurements of your printer. Always print and measure a test piece before making parts that must fit.