I am printing a small cylinder, but when the object is finished, it's smaller than the measures I used when create the model.

I used thincerkad to make a simple model, the measures are:

  • width: 90 mm
  • height: 2 mm

After the print was done, the actual dimensions were:

  • width: 70 mm
  • height: 2 mm


First attempt


The smaller object that's in the drawn circle was the first one printed, the dimensions I used were:

  • width: 110 mm
  • height: 2 mm

Then I printed it again, and the result was:


  • 2
    $\begingroup$ in reprinting: did you use the same gcode? did you resclice it? What does the Sicer tell you is the size of the disk? $\endgroup$
    – Trish
    Jun 20, 2019 at 11:25
  • $\begingroup$ I used simplify, just generate the file with the g-code, copy to the pendrive, insert that in the print, and lets go. $\endgroup$ Jun 20, 2019 at 11:48
  • $\begingroup$ Good question, i Will try today with Slicer, but simplify show me the same measures than i put yo the model un the software $\endgroup$ Jun 20, 2019 at 11:51
  • $\begingroup$ Is it true that the first picture shows a 70mm output for a 90mm model, and that the second picture shows a 110mm output for a 110mm model? If so, something other than scaling (or wrong steps per inch) is happening. Also, what is causing the cross-hatching? That seems to be scale invariant. $\endgroup$
    – cmm
    Jun 21, 2019 at 18:09
  • $\begingroup$ 110 mm model 90 cm output $\endgroup$ Jun 21, 2019 at 18:12

2 Answers 2


Let's do the math, you printed something of size 9 cm and got a size of 7 cm. This implies that the scale equals $\frac{7}{9}=0.778$. In order to print it at the correct size, you should have printed the object at scale $\frac{1}{0.778}=1.286$; so 28.6 % bigger, i.e. $1.286\times9=11.6$ cm. You printed at 11 cm, so the print should become smaller than the pencil drawn circle on the paper. This is actually what you see in the image you supplied.

This can imply 2 things, you either scale the prints incorrectly to export to stl (but that is unlikely because the Z height is correct), or the steps per mm are incorrectly set in the firmware of your printer. The rotation of the steppers (usually 200 steps) need to be translated into linear movement; this depends on the used pulleys mounted on the steppers (typically used pulleys are: 16 or 20 teeth for belt driven X and Y axes).

Calibrating the steps per mm of the extruder is answered in this answer. For the X and Y axis this works the same. If you have a Marlin based printer firmware, send G-code M503 to the printer over a terminal interface as e.g. OctoPrint, Pronterface (as part from Printrun: 3D printing host suite), Repetier-Host have, you can obtain the current values from the reply; these are listed under M92.

That value for X and Y needs to be multiplied by 1.286 (as an example) to get the correct dimensions. You do this by sending G-code M92 like M92 X100.00 Y100.00 (see this answer that explains which values you should use based on pulleys you use, either 80 or 100) to the printer, to keep these values they need to be stored in memory using G-code M500 (note that the values 100.00 should be replaced by the values you get by multiplying the return values for X and Y from M503 by the 1.286 multiplication factor, only if the error is systematically increasing with print dimensions, otherwise stick to the calculated values from e.g. the Prusa belt calculator).

Without the proper steps per mm, you will not be able to use the full potential of the bed. An alternative as scaling your prints by the appropriate scaling factor will only help if your scaled print is smaller than the bed size divided by that scaling factor, so no use of the full bed. Rather fix the firmware to fit the actual mechanical layout.

  • 2
    $\begingroup$ Your answer is really awesome, tomorrow try your solution and tell you the result $\endgroup$ Jun 20, 2019 at 5:34
  • 2
    $\begingroup$ I believe that 7mm and 9mm measurements were not take with enough significant figures to arrive at the 0.778 and 1.286 values. Using these values to calibrate the Steps per mm will result in a mis-calibrated printer. You would be much better off using the calculated values from the mechanical properties of your printer. $\endgroup$ Jun 21, 2019 at 2:06
  • 2
    $\begingroup$ Further, calibraing steps-per-mm via measurement rather than mechanical properties is always wrong, because it will result in values that don't evenly divide nozzle width/feature width, thereby producing really bad aliasing artifacts in all the printed surfaces. If the measured value doesn't match what's predicted by mechanical properties, then you need to fix whatever parts are dimensioned incorrectly that are causing the discrepancy (e.g. stretched belt, ...). $\endgroup$ Jun 21, 2019 at 4:45
  • $\begingroup$ @PerplexedDipole ,R.. e.g. who says that a new belt is exactly 2 mm in width? Or whatever dimension of any part should be. It actually is a very good idea to adapt to your machine rather than counting on values. In the real world everything is produced with tolerances. Besides, the calculations show an example, with better measurements it would become more accurate, it is left as an exercise for the OP. There are some great stories to be found on people relying on hardware to be according to specifications rather than accounting for the actual sizes. I've been around to have seen examples. $\endgroup$
    – 0scar
    Jun 21, 2019 at 8:23

Are you using the stock firmware of your printer? Sounds like to me that you have 16 tooth pulleys and your firmware is set to 20 tooth i.e. 80 steps per mm

The calculation behind the steps per mm is $\frac{\text{Steps per Revolution} \times Microsteps}{Teeth \times Pitch}$. The reason for this is that one revolution of the pulley will move the belt the number of teeth times the pitch of the belt. Now take the total number of steps, Steps per Revolution times microsteps, and divide by the distance moved giving the steps per mm.

In $\underline{most}$ hobby 3D printers you have:

  • 1.8 degrees steppers which equals $\frac{360}{1.8}=200$ steps per revolution , Less common is 0.9 degrees steppers $\frac{360}{0.9}=400$
  • GT2 is the most common belts now which have a pitch of 2mm
  • The two most common pulleys are 16 tooth and 20 tooth,
  • Depending on what stepper drivers and or configuration you have
    • A4988 $\to$ 16 microsteps
    • DRV8825 $\to$ 32 microsteps
    • Trinamic $\to$ 16-256 mircosteps

In your situation I believe you have a 1.8 degree stepper with 16 microsteps, a gt2 belt, and a 16 tooth pulley. Which means your XY steps per mm should be $\frac{200 \times 16}{16 \times 2} = 100$. While your firmware is expecting 20 tooth pulleys, yielding $\frac{200 \times 16}{20 \times 2} = 80$. This would result in your prints being $\frac{100-80}{100} = 20\%$ smaller, which explains your results with the circles.

Generalizing, the steppers, microsteps, and pitch don't matter. To go between 16 tooth pulleys to 20 tooth, multiply by $0.8=\frac{16}{20}$. From 20 tooth to 16 tooth, multiply by $1.25=\frac{20}{16}$.

  • $\begingroup$ Excelent answer, this is the solution, thanks for all explaniation and the data for understand the problem. $\endgroup$ Jun 22, 2019 at 17:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .