Beyond Flow Calibration • Fit & Tolerance Engineering
Why a 10.00 mm Peg Never Fits a 10.00 mm Hole—and How to Fix It Without Ruining Your Extrusion Profile
Once your printer’s temperature, pressure advance, and flow ratio are dialed in, dimensional accuracy becomes a geometry and material-physics problem. Here is how to separate clearance, polymer shrinkage, and hole compensation so replacement parts fit the first time.
Quick answer: Never lower your flow ratio (extrusion multiplier) or change axis steps-per-millimeter just to force a tight part to fit. First confirm healthy extrusion via proper 3D printer calibration. Then achieve dimensional fit in three layers: (1) apply material shrinkage compensation for large spans, (2) set elephant-foot compensation so the first layer doesn’t pinch the joint, and (3) build interface clearance into your CAD model (typically 0.15 mm to 0.30 mm total diametral gap for sliding FDM parts) or apply X-Y hole/contour compensation in your slicer.
Why a calibrated 3D printer still misses nominal CAD dimensions
If you design a 20.00 mm cube with a 10.00 mm center bore in CAD and print it on a well-tuned FDM machine, the outside walls might measure 20.04 mm while the inside hole measures 9.72 mm. A beginner sees the tight hole and drops flow ratio by 5%. The hole opens up slightly—but now the top surface has gaps and layer adhesion drops by a third.
That happens because FDM dimensional error comes from four independent physical mechanisms that have nothing to do with over-extrusion:
1. Thermal contraction (shrinkage)
Thermoplastics are extruded between 200 °C and 300 °C and cool to room temperature. PLA contracts by roughly 0.2% to 0.3%, PETG by 0.3% to 0.5%, and ABS/ASA/Nylon by 0.6% to 1.5%. This error scales with part length.
2. Inside-corner & hole pull-in
As the nozzle traces a small circle, molten plastic is pulled slightly inward along the chord of the arc (the “rubber band” effect), and STL polygon facets cut across the inside of the circle. Both effects make internal holes smaller regardless of part size.
3. Die swell & wall track geometry
Extruded lines have rounded edges and slight viscoelastic swell. Slicers model wall spacing carefully—as explained in Prusa’s Layers and Perimeters documentation—but seam bulges, corner deceleration, and layer-height ridges still add effective thickness to mating faces.
4. First-layer squish (Elephant’s foot)
To stick to the build plate, the first layer is compressed against a heated surface. Even a 0.12 mm lip around the bottom edge of a hole or shaft will block a mating pin from entering a bore that is otherwise perfectly sized inside.
Clearance vs. shrinkage vs. X-Y compensation: Which tool solves which error?
Modern slicers like OrcaSlicer, PrusaSlicer, and Bambu Studio give you three distinct dimensional controls alongside your CAD model. Mixing them up causes frustrating tail-chasing—where fixing a 5 mm bolt hole makes a 120 mm bracket 1.5 mm too wide.
The rule is simple: separate scale errors (percentage) from fixed wall-offset errors (millimeters).
| Control / Setting | How It Works | When to Use It | When NOT to Use It |
|---|---|---|---|
| Filament Shrinkage (%) (Slicer filament profile) |
Scales the entire part proportionally in X and Y (and optionally Z) to counteract thermal contraction as plastic cools. | When a 100 mm span measures 99.4 mm in ABS/ASA, or bolt hole centers across a long bracket don’t line up. | Never use scaling % to open up a single small tight hole—it will throw off overall part length. |
| X-Y Hole Compensation (mm) (Slicer process setting) |
Offsets internal closed contours outward by a fixed millimeter value (e.g., +0.10 mm) without changing outer dimensions. | When outer dimensions are accurate, but vertical cylindrical holes for metal dowels or bearings print consistently undersized. | Avoid when holes are non-closed slots, horizontal bores, or when sharing STL files meant to print on stock profiles. |
| X-Y Contour Compensation (mm) (Slicer process setting) |
Shifts outer perimeters inward or outward by a fixed millimeter offset across the entire model. | Fine-tuning a downloaded STL you cannot edit in CAD (e.g., shrinking an external peg by -0.08 mm). | Do not use as a permanent substitute for proper flow calibration or CAD clearance design. |
| Elephant Foot Compensation (mm) (Slicer process setting) |
Insets the first layer (or first few layers) by 0.10–0.20 mm so bottom squish stays flush with upper walls. | Almost every functional mechanical print that sits directly on the build plate without a bottom chamfer. | Avoid high values (>0.3 mm) on parts with tiny first-layer footprints that risk detaching from the bed. |
| CAD Design Clearance (mm) (In Shapr3D, Fusion, FreeCAD) |
Intentional gap modeled directly between mating surfaces based on required joint behavior (press, slip, or loose). | Always when designing your own functional parts, hinges, lids, threads, and replacement components. | N/A — this is the gold standard because each joint on the same part can have its own fit class. |
Crucial distinction from Ellis’ Print Tuning Guide: Never calibrate X, Y, or Z axis steps-per-millimeter (or Klipper rotation_distance) by measuring a printed cube. Belt pitch, pulley teeth, and stepper motor increments are fixed mechanical geometry. If a 20 mm cube measures 19.85 mm, changing axis steps will make a 200 mm part 1.5 mm oversized.
Practical FDM clearance and fit reference table (0.4 mm nozzle)
When you design a replacement part or two mating 3D printed components, how much gap should you leave in CAD? The table below reflects real-world shop testing on calibrated printers using a standard 0.4 mm nozzle and 0.20 mm layer height.
Note: Radial (per-side) clearance is the gap on each wall; Diametral (total) clearance is the total difference between hole diameter and shaft diameter ($D_{\text{hole}} – D_{\text{shaft}}$).
| Fit Class | Radial Gap (Per Wall) | Diametral Gap (Total Hole − Peg) | Typical Feel & Mechanical Application |
|---|---|---|---|
| Heavy Interference / Press Fit | 0.00 to 0.03 mm | 0.00 to 0.06 mm | Requires arbor press, vise, or light mallet tap. Permanent assembly, knurled brass inserts (use dedicated boss sizes), or pressed steel pins in PETG/ABS. |
| Snug Push / Friction Fit | 0.05 to 0.08 mm | 0.10 to 0.16 mm | Pushes together firmly by hand; holds position by friction. Ideal for removable dust caps, tool holders, and friction-fit lids. |
| Smooth Sliding / Location Fit | 0.10 to 0.15 mm | 0.20 to 0.30 mm | Slides smoothly without binding and minimal wobble. Best starting point for drawers, telescoping tubes, jigs, and printed-to-printed joints. |
| Print-in-Place / Loose Running Fit | 0.20 to 0.30 mm | 0.40 to 0.60 mm | Free rotation or articulated movement right off the build plate. Hinges, captive linkages, coarse printed threads, and outdoor gate latches. |
Interactive 3D Print Fit & Shrinkage Planner
Use this calculator while modeling in CAD or setting up your slicer profile. Enter your measured target dimension (from your stainless digital calipers), select the filament family, what the part mates against, and your desired fit class.
Calculate Your Target CAD Dimension & Slicer Settings
Shop note: When mating against another 3D printed part, layer ridges and seam bulges engage on both surfaces—adding 0.05 mm extra diametral clearance prevents galling.
Why vertical holes and horizontal holes behave differently
Orientation changes the geometry of a hole completely. When a cylinder’s axis is vertical (parallel to Z), the nozzle draws smooth circular perimeters in the X-Y plane. The hole is round, though slightly undersized due to arc pull-in and chord tessellation.
When a cylinder’s axis is horizontal (parallel to the build plate), the hole is built from stacked layers of varying width—like a brick arch. Two things go wrong at the top and bottom of a horizontal hole:
- Stair-stepping on low-angle slopes: Near the bottom and top 30° of the circle, discrete layer steps pinch into the theoretical circle.
- Crown bridging sag: The very top of the circle is an unsupported bridge. Gravity pulls the extruded filament downward by 0.10 mm to 0.25 mm, turning a round hole into an oval that binds on round bolts or bearings.
The 6-step workflow for dead-on dimensional accuracy
Whether you are reverse-engineering a broken appliance bracket or manufacturing custom jigs, follow this exact order so one adjustment never corrupts another:
-
Measure the real-world mating part properly
Before opening CAD, measure the mating shaft, bolt, or housing in at least three locations (to catch taper or wear) using quality digital calipers and pin/feeler gauges. Follow the full protocol in our guide on how to measure a part for 3D printing.
-
Confirm baseline extrusion & wall order
Ensure your filament profile has already passed temperature, pressure advance, and flow-ratio checks. For functional parts that do not have steep un-supported overhangs, consider setting your slicer’s wall printing order to Inner / Outer / Inner (with at least 3 walls). Printing the outer perimeter sandwiched between inner walls prevents inner infill overlap from pushing the external wall outward.
-
Export high-resolution CAD meshes (STEP or fine STL)
Many “undersized hole” complaints are actually coarse STL exports that turn a 10 mm circle into a 16-sided polygon. Export directly as a .STEP file (supported natively by OrcaSlicer, PrusaSlicer, and Bambu Studio), or set your CAD STL chordal deviation / surface tolerance below 0.01 mm.
-
Set material shrinkage % in the filament profile
Print a 100 mm calibration bar or shrinkage cross in your chosen filament and let it cool completely to room temperature on the build plate before measuring. If the 100.00 mm bar measures 99.65 mm, enter 99.65% in OrcaSlicer’s filament shrinkage field. Now all large spans and hole-to-hole distances are compensated automatically.
-
Eliminate the seam and first-layer lip inside mating bores
Add a 0.4 mm to 0.6 mm × 45° chamfer to the top and bottom edges of every hole and shaft in CAD, and keep slicer elephant-foot compensation around 0.15 mm. Next, check your slicer preview: a Z-seam bump inside a snug bearing bore acts like a 0.12 mm keyway obstruction. Use Scarf joint seams (calibrated for your filament) or paint the seam onto a non-mating relief groove.
-
Validate with a 10-minute “interface slice” coupon
Never print an entire 6-hour housing just to find out a bearing boss is 0.10 mm too tight. Use your slicer’s Cut tool (or CAD split tool) to isolate just the 5 mm section containing the critical hole, pin, or snap joint. Print that coupon in the exact orientation and layer height of the final part, test-fit the real hardware, and lock in your clearance.
Machining vs. Slicer Tweak Tip: For precision dowel pins or linear rods in PETG, ABS, or ASA, professional prototype shops often model the hole 0.10 mm undersized with 4 perimeter walls, then run a chucking reamer or swivel deburring tool through by hand at low speed (no heat!). That removes the Z-seam and layer ridges in five seconds, leaving a true coaxial bearing surface.
Applying the P.R.I.N.T. Method™ to dimensional fit
- P — Problem
- State the exact dimensional discrepancy in millimeters (e.g., “M5 bolt binds at first layer and center of vertical bore by 0.18 mm”).
- R — Requirements
- Define the joint class before slicing: permanent interference press, snug hand-push, free sliding, or articulated running clearance.
- I — Interfaces
- Isolate which surfaces actually touch—chamfer the entry edges, relocate Z-seams out of the bore, and account for horizontal bridge sag.
- N — Next-Best Materials & Methods
- Export as STEP, set filament shrinkage % for spans, and model explicit CAD clearance (or apply X-Y hole compensation for uneditable STLs).
- T — Test & Tune
- Print a cropped 10-minute interface coupon in the final print orientation, let it cool to room temperature, verify fit, and record the offset.
4-question interactive knowledge check
Test your diagnostic instincts before you change a single setting in your slicer:
1. Your 20 mm calibration cube measures 20.02 mm outside, but an 8.00 mm center hole measures 7.76 mm. Should you lower your Flow Ratio?
No. Your outer walls prove that average extrusion flow is healthy. Lowering flow to enlarge an internal bore will starve your infill and perimeters, weakening the part. Instead, enlarge the hole in CAD by ~0.24 mm or set X-Y Hole Compensation to +0.12 mm in your slicer.
2. A 150 mm replacement bracket printed in ASA has bolt holes that are 1.1 mm too close together. Should you use X-Y Hole Compensation?
No. X-Y Hole Compensation only changes the radius of each hole—it does not move the center-to-center distance between holes. Because ASA shrinks ~0.7% to 0.8% as it cools, you should set Filament Shrinkage Compensation (around 99.25%) so the entire 150 mm span scales proportionally.
3. Why does a metal dowel pin stop dead at the very bottom rim of a printed hole, even when the rest of the bore measures wide enough?
First-layer compression (elephant’s foot) or a top-surface ridge. The nozzle squishes the first layer wider for bed adhesion, creating an inward lip of 0.10–0.20 mm. Fix it by adding a 0.5 mm × 45° entry chamfer in CAD, enabling 0.15 mm elephant-foot compensation, or lightly sweeping the rim with a deburring blade.
4. You need a horizontal 6 mm axle hole to print cleanly without support material. What is the best CAD geometry adjustment?
Convert the top arch of the hole into a 45° truncated teardrop (polyhole). Because a round horizontal ceiling turns into an unsupported flat bridge at the very top, gravity pulls those strands down into the shaft path. A 45° self-supporting roof with a tiny flat bridge peak stays completely outside the 6 mm shaft envelope.
Frequently asked questions
What is a realistic dimensional tolerance for a desktop FDM 3D printer?
On a mechanically sound, calibrated FDM printer using dry filament and a 0.4 mm nozzle, a realistic dimensional tolerance is ±0.10 mm to ±0.15 mm on features under 50 mm, or roughly ±0.2% on larger spans once material shrinkage is compensated.
Does layer height affect how tightly 3D printed parts fit together?
Yes. Thicker layers (such as 0.28 mm) push out wider, more pronounced rounded side crests than thinner layers (such as 0.12 mm or 0.16 mm). Furthermore, when two 3D printed walls slide against each other in the Z direction, coarser layer ridges create higher mechanical friction.
Why is X-Y Hole Compensation a radius offset or diameter offset depending on the slicer?
Always verify how your specific slicer defines the math. In OrcaSlicer, Bambu Studio, and PrusaSlicer, X-Y Hole Compensation shifts each perimeter wall outward by the entered value—meaning a +0.10 mm setting increases total hole diameter by 0.20 mm. Test on a single coupon before committing to a batch run.
Should I measure a 3D print while it is still warm on the build plate?
Never take final dimensional measurements on a hot part. A 120 mm PETG or ABS component pulled off an 80 °C–100 °C bed is still thermally expanded and will continue contracting for 15 to 30 minutes until it reaches ambient room temperature.
If my part still has erratic ridges or inconsistent walls, what should I check first?
Compensation settings only work when your motion system and extrusion are repeatable. If walls vary wildly from print to print, check for loose belts, a worn nozzle, damp filament, or mechanical binding using our common 3D printing problems diagnostic guide.
Transparency note: Some tool links on this page (such as digital calipers, pin gauges, and deburring tools) are affiliate links. As an Amazon Associate, 3D Printing by Kevin may earn a small commission from qualifying purchases at no additional cost to you. I only recommend inspection and post-processing tools that earn their keep on a real workbench.

What clearance numbers work best on your machine?
Every printer, nozzle, and filament combination has its own personality. Drop a comment below and share your setup: