Skip to content
3dprints.tools
Calibrate

E-steps calculator

Calibrate your extruder so 100 mm requested really means 100 mm of filament fed. Enter your current steps per mm and the measured result to get a corrected Marlin E-steps value or Klipper rotation_distance.

Parameters
Firmware
steps/mm
mm
Test
mm
mm
mm
New E-steps value Live
3,100.00steps/mm
Actually extruded
3.0 mm
Error
-97.0%
Marlin command
M92 E3100.00 then M500
Klipper rotation_distance
1.005

What e-steps calibration fixes

The extruder motor turns a gear that pushes filament. Firmware needs to know how many motor steps move the filament one millimeter. If that number is off, every line the printer lays down is too thin or too thick, and no amount of slicer tuning fully hides it. E-steps calibration measures how much filament actually moves when you ask for a known length, then scales the setting to match.

Many current printers come with a correct value set at the factory and a well-defined extruder gear. Bambu Lab machines, the Prusa MK4 and Core One, and many others do not normally need this. It is most useful on printers with a replaced or upgraded extruder, a kit build, or firmware that was reset. If your printer prints well and the setting has not changed, leave it alone.

How the calculation works

You mark the filament, request an extrusion, and measure what moved:

  • actual = requested − (start mark − end mark)
  • new e-steps = current e-steps × requested / actual

On Klipper the setting is rotation_distance, which is the inverse idea (millimeters per full rotation), so the ratio flips:

  • new rotation_distance = old rotation_distance × actual / requested

How to measure

  1. Heat the hotend to a normal printing temperature for the loaded material, for example 210 °C for PLA. Extruding cold can damage the extruder and does not work.
  2. Find your current value. On Marlin send M503 and look for the M92 E number. On Klipper read rotation_distance in the extruder section of printer.cfg.
  3. Measure 120 mm up the filament from the top of the extruder inlet and mark it with a fine marker.
  4. Send M83 for relative extrusion, then G1 E100 F100. That is 100 mm at 100 mm per minute, slow enough that the hotend does not limit flow.
  5. When it finishes, measure from the extruder inlet to the mark again. If 100 mm moved exactly, 20 mm remains.

Measuring at the extruder inlet rather than the nozzle is the key point: you are checking the gear's feed, not how much plastic comes out of the tip.

Worked example

Current Marlin value is M92 E93. You marked at 120 mm and after the extrusion 26 mm remains.

  1. Distance moved: 120 − 26 = 94 mm, so actual = 94.
  2. New value: 93 × 100 / 94 = 98.9
  3. Send M92 E98.9, then M500 to save it to EEPROM.
  4. Repeat the test. You should now see about 20 mm left.

On Klipper with rotation_distance: 33.5 and the same measurement: 33.5 × 94 / 100 = 31.49. Edit printer.cfg and restart the firmware. Klipper does not use M500.

Typical values

Extruder typeTypical Marlin e-steps
Basic single-gear extruder (Creality style)93–100
Dual-gear direct drive, around 3:1400–420
BMG-style clone, 3:1415
Orbiter-style high reductionabout 690

Values above assume 16 microsteps and vary with gear diameter and microstepping. Always measure rather than copy.

Common mistakes

  • Extruding too fast. At high speed the hotend cannot melt enough plastic, the gear slips, and you calibrate to the hotend limit instead of the extruder.
  • Forgetting to save. On Marlin, skipping M500 means the value is lost at the next restart.
  • Using e-steps to fix flow. If lines look over or under-extruded after e-steps is correct, use the flow rate setting in the slicer, which is material specific.
  • Loose idler tension. Too little tension slips, too much flattens the filament. Set it before calibrating.

Practical tips

  • Run the test two or three times and average. A marker line has width, so measure to the same edge each time.
  • Recalibrate after changing the extruder, gears, or motor, not after every spool.
  • A small variation of 1 to 2 mm in 100 is normal measurement noise. Do not chase tiny differences.

If the result changes a lot from one run to the next, the extruder itself likely has a problem. Look for a worn or dirty drive gear packed with plastic dust, a cracked extruder arm, which is common on older plastic extruders, or a partial clog that makes the gear skip. Fix the hardware first, then calibrate, or the new value will only hide the fault until it gets worse.

Frequently asked questions

Do I need to calibrate e-steps on a new printer?

Usually not on current machines such as Bambu Lab printers or the Prusa MK4 and Core One, which ship with a correct value and consistent hardware. It is worth checking if you built a kit, replaced the extruder or gears, or reset the firmware. If prints look right and nothing changed, there is no reason to adjust it.

Why extrude so slowly during the test?

At high speeds the hotend cannot melt filament fast enough, so the extruder gear slips or grinds and less filament moves than requested. You would then raise e-steps to correct a problem that is not the extruder. A slow rate such as 100 mm per minute keeps the hotend well within its limits so you measure only the gear feed.

What is the difference between e-steps and flow rate?

E-steps is a firmware setting that makes the extruder move the correct length of filament. It is tied to the hardware and should rarely change. Flow rate is a slicer multiplier that fine tunes how much plastic goes into each line for a specific filament. Set e-steps first, then tune flow for each material.

How do I save the new value in Marlin and Klipper?

In Marlin send M92 E followed by the new value, then M500 to store it in EEPROM; M503 shows the current settings. Some builds lack EEPROM, in which case the value must go into the firmware configuration. In Klipper, edit rotation_distance in the extruder section of printer.cfg, save, and restart the firmware.

Why does Klipper's formula go the other way?

Marlin's e-steps counts motor steps per millimeter, so if too little filament moved you need more steps and the value goes up. Klipper's rotation_distance is millimeters of filament per motor rotation, so if too little moved, each rotation must be treated as moving less and the value goes down. The ratio flips accordingly.

Related calculators

Calibrate
Flow rate calculator
Calibrate
Tolerance and shrinkage calculator
Cost
Print cost calculator