- Home
- Fix a print
- Parts the wrong size or holes too small: fixing dimensional accuracy
Parts the wrong size or holes too small: fixing dimensional accuracy
Why printed parts come out too big or too small and holes too tight, how to measure with calipers, and the compensation settings each slicer documents.
On this page (10 sections)
- What does it look like?
- Step 1: Rule out the first layer
- Step 2: Check flow
- Step 3: Measure with calipers
- Step 4: Correct shrinkage that grows with size
- Step 5: Correct a constant error on holes or outlines
- Step 6: Wall order and precise walls
- Step 7: Check belts and motion
- Step 8: Design in clearance
- A sensible order
Check the first layer and flow first, then measure a test print with calipers. Printer and slicer makers list material shrinkage as the part cools, a squished first layer (elephant's foot), over- or under-extrusion, and loose belts among the causes of parts that come out the wrong size or holes that come out too small. Measure higher up the part, once it has cooled. Then use your slicer's tools for what's left: shrinkage compensation for errors that grow with part size, and XY hole or contour compensation (Horizontal Expansion in Cura) for a fixed error on holes or outlines. Prusa says ABS's shrinkage factor "is usually somewhere around 1-2%," and for moving parts it suggests a clearance of "at least 0.3 mm" as an initial measurement. Calibrate per filament, and change one value at a time.
This guide is for anyone whose screws won't go into printed holes, whose pins and shafts feel too tight, or whose parts measure a few tenths of a millimetre off the design. It covers how to tell which kind of error you have, how to measure it, and the compensation settings Bambu Lab, Prusa, OrcaSlicer, UltiMaker Cura and Simplify3D document in their own software.
What does it look like?
Bambu Lab's guide to XY compensation lists the signs:
- "Screws or bolts do not fit into printed holes."
- "Pins or shafts feel too tight."
- "Assembled parts require sanding or force to fit."
- "Measured hole diameters are smaller than the designed values."
Simplify3D says accuracy matters most "if you are creating large assemblies or parts that need to precisely fit together," and lists "under or over-extrusion, thermal contraction, filament quality, and even the first layer nozzle alignment" among the factors that affect it.
Which kind of error do you have?
Where the error shows up, and how it changes with part size, points to the cause.
| What you measure | Points more toward |
|---|---|
| Only the bottom few layers are too wide, or holes near the bed are too small | First-layer squish (elephant's foot). See our elephant's foot guide |
| The part is too big all the way up, with rough or bulging tops | Flow set too high. See our over-extrusion guide |
| The part is too small, with gaps between lines | Flow set too low. See our under-extrusion guide |
| The same error whatever the part size (for example, always 0.1 mm over) | A constant error, which XY compensation can correct (Simplify3D) |
| An error that grows as parts get bigger | Thermal contraction (shrinkage), which scaling corrects (Simplify3D) |
| Circles printed as ovals | Belt tension (Bambu Lab, Prusa) |
Step 1: Rule out the first layer
Simplify3D warns that if the nozzle is too high or too low for the first layer, "it can drastically affect the next 10-20 layers of the part." Its fix for measuring: print "a model with 50-100 layers and then only measuring the top 20 or so layers," which "minimizes the impact of nozzle positioning."
If only the base is oversized, that's elephant's foot. Bambu Lab lists it, from "excessive first-layer squish," among the issues to "check and correct" before using XY compensation. Our elephant's foot guide covers Z offset, bed temperature and elephant foot compensation.
Step 2: Check flow
Simplify3D says the next thing to verify is the extrusion multiplier, which "affects the flow rate for the entire print":
- Too low: "gaps between perimeters, holes in your top surfaces, and parts that are smaller than their intended size."
- Too high: "top layers that tend to bulge upwards and parts that are larger than intended."
Simplify3D says to verify the extrusion multiplier is calibrated before moving on to size compensation. Our over-extrusion guide walks through flow calibration in Bambu Studio, PrusaSlicer, OrcaSlicer, Cura and Simplify3D.
Bambu Lab adds a few more things to fix before compensating: "moist filament causing inconsistent extrusion" and "flow dynamics not properly tuned."
Step 3: Measure with calipers
A test print and a caliper turn "too tight" into a number. The makers' advice on measuring well:
- Use the right tool. Bambu Lab's elephant foot guide asks for "a digital caliper or micrometer with resolution of at least 0.01 mm." Prusa warns that "cheap digital calipers may not be accurate enough to make reliable measurements of a single perimeter wall." If you don't own a caliper yet, our 3D printing tools shortlist includes one.
- Let it cool. Bambu's shrinkage test says to measure the cube "after it cools to room temperature."
- Measure the middle of each side, not the corners. Bambu says the corners "may be affected by Flow Dynamics."
- Measure away from the base. Measure higher up the part, as Simplify3D describes in Step 1. On the first layer itself, Bambu says to let the jaws "lightly touch," because "too much pressure can deform the first layer and give a reading that is too small."
- Print the test with your real settings. Bambu says to use "the same Process profile and Filament you plan to use for your final part," and that hole calibration "is specific to each filament and should be repeated when changing materials."
Bambu's shrinkage test uses a simple cube, for example 20 mm or 100 mm on a side. Printing two sizes helps, as Simplify3D's example shows: if the error is the same on both, it's a constant offset. If it's bigger on the large part, it's shrinkage.
Step 4: Correct shrinkage that grows with size
Bambu Lab explains that filament shrinks as it cools, "a physical property called thermal contraction," and that "the finished part [is] smaller overall, with the effect being most noticeable along the X and Y axes." It says "different filaments shrink by different amounts." Prusa says ABS parts "tend to shrink slightly after cooling down," and that its "shrinkage factor ... is usually somewhere around 1-2%." Bambu's common print-quality guide lists "ABS, ASA, PC, POM, PP, PA, and PA-CF" as "more likely to shrink."
Simplify3D's example: a part 0.1 mm too small at 20 mm wide and 0.5 mm too small at 100 mm points to thermal contraction. It calculates the percentage (0.1 / 20 = 0.5%) and scales the model to 100.5%.
Each slicer has a way to do this:
| Slicer | Setting | How you enter it |
|---|---|---|
| Bambu Studio | Filament Settings, Basic Information, Shrinkage | Measured ÷ designed × 100%. Default 100% (no scaling). Bambu's example: an 18 mm result on a 20 mm cube means 90% |
| OrcaSlicer | Filament settings, Shrinkage (XY), Advanced mode. There is also a Shrinkage (Z) | "94% if you measure 94mm instead of 100mm." "Only the filament used for the perimeter is taken into account" |
| PrusaSlicer | Filament Settings, Advanced, Shrinkage compensation XY (2.9.6) | The shrink itself: "if you measured 99mm instead of 100mm, enter 1%." Default 0% |
| Cura | Material, Scaling Factor Shrinkage Compensation, with separate horizontal and vertical versions | A scale factor. Default 100% in Cura's base definition |
| Simplify3D | Model scale | Scale the model, for example to 100.5%. An Import Action can apply it automatically |
Bambu Lab also says fiber-reinforced filaments, such as carbon or glass fiber blends, are "an effective way to reduce shrinkage," because the fibers "limit the shrinkage of the base material."
Step 5: Correct a constant error on holes or outlines
When the error is the same whatever the size, use XY compensation. Simplify3D says this setting "works best when the dimensional error is consistent, even when printing models of different sizes."
| Slicer | Setting | What the maker says |
|---|---|---|
| Bambu Studio | Process, Quality, Precision: X-Y hole compensation and X-Y contour compensation | Hole compensation "only affects holes and does not change the outer size of the model." Contour compensation changes "the overall XY size while keeping hole sizes unchanged." Both default to 0 in Bambu Studio's source |
| OrcaSlicer | Quality, Precision: X-Y hole compensation and X-Y contour compensation | "Positive values make holes bigger, negative values make holes smaller." Same for contours. Used "to adjust sizes slightly when the objects have assembling issues" |
| PrusaSlicer | Print Settings, Advanced, Slicing: XY Size Compensation (Expert mode) | "The object will be grown/shrunk in the XY plane by the configured value (negative = inwards, positive = outwards). This might be useful for fine-tuning hole sizes." Default 0 in 2.9.6 |
| Cura | Walls: Horizontal Expansion and Hole Horizontal Expansion | Horizontal Expansion is applied "to all polygons in each layer." Hole Horizontal Expansion is applied "to all holes": "Positive values increase the size of the holes, negative values reduce the size of the holes." Both default to 0 |
| Simplify3D | Process Settings, Other tab: Horizontal size compensation | "Setting this value to -0.1mm will shrink your model by 0.1mm in the X and Y directions" |
Read the sign convention carefully. Cura applies Horizontal Expansion to all polygons, and its own description says "positive values can compensate for too big holes; negative values can compensate for too small holes." A positive value there makes holes smaller. Hole Horizontal Expansion works the other way: positive makes holes bigger. In Cura you can also limit the hole setting to small holes with Hole Horizontal Expansion Max Diameter, which applies it "gradually" so "small holes are expanded more."
Bambu Lab's hole calibration, in short
- Print a test model with several known hole sizes. Bambu's example uses an M6 screw and says "larger screws produce more accurate calibration results."
- Set X-Y hole compensation to 0 and print.
- Find the hole the screw fits snugly, with no wobble, and note that hole's value. In Bambu's example it was +0.15.
- Enter the value in Process, Quality, Precision, and save the process profile under a new name. Bambu says "the hole diameter will increase by twice the compensation value."
- Reprint and test. If needed, add the new correction to the old value and repeat.
For outer contours, its method fits a printed test part inside the centre of an original Bambu Lab reusable spool and sets compensation to (55 − measured value) ÷ 2.
What are the limits of hole compensation?
- Closed holes only. Bambu says X-Y hole compensation "only applies to closed paths," and that on a model with side openings, "noticeable layer separation will occur at the hole locations."
- Very small holes. Bambu says "holes below 1 mm can be challenging to tune," and lists hole diameters close to the nozzle size as a related issue.
- Seams. Bambu lists the seam among things that "can affect hole precision."
OrcaSlicer also has a Tolerance Test under Add Handy Model, with hexagonal holes from 0.0 to 0.4 mm of tolerance. OrcaSlicer says to measure the holes and the tester with calipers and tune X-Y hole and contour compensation from the results. It also offers Polyholes, which print a circular hole "as a polygon with a reduced number of flat sides" to "produce openings that more closely match the intended diameter."
Bambu Studio's automatic circle compensation
Bambu Studio has an Auto circle contour-hole compensation option under Process, Quality. Bambu says it works only on "complete circular holes/shafts on a horizontal plane, with a diameter size within 50mm," and is "only compatible with some Bambu Official filaments." Its shrinkage guide says the feature "is mainly optimized for the H2D and certain supported filaments," and that on other printers it "uses general compensation settings." Bambu also notes that moist filament gives a tighter fit and dry filament a looser one, and suggests a User Customized Offset in 0.02 mm steps to fine-tune.
Step 6: Wall order and precise walls
Several makers describe the order of perimeters as affecting accuracy:
- PrusaSlicer: External perimeters first "may help with dimensional accuracy since the outer perimeter is laid down first and any extra filament extruded when printing following perimeters is pressed back away from the outer wall." Prusa adds that "the surface may be slightly less smooth." It's in Print Settings, Layers and perimeters (Expert mode), and is off by default in 2.9.6.
- Cura: Wall Ordering says "printing outer walls earlier helps with dimensional accuracy," while printing them later lets them "stack better when overhangs are printed." The base default is Inside To Outside.
- OrcaSlicer: Inner/Outer/Inner is recommended "for the best external surface finish and dimensional accuracy," and "requires a minimum of 3 walls to be effective." OrcaSlicer's Precise wall setting, aimed at the Inner/Outer wall order, sets the overlap between the outer wall and the next wall to zero, which OrcaSlicer says improves "size accuracy and layer consistency."
Cura and OrcaSlicer both say printing the outer wall first costs overhang quality, so weigh that against the part's shape. Not every maker agrees on accuracy, either: Polymaker's shell walls guide says printing outer walls first "ensures cleaner surface finishes, while inner-first prioritizes dimensional accuracy." Test both orders on your own part.
Step 7: Check belts and motion
If circles come out oval, or errors differ between the X and Y axes, look at the motion system.
- Bambu Lab (X1 and P1 series): "A loose belt can cause lots of issues in 3D printing, such as circles looking like ovals or other dimensional issues in printed parts." Bambu's procedure for these models uses the spring-loaded tensioner, and it says to recalibrate the printer afterwards.
- Prusa (MK4/S, MK3.9/S, MK3.5/S, MK3/S/+): loose belts can cause layer shifting, ghosting, or "an irregular shape instead of a perfect circle when printing a cylinder." Prusa's guide covers checking and adjusting tension for these models.
- Polymaker: if you replace a motor pulley with one that has the wrong number of teeth, "your parts will all be to very incorrect dimensions or cause further layer shifts."
A Prusa support reply on XY Size Compensation makes the same point from the other direction: "The print should have only a small deviation from the model, if the change is too large then you need to check your axes." Prusa says the setting "is meant to be used only for small adjustments (like the size of threads or holes), not to completely fix your model size." For belt and pulley checks, see our layer shifting guide, and follow your printer maker's procedure for your model.
Step 8: Design in clearance
Prusa's design guide says "you will probably not be able to slot together two parts with zero-tolerance dimensions," and that "there's no single 'universal' value." For moving parts, Prusa suggests "an initial good measurement ... is at least 0.3 mm." Bambu Lab lists "lack of chamfers or lead-in features on holes" among the things that affect fit.
Bambu Lab says warping is "usually caused by shrinkage during printing and insufficient adhesion to the build plate." If parts also lift or curl at the corners, our warping guide covers that.
A sensible order
- Measure which way the error goes: bottom only, whole part, holes only, or growing with size.
- Fix the first layer if only the base is oversized.
- Calibrate flow for the filament.
- Print test parts at two sizes and measure them with calipers once they've cooled.
- Set shrinkage compensation if the error grows with size.
- Set XY hole or contour compensation (Horizontal Expansion in Cura) for what's left.
- If circles are oval or one axis is off, check belts and pulleys.
- Save the result to a profile for that filament, and repeat for each new material.
Change one setting per print and write down the result.
Print problems: what to check before you buy ↗Sources
- Dimensional Accuracy (Print Quality Guide), Simplify3D
- XY Hole / Contour compensation, Bambu Lab
- 3D prints shrinkage, Bambu Lab
- Auto circle contour-hole compensation, Bambu Lab
- Elephant foot (Bambu Studio parameter), Bambu Lab
- Belt tension (X1 and P1 series), Bambu Lab
- Common print quality problems, Bambu Lab
- Bambu Studio print settings source (PrintConfig.cpp), Bambu Lab (Bambu Studio project)
- Precision (print settings), OrcaSlicer project wiki
- Filament Tolerance Calibration, OrcaSlicer project wiki
- Filament basic information (Shrinkage XY), OrcaSlicer project wiki
- Wall and surfaces (Walls printing order), OrcaSlicer project wiki
- PrusaSlicer 2.9.6 print settings source (PrintConfig.cpp), Prusa Research (PrusaSlicer project)
- Per-model settings (with Prusa support reply on XY Size Compensation), Prusa Research
- Layers and perimeters, Prusa Research
- Modeling with 3D printing in mind, Prusa Research
- ABS material guide, Prusa Research
- Extrusion multiplier calibration, Prusa Research
- Adjusting belt tension (MK4/S, MK3.9/S, MK3.5/S, MK3/S/+), Prusa Research
- Cura printer setting definitions (fdmprinter.def.json), UltiMaker Cura project
- Layer Shifts, Polymaker
- Shell Walls, Polymaker
This page is research-based: we have not tested the products or methods ourselves. It draws on the manufacturer documentation and sources listed. Exact settings and fit always defer to your printer and filament makers.
Keep reading

Elephant's foot: why the bottom of a print flares out, and how to fix it
Why the first layers of a print bulge outward, and how to check Z offset, bed temperature, and slicer compensation one change at a time.

Over-extrusion: rough tops, blobs and oversized parts
Why your printer lays down too much plastic, how to tell it from a squished first layer, and how to calibrate flow in Bambu Studio, PrusaSlicer, Orca and Cura.

Under-extrusion troubleshooting: gaps, thin walls, and weak layers
Find why your printer lays down too little plastic: check filament, temperature, flow and speed settings, and the feed path before buying parts.
