Shrinkage compensation calculator: scale factor by material

Enter a shrinkage percentage or the sizes of a printed test part. You get the scale factor for X, Y and Z, the number each slicer expects, and the size to draw in CAD.

What do you have

Measuring your own test part beats any table.

Material shrinkage

A material fills in a starting value. Type your own if you measured it.

%
%

Negative if the part grew in height.

Annealing (optional)

Extra change you measured after annealing a test part. Leave at 0 if you don't anneal.

%
%

Usually negative: parts often grow in Z.

Target size

The size the finished part must have.

mm

Scale in X and Y

–

Type this into the slicer's scale field, or scale the model in CAD.

Scale in Z

–

Total shrinkage

–

OrcaSlicer and Bambu Studio shrinkage field

–

100% means no change. Bambu Studio has an XY field only.

PrusaSlicer shrinkage compensation

–

0% means no change.

Draw the target dimension at

–

The formula

Shrinkage is the fraction of a dimension lost as the plastic cools:

shrinkage s    = (designed - measured) / designed
scale factor k = 1 / (1 - s)
model size     = target size x k

A part designed at 100 mm that measures 99.37 mm has shrunk 0.63%. The scale factor is 1 / (1 - 0.0063) = 1.00634, so you scale the model to 100.63%. When a part shrinks while printing and again while annealing, the steps multiply: total s = 1 - (1 - s1)(1 - s2). The calculator does this when you fill in the annealing fields.

Use one method at a time. A shrinkage value in the filament profile plus a scaled model compensates the part twice.

Worked example with the default values

The defaults are the PLA preset (0.49% in X and Y, 0.80% in Z), no annealing, and a 25 mm target.

  1. XY scale: 1 / (1 - 0.0049) = 1.00492, shown as 100.49%.
  2. Z scale: 1 / (1 - 0.0080) = 1.00806, shown as 100.81%.
  3. OrcaSlicer and Bambu Studio field: 100 - 0.49 = 99.51% (XY) and 99.20% (Z).
  4. PrusaSlicer field: 0.49% (XY) and 0.80% (Z).
  5. Draw a 25 mm feature at 25.12 mm if it lies in XY, or 25.2 mm if it runs in Z.

In measure mode the defaults are a 100 mm span printed at 99.37 mm and a 20 mm height printed at 19.84 mm: 0.63% and 0.80% shrinkage, scales of 100.63% and 100.81%.

Why do 3D prints come out smaller than the model?

Plastic leaves the nozzle hot and contracts as it cools to room temperature, so the finished part ends up slightly smaller than the file. Bambu Lab’s wiki calls this thermal contraction and says it shows most in X and Y. In the printed-part study cited below, PLA, PETG and ABS shrank less than 1%.

Shrinkage in 3D printing is not the only reason a part measures small. Rule these out first:

  • Under-extrusion or low flow. Thin walls make every outer dimension short by the same distance.
  • Axis calibration. Wrong steps per mm scale everything on that axis, whatever the filament.
  • Measuring too early. Bambu Lab’s test procedure says to measure once the part is at room temperature.

A fixed error (0.2 mm short on a small part and a large one) points at flow or contour compensation. An error that grows with size (0.3 mm on 50 mm, 0.6 mm on 100 mm) is shrinkage, and a percentage scale fixes it.

What is shrinkage compensation in 3D printing?

Shrinkage compensation means printing the model slightly larger so it cools down to the size you designed. You scale by 1 / (1 - s), where s is the measured shrinkage. OrcaSlicer, Bambu Studio and PrusaSlicer can store that value in a filament profile and apply it automatically when slicing.

Shrinkage compensation settings in OrcaSlicer and Bambu Studio

OrcaSlicer has two filament fields, Shrinkage (XY) and Shrinkage (Z). The OrcaSlicer wiki defines the value as the cooled size as a percentage of the design: “94% if you measure 94mm instead of 100mm”. The default of 100% means no change.

OrcaSlicer’s source scales by 100 divided by the value, the same 1 / (1 - s). Only the filament printing the perimeters counts. If the filaments in a print carry different values, OrcaSlicer warns and ignores shrinkage.

Bambu Studio has one Shrinkage field under Filament settings, Basic information, with the same meaning. It scales X and Y only, so Z corrections go in the object’s scale tool. Its source applies the same 100 / value scale to each layer outline and skips color-painted multi-filament models.

Shrinkage compensation in PrusaSlicer

PrusaSlicer (checked in version 2.9.2) has Shrinkage compensation XY and Shrinkage compensation Z in the filament settings, shown in Advanced and Expert mode. Here the value is the shrinkage itself: “if you measured 99mm instead of 100mm, enter 1%”. The source scales by 100 / (100 - value), accepts -10% to 10%, and skips compensation when the filaments in a print disagree.

Measured 99.37 mm on 100 mm Value to enter
OrcaSlicer Shrinkage (XY) 99.37%
Bambu Studio Shrinkage 99.37%
PrusaSlicer Shrinkage compensation XY 0.63%
Model scale tool 100.63%

How much do PLA, PETG, ABS, ASA, nylon and PC shrink?

In one printed-part study, PLA, PETG and ABS all shrank between 0.35% and 0.76% in X and Y. Resin data sheets give injection-molding shrinkage of about 0.4% for PLA, up to 0.7% for ABS and PC, 0.4 to 0.7% for ASA and 0.9% for nylon 6. Your printer and settings will differ.

Printed-part data

Weiser et al. at Binghamton University (2021) printed three part designs in each material on a QIDI X-One2 and measured them with digital calipers. Average shrinkage:

Material X Y Z
PLA 0.63% 0.35% 0.80%
PETG 0.76% 0.54% 0.73%
ABS 0.59% 0.69% -0.92% (grew)

The PLA, PETG and ABS presets use the mean of X and Y plus the Z column. That is one printer, one set of settings and a few parts, so treat the presets as a first guess.

Injection-molding data from resin makers

For ASA, nylon and PC no comparable printed-part study turned up, so those presets use resin data sheets. These describe injection molding, where melt is packed into a steel mold under pressure. The figures show how a polymer family behaves. They do not predict a printed part, and they have no Z value, so the presets copy XY into Z.

Material Molding shrinkage Source grade
PLA 0.4% (0.004 in/in, plus or minus 0.001) NatureWorks Ingeo 3052D
ABS usually no more than 0.7% INEOS Styrolution Terluran GP-35
ASA usually 0.4 to 0.7% INEOS Styrolution Luran S 777K
PC 0.7% along and across flow Covestro Makrolon 2405
Nylon 6 (PA6) 0.9% along and across flow, dry BASF Ultramid B3S
PA6, 30% glass fiber 0.2% along flow, 0.7% across BASF Ultramid B3EG6

PETG has no row: the Eastman copolyester data sheet checked for this page does not state a figure.

Which filaments shrink the most

In the molding data, unfilled nylon shrinks the most and PLA the least. The ABS shrinkage rate sits between them: at or below 0.7% molded and 0.59 to 0.69% printed. Its Z grew in the printed study. The printed PLA and ABS numbers are close enough that your own settings can reorder them.

Bambu Lab’s wiki adds that carbon and glass fiber filled filaments shrink less because the fibers restrain the base polymer. The glass-filled PA6 row shows the limit: 0.2% along the fibers, but 0.7% across them.

Crystalline vs amorphous polymer shrinkage

Semi-crystalline polymers such as nylon pack their chains into ordered regions as they cool, which removes extra volume. Amorphous polymers (ABS, ASA, PC, PETG) only contract thermally.

BASF calls Ultramid B3S “finely crystalline”, and it out-shrinks the amorphous grades above. Polymaker’s annealing guide groups ABS, ASA and PETG as amorphous. PLA can go either way, which matters for annealing.

How do you measure a filament’s shrinkage with a test part?

Print a simple block around 100 mm long and 20 mm tall, let it cool to room temperature, and measure it with digital calipers. Divide the shortfall by the designed length for each axis. Enter the designed and measured sizes in measure mode to get the shrinkage and each slicer’s value.

  1. Reset compensation. Set the filament’s shrinkage to 100% (OrcaSlicer, Bambu Studio) or 0% (PrusaSlicer), with the model at 100% scale.
  2. Model the test part. Use whole-number sizes. Bambu Lab’s wiki suggests a 20 mm or 100 mm cube from the slicer’s primitives. Longer spans are more precise: 0.02 mm of caliper error is 0.1% on 20 mm but 0.02% on 100 mm.
  3. Print with your real settings. Same filament, temperatures, enclosure and cooling as your real parts.
  4. Measure at room temperature, mid-face rather than at corners, X and Y separately. The Binghamton data shows they can differ.
  5. Measure Z without the brim, and ignore a bulging first layer.
  6. Apply and repeat. Put the result in the slicer and print again. Bambu Lab’s example went from 18.5 mm to 19.7 mm on a 20 mm cube after one correction.

Record the brand and color with the value; one PLA profile does not fit every spool.

How do you calculate the scale factor to compensate for shrinkage?

Divide 1 by one minus the shrinkage: scale = 1 / (1 - s). For 0.7% shrinkage that is 1 / 0.993 = 1.00705, so you scale to about 100.7%. Adding the percentage gets close at small values, but only the exact formula stays correct at larger ones.

Shrinkage Adding the percentage 1 / (1 - s) Error on 200 mm
0.5% 100.50% 100.503% 0.005 mm
1.5% 101.50% 101.523% 0.05 mm
5% 105.00% 105.263% 0.5 mm

How to scale a model for ABS shrinkage

The ABS preset is 0.64% in X and Y and -0.92% in Z. The XY scale is 1 / (1 - 0.0064) = 100.64%. The Z scale is 1 / (1 + 0.0092) = 99.09%, below 100% because the study’s parts grew in height.

Enter 99.36% (XY) and 100.92% (Z) in OrcaSlicer, or 0.64% and -0.92% in PrusaSlicer. In Bambu Studio, enter 99.36% and scale Z to 99.09% by hand.

Why do holes print undersized even when outer dimensions are right?

Holes shrink for reasons a percentage scale cannot fix. The STL stores a circle as a polygon with its corners on the circle and its flat sides inside. On tight curves the extruded line cuts corners toward the center, and any surplus plastic narrows the hole further. The fix is hole compensation.

nophead’s polyholes article gives the geometry: the flats of an n-sided polygon sit at cos(π / n) of the radius. A 5 mm hole exported with 32 segments measures 5 x cos(π / 32) = 4.976 mm across the flats; with 16 segments, 4.904 mm. Finer export resolution helps. So does the polyhole trick: a polygon with few sides whose flats are pushed out to the true radius.

Slicer settings for holes:

  • OrcaSlicer and Bambu Studio have X-Y hole compensation, a fixed distance added to or taken from holes, and X-Y contour compensation for outer walls. Positive values make holes bigger, per the OrcaSlicer wiki. OrcaSlicer can also print holes as polyholes.
  • Bambu Studio’s auto circle contour-hole compensation targets round holes up to 50 mm. Bambu Lab’s wiki says it is tuned mainly for the H2D and certain filaments.
  • Bambu Lab’s wiki says its shrinkage setting does not fix internal features and points to hole compensation instead.

Scaling barely moves a small hole. At 0.49% shrinkage a 5 mm hole grows by 0.025 mm, about the size of the 32-segment polygon error alone.

Does shrinkage differ between XY and Z?

Yes. Printed parts shrink differently in X and Y than in Z, and sometimes grow in Z. In the Binghamton study ABS shrank about 0.6% in X and Y but grew 0.92% in Z. PLA and PETG shrank on all three axes, by different amounts. Measure and compensate each axis separately.

XY vs Z shrinkage compensation differs because of how the part is built. In X and Y, each hot line cools against its neighbor, so contraction adds up along the line. Z is a stack of layers whose height is set by the nozzle stepping up. Elephant’s foot, first-layer squish and layer height move the Z reading as much as the material.

That is why OrcaSlicer and PrusaSlicer have separate XY and Z fields.

Does annealing shrink printed parts?

Yes. Annealing usually shrinks parts in X and Y and can grow them in Z. Prusa’s annealing tests found PLA, PETG, ABS and ASA samples shrank most along their longest dimension and extended in Z. CNC Kitchen described PLA parts losing about 10% in XY and gaining about 10% in Z at 100 °C.

