Free tool
Fit, Clearance & Shrinkage Calculator
Two 3D-printed parts drawn at the exact same 10.00 mm diameter in CAD will not slide together off the build plate: polymer thermal contraction, rounded extrusion edges, STL facet chord error and z-seam bulge all eat into internal clearance. Enter your nominal dimension, material, nozzle and fit class below to get compensated CAD dimensions, slicer XY offset equivalents, and a downloadable 3-ring + pin ASCII STL test gauge sized for your joint.
Recommended CAD & slicer values
How to use the calculator and STL test gauge
- Enter your nominal mating size (for example, a 10 mm dowel pin in a 10 mm housing) and choose the polymer you are printing.
- Select the desired fit class and whether the bore axis is vertical (printed flat on the bed) or horizontal (printed across layers).
- Choose whether to apply the clearance to the hole (hole-basis, needed when mating with a steel bolt, bearing or dowel pin of fixed size), to the shaft, or split between both printed parts.
- Click Download printable STL test gauge to generate a small calibration file containing three annular test rings (target radial clearance −0.05 mm, target, and +0.05 mm) plus one matching test pin. Print it with your normal wall count and seam settings to feel the exact fit before committing to a long print.
How the calculator works
Step 1: baseline radial clearance by fit class and layer geometry
In FDM printing, an extruded perimeter does not have a flat vertical wall: its cross-section has semicircular edges of radius h ÷ 2 (where h is layer height), and the nozzle slightly pulls inward around tight corners. Starting from a 0.40 mm nozzle at 0.20 mm layer height on a vertical-axis bore, the planner computes radial clearance per side as:
c_radial = c_base + 0.25 × (h − 0.20) + 0.15 × (d_nozzle − 0.40) + c_axis
where c_base is 0.05 mm for a light press fit, 0.10 mm for a snug transition fit, 0.15 mm for a close sliding fit, 0.25 mm for a free running fit, and 0.35 mm for a print-in-place joint. When the bore axis is horizontal, the top arch bridges across open air and droops slightly, so c_axis = 0.35 × h is added (+0.07 mm radial at 0.20 mm layer height). Total diametral clearance is 2 × c_radial. See designing 3D-printed parts that fit for when to choose each class.
Step 2: polygon inscription chord drop
When a CAD program exports a cylinder of diameter D as an N-sided STL polygon, its vertices lie on the circle of diameter D, which means the flat faces cut inside the circle. As documented in Chris Palmer’s classic Hydraraptor polyholes analysis, the inscribed circle (apothem diameter) is smaller by:
ΔD_chord = D × (1 − cos(π ÷ N))
For a 10 mm hole exported at a coarse 24 facets, 10 × (1 − cos(π ÷ 24)) = 0.085 mm is lost before the slicer even runs. At 64 facets the drop is only 0.012 mm. The calculator adds ΔD_chord to internal bores so the inscribed circle matches your target.
Step 3: polymer thermal shrinkage compensation
As a thermoplastic cools from its glass transition or chamber temperature to room temperature, it contracts linearly by a fraction s = shrinkage% ÷ 100. To end up at a desired room-temperature size, the CAD or slicer model is scaled by:
scale = 1 ÷ (1 − s)
For the default 10.00 mm close-sliding PLA joint (c_radial = 0.15 mm, ΔD_chord = 0.012 mm at 64 facets, s = 0.0025) using hole-basis: the post-cooling hole needs to clear 10.00 + 0.30 + 0.012 = 10.312 mm, and multiplying by 1 ÷ 0.9975 ≈ 1.0025 gives a CAD hole diameter of 10.34 mm and a CAD shaft diameter of 10.03 mm. Full mechanism details are in why 3D-printed holes come out undersized.
Step 4: separating outer shrinkage from bore constriction with calipers
Measuring only an outer cube mixes thermal shrinkage with over- or under-extrusion. By measuring both an outer width (L_target vs L_meas) and an inner bore (B_target vs B_meas) after calibrating your slicer flow ratio, the calculator separates the two:
- Measured XY scale:
(L_target ÷ L_meas) × 100% - Measured slicer XY hole offset (radial):
(B_target × (L_meas ÷ L_target) − B_meas) ÷ 2
What the calculator cannot know about your print
Clearance equations assume your extruder is pushing the volume of plastic the slicer asked for and that corners are not bulging from pressure spikes. If a sliding joint still binds, check extruder rotation distance / E-steps, Pressure Advance / Linear Advance, and Z-seam placement (an aligned seam inside a bore acts like a keyway ridge). Fiber-filled polymers and thick walls shrink differently from thin shells, and nylon parts expand slightly over several days as they absorb ambient moisture.
Polymer shrinkage & printing reference table
Values below are typical ranges summarized from manufacturer technical data sheets and polymer handbooks. Use the shrinkage column as a starting point, then refine it with caliper measurements on your own printer and filament spool.
| Polymer | Density (g/cm³) | Typical XY shrinkage | Glass transition Tg | Nozzle temp (°C) | Bed temp (°C) | Typical 0.4 mm MVS | Drying guide |
|---|---|---|---|---|---|---|---|
| PLA (Polylactic Acid) | 1.24 | 0.25% (0.15–0.35%) | 60 °C | 195–220 | 50–60 | 11–15 mm³/s | 50 °C for 4–6 h |
| PETG (Glycol-Modified PET) | 1.27 | 0.35% (0.25–0.50%) | 80 °C | 230–250 | 70–85 | 8–12 mm³/s | 65 °C for 4–6 h |
| ABS (Acrylonitrile Butadiene Styrene) | 1.04 | 0.70% (0.50–0.90%) | 105 °C | 240–260 | 95–110 | 10–14 mm³/s | 70 °C for 4–6 h |
| ASA (Acrylonitrile Styrene Acrylate) | 1.07 | 0.65% (0.45–0.85%) | 105 °C | 245–265 | 95–110 | 10–14 mm³/s | 70 °C for 4–6 h |
| TPU 95A (Thermoplastic Polyurethane) | 1.21 | 0.40% (0.25–0.60%) | -20 °C | 215–235 | 30–60 | 2.5–5 mm³/s | 60 °C for 6–8 h |
| Nylon (PA12 / Copolyamide) | 1.02 | 1.15% (0.80–1.50%) | 50 °C | 255–275 | 75–100 | 7–11 mm³/s | 75 °C for 8–12 h |
| PC (Polycarbonate Blend) | 1.20 | 0.75% (0.55–0.95%) | 115 °C | 265–290 | 100–115 | 7–11 mm³/s | 80 °C for 6–8 h |
| PETG-CF (Carbon-Fiber Filled PETG) | 1.29 | 0.20% (0.10–0.30%) | 80 °C | 240–265 | 70–85 | 8–11 mm³/s | 65 °C for 4–6 h |
Frequently asked questions
Should I use hole-basis or shaft-basis?
Use hole-basis whenever your printed part mates with off-the-shelf hardware such as an M5 bolt, a 608 bearing or a steel dowel pin—you cannot change the steel part’s diameter, so the printed bore must carry the full clearance. When both mating parts are 3D-printed, either hole-basis or split 50/50 works well.
Why not just scale the entire part in the slicer to fix tight holes?
Uniform XY scaling fixes thermal shrinkage (which is proportional to length), but hole constriction from corner pulling and polygon chord error is mostly a constant radial offset (0.10–0.25 mm regardless of whether the hole is 4 mm or 40 mm). Scaling a part up by 2% so a 5 mm hole fits a bolt will make a 100 mm bolt-hole spacing 2 mm too wide.
Why does the first layer of my bore always feel tighter than the rest?
First-layer squish (“elephant’s foot”) flares the bottom 1–2 layers inward by 0.1–0.3 mm. Add a 0.4–0.8 mm × 45° chamfer to the bottom edge of every vertical bore in CAD, or enable elephant-foot compensation in your slicer (see first-layer squish and Z-offset).