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
- 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.
- Find your current value. On Marlin send
M503and look for theM92 Enumber. On Klipper readrotation_distancein the extruder section of printer.cfg. - Measure 120 mm up the filament from the top of the extruder inlet and mark it with a fine marker.
- Send
M83for relative extrusion, thenG1 E100 F100. That is 100 mm at 100 mm per minute, slow enough that the hotend does not limit flow. - 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.
- Distance moved: 120 − 26 = 94 mm, so actual = 94.
- New value: 93 × 100 / 94 = 98.9
- Send
M92 E98.9, thenM500to save it to EEPROM. - 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 type | Typical Marlin e-steps |
|---|---|
| Basic single-gear extruder (Creality style) | 93–100 |
| Dual-gear direct drive, around 3:1 | 400–420 |
| BMG-style clone, 3:1 | 415 |
| Orbiter-style high reduction | about 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
M500means 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.