SpoolGuide

E-steps calculator

Mark the filament, extrude 50 mm, measure how far it really moved, and the calculator gives the new E-steps for Marlin or the new rotation_distance for Klipper.

Your extruder
Marlin counts steps for each millimeter of filament. Klipper sets the filament that one turn of the motor moves.
In Marlin, M92 with no parameters reports it (M503 on older versions). In Klipper, it is rotation_distance in the [extruder] section of printer.cfg.
The test
Klipper’s guide asks for 50 mm, sent slowly as G91 and then G1 E50 F60. A fast extrusion builds pressure and skews the result.
Mark the filament about 70 mm from the intake of the extruder, then measure that distance with calipers.
Measure from the same edge of the extruder once the move has finished.

Result

New E-steps95.88

Filament that moved
48.5 of 50 mm (97%)
Marlin commands
M92 E95.88, then M500

These are example numbers. Change any box to see your own.

The new value is 93 × 50 ÷ 48.5.

M500 keeps the value after a restart on a printer whose firmware saves settings.

How to run the test

Load filament and heat the hot end to a temperature that suits it. Mark the filament about 70 mm from where it enters the extruder, then measure that distance as precisely as you can with digital calipers.

Send G91, then G1 E50 F60, which asks for 50 mm at a slow rate. The move takes about 50 seconds. When it ends, measure from the same edge to the mark again. The filament that moved is the first distance minus the second.

If the filament moved more than about 2 mm more or less than you asked for, set the new value and run the test a second time.

E-steps in Marlin

Marlin sets the steps for each millimeter of filament with M92 and the letter E. M92 with no parameters reports the values the printer uses now, and M503 does on older versions. Marlin’s own example for a new extruder is M92 E688.4.

The new E-steps are the old value times the length you asked for, divided by the length that moved. An extruder that moved 48.5 mm of 50 at 93 E-steps needs 95.88.

Rotation distance in Klipper

Klipper sets the extruder by its rotation_distance: the length of filament that one full turn of the stepper motor moves. That works the other way round from E-steps. The new rotation_distance is the old one times the length that moved, divided by the length you asked for, rounded to three decimal places. It goes in the [extruder] section of printer.cfg.

Asked often

How do I turn E-steps into a rotation_distance?
Klipper’s formula is rotation_distance = full steps per rotation × microsteps ÷ steps per mm. Most stepper motors take 1.8 degree steps, which makes 200 full steps per rotation. At 16 microsteps, 93 steps per mm is a rotation_distance of 34.409.
Why does the test extrude so slowly?
Klipper’s documentation warns that a faster rate can cause high pressure in the extruder, which skews the result. It also says not to use the extrude button of a graphical front end, because those extrude at a fast rate.
How do I save new E-steps in Marlin?
Set the value with M92 E and the number, then send M500. With EEPROM settings enabled, M500 saves it and M501 loads it again. M502 goes back to the values that the firmware was built with.
Can I calibrate the X, Y and Z axes the same way?
No. Klipper’s documentation says this method is not accurate enough for those axes and will likely make the configuration worse. Their values come from the belts, the pulleys and the lead screws.

Where the numbers come from

  1. Klipper documentation: Rotation distance (opens in a new tab), read on 2026-11-04.
  2. Marlin documentation: M92, Set Axis Steps-per-unit (opens in a new tab), read on 2026-11-04.

Published .

SpoolGuide

SpoolGuide is an independent site and is not affiliated with any printer or filament maker.