Skip to content
MetriFab

E-Steps Calibration Calculator for 3D Printers

Mark your filament, ask the extruder for 100 mm, measure the mark again and enter the numbers.

Last reviewed 29 Oct 2026

Your measurements

Firmware

Your firmware

Marlin uses e-steps (steps per mm). Klipper uses rotation_distance (mm per motor turn), and the correction goes the other way.

Send M503 and read the M92 line, or check your firmware config. The starting figure is only an example.

The test

The extrusion length in your command, usually 100 mm.

From the extruder entrance to the mark on the filament, measured before extruding.

From the extruder entrance to the mark, measured after extruding. It should be less than the first distance.

New e-steps94.9 steps/mm

Results

New e-steps

94.9steps/mm

The extruder pushed 98 mm instead of 100 mm. Change the e-steps from 93 to 94.9, then run the test again.

Actually extruded
98mm
120 − 22
Error
-2%
Under-extruding
Change to value
+2.04%
From 93 to 94.9

Send these commands:

M92 E94.9
M500

M92 sets the e-steps for now. M500 saves them to the printer's memory so they survive a restart.

In short

New e-steps = current e-steps × requested ÷ actual. With 93 steps/mm, 100 mm asked and 98 mm pushed (the mark moved from 120 mm to 22 mm), the new value is 94.9 steps/mm. In Klipper it is current rotation_distance × actual ÷ requested.

The calculator gives the new Marlin e-steps or Klipper rotation_distance and the commands to set it.

What the measurement means for the new value

For the example above: 93 steps/mm, 100 mm requested, mark 120 mm from the entrance. The highlighted row is the calculator's starting example. Enter your own numbers in the tool.

Left after the testActually extrudedErrorNew e-steps (Marlin)
14 mm106 mm+6%87.74
16 mm104 mm+4%89.42
18 mm102 mm+2%91.18
20 mm100 mm0%93
22 mm98 mm-2%94.9
24 mm96 mm-4%96.88
26 mm94 mm-6%98.94
28 mm92 mm-8%101.09
30 mm90 mm-10%103.33

A measurement that leaves less on the mark means more filament went through, so the e-steps go down. These numbers come from the formula, not from any particular printer.

Worked example: 93 steps/mm, 100 mm requested

The mark started 120 mm from the extruder and ended 22 mm away. The same test in Klipper, starting at a rotation_distance of 22.5 mm, gives 22.05 mm.

  1. Step 1: Filament that really went through

    mark distance − distance left after the test

    = 120 − 22
    = 98 mm

    The mark started this far from the extruder entrance and ended up closer by the length the extruder pulled in.

  2. Step 2: How far off it was

    (actual − requested) ÷ requested

    = (98 − 100) ÷ 100
    = -2%

    A negative number means the extruder pushed less than you asked for (under-extrusion).

  3. Step 3: New e-steps (Marlin)

    current e-steps × requested ÷ actual

    = 93 × 100 ÷ 98
    = 94.9 steps/mm

    E-steps are motor steps per millimetre of filament. If the extruder pushed less than asked, it needs more steps per mm, and the other way round.

  4. Step 4: Set it

    M92 E<new value>, then M500 to save

    = M92 E94.9 ; M500
    = 2.04% change

    Run the test again after changing the value. If the new result is within 1% of the request, you are done.

How to run the test

  1. Heat the nozzle to the temperature you normally print the filament at, so the extruder pushes against real melt resistance. Cold filament would give a wrong result.
  2. Make sure the nozzle is clear of the bed and the filament is loaded, with the extruder gear gripping it firmly.
  3. Measure 120 mm from the extruder entrance along the filament and mark it with a fine pen. A flat-edged ruler or calipers give better readings than a tape.
  4. Command a slow extrusion of 100 mm in relative mode: send M83, then G1 E100 F100. A slow feed rate keeps the extruder from skipping. Change the 100 if you ask for a different length.
  5. Measure from the extruder entrance to the mark again. Enter both distances above. Do not trust the first try alone: run it two or three times and use the average.

Use the e-steps or rotation_distance your printer is set to right now as the current value. If you do not know it, read it from the firmware before testing. A change of more than 20% usually points to a wrong starting value, a wrong extruder type or a bad measurement, so the calculator shows a warning.

E-steps: common questions

What they are, Klipper and when to stop.

What are e-steps?

E-steps are the number of motor steps the firmware sends to the extruder for each millimetre of filament it should push. If the number is wrong, the printer pushes more or less filament than it thinks. In Marlin you set it with M92 E and save it with M500.

Why is the Klipper correction the other way round?

Klipper does not use steps per millimetre. It uses rotation_distance, the length of filament pushed for one turn of the motor. A longer distance means less filament per turn, so the new value is current × actual ÷ requested, where Marlin's is current × requested ÷ actual. Both give the same physical change.

How close is close enough?

Within about 1% of the length you asked for is usually fine, and the calculator says so when you get there. Measuring with a ruler adds some error, so after changing the value, run the test once more. If the new result is already within 1%, stop.

Will this fix under-extrusion?

Only if the extruder is pushing the wrong length. Under-extrusion can also come from a partial clog, a nozzle that is too cool, wet filament, a hotend flow limit or a wrong flow setting in the slicer. Calibrate e-steps first, then check the other causes, and keep the flow setting for fine tuning.