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 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:
- 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 lists the "model this" diameters for M3 to M5 that already build in the FDM undersize.
- 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 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.
- 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.
- 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.
- 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.
- 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.
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 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, 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 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 for current generation allowances, or create an account 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.



