E-steps & Rotation Distance Calculator
Calibrate how far your extruder actually pushes filament. Mark the filament, extrude a set length slowly, measure what is left, and get the corrected Marlin e-steps or Klipper rotation_distance.
Measure from the same fixed point (usually the top of the extruder body) both times, with digital calipers. Results are estimates; double-check before saving to your printer.
How to do the test
Marlin
- Heat the hotend to your normal printing temperature for the loaded filament. Cold extrusion can damage the extruder.
- Send
M92(orM503on older firmware) and note the current E value. - Mark the filament 120 mm above the extruder inlet and measure the exact distance.
- Send
M83(relative extrusion), thenG1 E100 F100to push 100 mm slowly (about one minute). - Measure from the same point to the mark again. If it extruded perfectly, 20 mm remains.
- Enter the numbers above, then send the new
M92 E…line followed byM500to save it to EEPROM.
Klipper
- Heat the hotend and load filament.
- Mark the filament about 70 mm from the extruder intake and measure it precisely.
- Send
G91thenG1 E50 F60. Wait the full ~50 seconds. Don't use a front-end "extrude" button, which is too fast. - Measure the mark again and enter the numbers above.
- Put the new value in the
[extruder]section ofprinter.cfg, rounded to three decimals, and restart Klipper. If the result was more than about 2 mm off, repeat the test.
Formulas
Actual extruded = mark before − mark after.
Marlin: new e-steps = current e-steps × commanded ÷ actual. Example: 93 steps/mm, 100 mm commanded, 97 mm actual → 93 × 100 ÷ 97 = 95.88.
Klipper: new rotation_distance = current × actual ÷ commanded. Example: 7.74, 50 mm commanded, 48 mm actual → 7.74 × 48 ÷ 50 = 7.430. Note the formulas are inverted: e-steps count steps per mm, while rotation_distance is millimetres per motor turn, so under-extrusion raises e-steps but lowers rotation_distance.
Convert e-steps ↔ rotation_distance
Moving from Marlin to Klipper? rotation_distance = full steps per rotation × microsteps ÷ steps per mm (and the same formula the other way round).
Typical starting values
| Extruder type | Typical Marlin e-steps (16 microsteps) |
|---|---|
| Bowden / direct, no gear reduction (e.g. Ender-3 stock) | ~93 |
| Geared extruders (BMG-style 3:1, Orbiter, Sherpa etc.) | ~400–700 |
These are only rough starting points [estimate]. Always use your firmware's current value and the manufacturer's figure for your extruder, then calibrate.
Sources
- Klipper procedure and formulas: Klipper documentation – Rotation distance (70 mm mark,
G1 E50 F60, round to three decimals, repeat if off by more than ~2 mm). - Marlin commands: M92 – Set axis steps-per-unit and M500 – Save settings.
- The 120 mm mark / 100 mm extrusion test is the common community procedure for Marlin printers.
Next step: calibrate flow rate per filament · filament length ↔ weight
FAQ
What are e-steps on a 3D printer?
E-steps are the number of stepper motor steps the firmware uses to push 1 mm of filament. If the value is wrong the printer under- or over-extrudes on every print, whatever filament you use.
What is rotation_distance in Klipper?
It is how many millimetres of filament the extruder moves for one full turn of the motor. Klipper uses it instead of steps per mm; you can convert between the two with full steps × microsteps ÷ steps per mm.
Should I calibrate e-steps or flow first?
E-steps or rotation_distance first, because it corrects the extruder hardware. Then calibrate flow (extrusion multiplier) for each filament.
Why extrude so slowly?
Fast extrusion builds pressure in the hotend, the filament slips and the test reads low. Klipper recommends 50 mm at F60 (1 mm/s); for Marlin, 100 mm at F100 is common.
Do Bambu Lab printers need e-steps calibration?
Usually not. Bambu Lab firmware does not offer user e-steps calibration like Marlin or Klipper, so use flow ratio calibration in Bambu Studio or OrcaSlicer instead.