# Why your 3D print comes out the wrong size (and how to fix the fit)

Why FDM prints land a fraction off, how much dimensional error is normal, how to calibrate flow and XY compensation, and how to fix a too-tight part with a slider, not a remodel.

---

You modeled a 20 mm cube, printed it, put the calipers on it, and it reads 19.7 mm.
Or you designed a bracket to slot over a 40 mm rail and the printed slot is a hair too
tight to go on. The model is right. The printer is not. That gap between the number you
typed and the number that comes off the bed is dimensional accuracy, and it is the
single most common reason a functional print "does not fit" even though the geometry is
perfect.

The good news: it is predictable, it is small, and once you know where it comes from you
can either calibrate it out or just compensate for it on the one dimension that matters.
This post covers why FDM prints land off-size, how much error is normal, the two or three
calibrations that actually move the needle, and the fastest fix of all when you only need
one dimension to be right.

## Why does my 3D print come out a different size than the model?

Because the plastic changes size between the nozzle and the finished part, and your
machine has its own small mechanical errors on top of that. Three things dominate, and
they pull in different directions:

- **Shrinkage.** Molten plastic is bigger than cold plastic. As each layer cools it
  contracts, so the finished part ends up slightly smaller than modeled. How much depends
  on the material: PLA shrinks the least, PETG and especially ABS shrink more.
- **Over-extrusion and flow.** If your flow rate is a few percent high, every wall is a
  touch thicker than intended. That makes outside dimensions grow and, more noticeably,
  makes holes and slots shrink, because the extra plastic bulges inward.
- **Motion and mechanical error.** Belt tension, an off steps-per-mm value, or backlash
  can stretch or squeeze one axis. This is usually the smallest of the three on a modern
  printer, and the one you should suspect last.

The reason a cube can measure spot-on while a hole in the same print comes out 0.3 mm
undersized is that these effects hit outside edges and inside edges differently. Keep that
in mind: "my print is the wrong size" almost always means "my holes are too small," not
"my whole part is off."

## How much dimensional error is normal on an FDM printer?

For a typical desktop FDM printer, expect roughly plus or minus 0.1 to 0.3 mm on any
given dimension. A well-tuned machine printing PLA lands near the tight end of that; an
entry-level printer, a shrinky material, or a small round hole pushes toward the loose
end.

| Setup | Typical accuracy | What to expect |
|---|---|---|
| Well-tuned printer, PLA | about plus or minus 0.1 mm | outside dims close, holes slightly small |
| Mid-range printer, PLA | about plus or minus 0.15 to 0.2 mm | test-fit anything that mates |
| Entry-level printer or PETG/ABS | about plus or minus 0.2 to 0.3 mm | expect to compensate, print a coupon |

That is not a lot in absolute terms, but 0.2 mm is the whole difference between a slot
that presses on and one that will not start. This is exactly why mating parts get a
deliberate clearance gap rather than a nominal fit. If you are sizing two parts to go
together, our guide to
[3D printing tolerances and parts that fit](/blog/3d-printing-tolerances-parts-that-fit)
has the running-fit and press-fit numbers to design in from the start.

## Why are my holes too small but the outside dimensions are fine?

Because the nozzle over-extrudes slightly on tight inside curves, so printed holes come
out undersized while flat outside faces stay close. When the print head traces a small
circle, it lays plastic on the inside of the curve, and that plastic squeezes inward into
the bore. A 5 mm modeled hole can easily measure 4.7 mm.

You have two clean ways to deal with it:

1. **Design the hole oversized.** Model clearance holes a few tenths larger than the
   nominal so they still fit after the shrink. This is the standard move for bolt and
   screw holes; our [bolt and screw hole guide](/blog/bolt-and-screw-holes-3d-printing)
   lists the "model this" diameters for M3 to M5 that already build in the FDM undersize.
2. **Turn on hole compensation in your slicer.** OrcaSlicer and Bambu Studio call it "X-Y
   hole compensation" (and "X-Y contour compensation" for outside edges). A positive hole
   value expands every hole a set amount to cancel the shrink, so you do not have to fix
   it per part.

Whichever you use, measure a real printed hole with calipers before you trust a number.
If you are not sure how to read a fit off calipers, our guide to
[measuring with calipers for 3D printing](/blog/measure-with-calipers-for-3d-printing)
walks through it.

## What is elephant's foot, and how do I stop it?

Elephant's foot is the bulge on the first few layers where the part flares wider than the
rest, because the nozzle sits slightly too close to the bed and squishes those layers out.
It makes the bottom of a part measure larger than the top, and it is a classic reason a
part that should slide into a slot binds right at the base.

Two fixes, use both:

- **Level and raise the first layer.** Dial in your Z-offset so the first layer is stuck
  down but not smeared flat. Over-squish is the root cause.
- **Chamfer the bottom edges by 0.4 to 0.6 mm.** Give the squished-out plastic somewhere
  to go. A small bottom chamfer on any part that has to fit into or onto something is
  almost always worth it, and it doubles as a lead-in.

Elephant's foot is a base-only error, so if a part measures correct up top but tight at
the bottom, this is your culprit, not shrinkage.

## How do I calibrate my printer for dimensional accuracy?

Start with a test print, change one thing at a time, and measure. The point of
calibration is to make the machine right so you stop compensating on every model.

1. **Print a 20 mm calibration cube** at normal speed in the filament you actually use.
   Measure X, Y, and Z with calipers. You are aiming for 20 mm plus or minus about 0.1 mm.