The same Prusa tests rated ABS and ASA “unsuitable for annealing” because they warped without a useful gain, so annealing math mostly matters for PLA, PETG, nylon and PC.

PLA

Printed PLA cools too fast to crystallize much. Prusa’s article describes as-printed parts as amorphous; heat lets the chains reorder, which stiffens the part and changes its size. CNC Kitchen annealed Formfutura Premium PLA at 100 °C for 45 minutes and described a 50 mm part coming out near 45 mm in XY and near 55 mm in Z.

PETG and PETG-CF

Stojković et al. (Materials, 2023) annealed PLA, PETG and carbon fiber PETG at 60 to 100 °C for 30 to 90 minutes. The carbon fiber PETG changed least of the three, which fits the fiber-restraint effect above.

Nylon (PA) and polycarbonate (PC)

Polymaker’s wiki gives schedules, not shrinkage figures: 80 to 100 °C for 6 to 16 hours for its nylons, and at least 2 hours at 90 °C for PC. It says annealing can “slightly shrink the part dimensions” of nylon as it dries, and its moisture conditioning tests found most nylon parts then grew past their original size. Polymaker says it cannot give a standard figure, because the change depends on geometry, size and infill.

There is no published number for PA or PC. To use this page as an annealing shrinkage calculator for PA and PC:

  1. Print a test part with printing compensation already applied.
  2. Measure it, anneal it on your real schedule, and measure again. For nylon, measure after moisture conditioning too; the wet filament checklist covers nylon and moisture.
  3. Enter the change in the annealing fields as a percentage of the pre-annealing size. Use a negative number for growth.

The calculator multiplies the two steps. A PLA part with 0.49% print shrinkage and 2% annealing shrinkage in XY needs 1 / (0.9951 x 0.98) = 102.54%, not 102.49%.

Published · Figures last checked

Sources

  1. OrcaSlicer Wiki, Material basic information (Shrinkage XY and Z) (accessed 2026-09-24)
  2. OrcaSlicer source, Print.cpp (shrinkage_compensation) (accessed 2026-09-24)
  3. OrcaSlicer Wiki, Precision settings (X-Y hole and contour compensation, polyholes) (accessed 2026-09-24)
  4. Bambu Lab Wiki, 3D prints shrinkage: causes and solutions (accessed 2026-09-24)
  5. Bambu Studio source, PrintObjectSlice.cpp (filament_shrink) (accessed 2026-09-24)
  6. PrusaSlicer 2.9.2 source, PrintConfig.cpp (shrinkage compensation tooltips and limits) (accessed 2026-09-24)
  7. PrusaSlicer 2.9.2 source, Print.cpp (shrinkage_compensation) (accessed 2026-09-24)
  8. Weiser et al., Shrinkage Compensation for FFF Printing for PLA, ABS, and PETG Thermoplastics (Binghamton University, 2021) (accessed 2026-09-24)
  9. NatureWorks, Ingeo Biopolymer 3052D technical data sheet, injection molding (archived copy) (accessed 2026-09-24)
  10. INEOS Styrolution, Terluran GP-35 (ABS) product page (accessed 2026-09-24)
  11. INEOS Styrolution, Luran S 777K (ASA) product page (accessed 2026-09-24)
  12. Covestro, Makrolon 2405 (PC) ISO data sheet (accessed 2026-09-24)
  13. BASF, Ultramid B3S (PA6) data sheet (accessed 2026-09-24)
  14. BASF, Ultramid B3EG6 (PA6-GF30) data sheet (accessed 2026-09-24)
  15. nophead, HydraRaptor blog: Polyholes (accessed 2026-09-24)
  16. Prusa Research blog, How to improve your 3D prints with annealing (accessed 2026-09-24)
  17. CNC Kitchen, Annealing PLA prints: what it does and doesn't (accessed 2026-09-24)
  18. Stojković et al., Impact of layer height and annealing parameters on tensile strength and dimensional accuracy of FDM parts, Materials 2023 (accessed 2026-09-24)
  19. Polymaker Wiki, Annealing (accessed 2026-09-24)
  20. Polymaker Wiki, Moisture conditioning (accessed 2026-09-24)