2. **Fix flow first, not steps-per-mm.** If walls are consistently thick and holes are
   tight, your flow (extrusion multiplier) is likely a few percent high. Nudge it down a
   couple of percent and reprint. Resist changing E-steps off a single cube: flow and
   filament are the usual suspects, and a bad E-steps change makes everything worse.
3. **Use X-Y size compensation for the leftover.** After flow is close, a small stubborn
   offset (say every dimension 0.15 mm large) is cleanest to remove with your slicer's X-Y
   compensation rather than chasing motor calibration.
4. **Only then look at motion.** If one axis is off and the other is perfect, check belt
   tension and that axis's steps-per-mm. Uniform error is a material or flow problem;
   one-axis error is mechanical.

| Symptom | Most likely cause | First fix |
|---|---|---|
| Whole part uniformly small | shrinkage or low flow | raise flow slightly, or scale-compensate |
| Holes and slots too small | over-extrusion on curves | X-Y hole compensation or oversize the hole |
| Bottom wider than top | elephant's foot | lower first-layer squish, chamfer the base |
| One axis off, other fine | belt or steps-per-mm | tension the belt, check that axis calibration |

Calibrate once and most of your prints land right. But there is always the one part where
you just need this dimension to fit, today, without a calibration session.

<TryMeshra />

## How do I fix a too-tight part without recalibrating everything?

Change the one dimension that is wrong and reprint that part. If your printer runs holes
0.3 mm small, you do not need a perfect machine to get a good bracket. You need the bracket's
bore modeled 0.3 mm larger. The trouble is that most parts you download are frozen meshes:
to change one number you either re-slice at a weird scale factor (which throws off every
other dimension) or you go back into CAD you may not have.

This is where designing the part parametrically pays for itself. In [Meshra](/builder) you
describe the part in plain English and it writes real parametric CAD (CadQuery on the
OpenCascade kernel) and builds an exact solid, not a triangle blob. Every meaningful
dimension it generates becomes a slider in the parameter drawer. So when your test print
comes off 0.3 mm tight on the bore, you drag the bore slider up 0.3 mm and re-export. The
same code re-runs deterministically with the new number, everything else stays exactly
where it was, there is no AI call involved, and it is instant and free on every plan.

That is the honest advantage over "scale the whole model to 100.5 percent" hacks: scaling
distorts every feature to fix one, while a slider moves only the dimension you are
compensating. You can build a small press-fit bushing or a 20 mm test coupon, print it,
measure it, and dial the exact offset your printer needs into that one parameter, then
reuse the corrected part.

Meshra also flags trouble before you slice. Any slider it recognizes as a clearance or fit
dimension gets a small info badge in the parameter drawer that links straight to the
tolerances guide, so the number and its explanation sit next to the control. The
printability summary reads the loaded geometry and flags a wall thin enough to be a
printing problem, and a "Watertight geometry" badge confirms the solid has no holes or
gaps that would make a slicer choke. Those are geometry checks, not a promise your specific
printer is calibrated, so they do not replace measuring a coupon. When the fit is right,
export STL or 3MF for your slicer, or STEP if you want to open it in another CAD tool
later, all in millimeters and clearly labeled so nothing guesses the wrong unit.

## FAQ

### How accurate are FDM 3D printers, really?

A typical desktop FDM printer holds roughly plus or minus 0.1 to 0.3 mm per dimension. A
well-calibrated machine in PLA lands near plus or minus 0.1 mm; entry-level printers and
higher-shrinkage materials like PETG and ABS run looser. Resin (SLA/MSLA) printers are
generally tighter, but for functional FDM parts, design with a fit gap rather than
assuming an exact number.

### Should I scale my model up to fix a small print?

Only as a last resort, and only for a part where every dimension needs the same
correction. Uniform scaling distorts holes, gaps, and mating features all at once, so a
part that fit better in one spot now fits worse in another. It is almost always better to
fix flow or use X-Y compensation for a machine-wide offset, or to adjust the single
dimension that is off if the part is parametric.

### Why is my hole smaller than I designed it?

Over-extrusion on tight inside curves. The nozzle lays extra plastic on the inside of a
small circle and it bulges into the bore, so a printed hole reads undersized. Turn on X-Y
hole compensation in your slicer, or model the hole a few tenths larger than nominal, and
measure a real printed hole before committing to a batch.

### Do different filaments print to different sizes?

Yes. Shrinkage differs by material (PLA least, PETG and ABS more), and filament diameter
consistency and moisture also affect flow and therefore size. Recalibrate flow, and dry
your filament, when you switch to a new spool or material, and re-check a test cube.

## Where to start

If you have a part that fits too tight, do not fight your whole printer. Print one small
test coupon, measure it with calipers, and note the offset your machine actually produces.
Then open the [Meshra builder](/builder), describe the part you need with that dimension
called out, and tune it on a slider after a test print instead of remodeling. The
[template gallery](/templates) has brackets, mounts, and enclosures with fit dimensions
already exposed if you would rather start from a working part than a blank prompt. See
[pricing](/pricing) for current generation allowances, or
[create an account](/sign-up) to save your part and keep dialing in the fit after the
first print.

A print that comes out the wrong size is not a broken printer, it is a known, small,
predictable offset. Measure it once, calibrate the machine-wide part of it out, and keep
the one number you are unsure of on a slider so a single test print corrects the fit in
seconds.
