LayerCalc

E-Steps Calculator (Marlin & Klipper Rotation Distance)

Extrude 100 mm, measure what actually came out, and this gives you the corrected e-steps for Marlin or rotation_distance for Klipper — plus the exact command to save it. It also catches the direction mistake everyone makes on Klipper.

steps/mm

Send M503 and look for the E value after M92.

mm

G1 E100 F100 (Klipper: G1 E100 F100 with M83 first).

mm
mm
New e-steps
Actually extruded

  

The test, step by step

  1. Heat the hotend to your normal printing temperature so filament can actually flow. Leave the nozzle over empty air or above the bed.
  2. Using calipers, mark the filament 120 mm above the point it enters the extruder (the top of the extruder body, or the end of the Bowden coupler). A second mark at 110 mm helps if the first gets pulled inside.
  3. Set relative extrusion and push 100 mm slowly: M83 then G1 E100 F100. The slow feed rate (100 mm/min) keeps the hotend from fighting the extruder — fast extrusion tests under-read because the melt can't keep up.
  4. Measure from the extruder entry to the mark. Ideally 20 mm remains. If more remains, the extruder pushed less than asked (under-extrusion); if less, it pushed more.
  5. Enter your current value and the measurements above, save the new value with the commands shown, and run the test again. A second pass within ±0.5 mm is as good as it gets.

The formulas

Marlin: new e-steps = current × requested ÷ actual
Klipper: new rotation_distance = current × actual ÷ requested

They're inverses because the two firmwares describe the extruder in opposite units. Marlin counts steps per millimeter of filament, so under-extrusion means more steps are needed. Klipper describes millimeters per motor revolution, so under-extrusion means each revolution moved less than the config assumed, and the number comes down. Mixing them up moves you twice as far from correct — the calculator won't let you.

Worked example

An Ender 3 at the stock 93 steps/mm. You mark at 120 mm, extrude 100, and 23 mm remains, so only 97 mm went in.

  • Marlin: 93 × 100 ÷ 97 = 95.88M92 E95.88, M500
  • The same extruder on Klipper with rotation_distance: 33.5: 33.5 × 97 ÷ 100 = 32.495

When the number is far off

A genuine e-steps error is small — a few percent from manufacturing tolerance in the drive gear, or from an upgrade like a dual-gear extruder or a different motor. A result more than 10% away from what you had usually means something else is going on:

  • Slipping or grinding. The drive gear is skating on the filament: idler tension too low, a partial clog, or the hotend too cold for the speed. Look for a shiny worn spot on the filament.
  • Extruding too fast. 100 mm at F100 is right; at F300 many hotends can't melt fast enough and the reading is meaningless.
  • Measuring from the wrong place. On a Bowden printer measure from the extruder, not the hotend.
  • Absolute extrusion mode. Without M83, G1 E100 means "go to E=100", which may be 0 mm or 100 mm depending on the current E position. Send M83 first, or G92 E0 then the move.
  • A stepper motor with a different step angle (0.9° instead of 1.8°) or a geared extruder swap. These legitimately double or triple the value — the warning still fires, and that's fine if you know why.

What e-steps don't fix

E-steps make the extruder deliver the right length of filament. They don't correct for filament diameter variation, for how the plastic spreads at a given temperature, or for the slicer's assumptions about line width. That's the job of the flow rate, tuned per material after e-steps are set. Do this first, once per extruder; then use the flow rate calculator for each filament; then check dimensions with the shrinkage calculator. Doing them in another order means re-doing them.

Note that the popular Bambu Lab, Prusa MK4 and most Klipper-based printers ship with the extruder already calibrated and tuning flow is all that's normally needed. E-steps matter most on printers that have been modified — a new extruder, a new motor, a new mainboard — or on budget machines where the stock number was never right.

Frequently asked questions

How do I calibrate e-steps?

Heat the hotend, unload nothing — just mark the filament 120 mm above the extruder entry, extrude 100 mm at a slow speed (G1 E100 F100), then measure from the extruder to your mark. If 20 mm remains, 100 mm was extruded and you're calibrated. If 23 mm remains only 97 mm went in, so new e-steps = old × 100 ÷ 97.

What's the formula for e-steps?

New e-steps = current e-steps × requested length ÷ actual length extruded. For Klipper it's the other way up: new rotation_distance = current rotation_distance × actual length ÷ requested length, because rotation_distance is millimeters per revolution rather than steps per millimeter.

Why is Klipper's formula inverted?

Marlin's e-steps counts motor steps per millimeter of filament — under-extrusion means you need more steps, so the number goes up. Klipper's rotation_distance is millimeters of filament per motor revolution — under-extrusion means each revolution moved less than the config claims, so the number goes down. Same fix, opposite arithmetic.

How do I save the new value?

Marlin: send M92 E then M500 to store it in EEPROM (if EEPROM is disabled, change DEFAULT_AXIS_STEPS_PER_UNIT in Configuration.h and reflash). Klipper: edit rotation_distance under [extruder] in printer.cfg and restart, or test first with SET_EXTRUDER_ROTATION_DISTANCE EXTRUDER=extruder DISTANCE=, which lasts until the next restart.

Do I still need to calibrate flow after e-steps?

Yes. E-steps make the extruder push the right length of filament; flow (extrusion multiplier) corrects for how that plastic actually spreads when printed. Do e-steps once per extruder, then tune flow per material with the flow rate calculator.

Last reviewed September 7, 2026. Spotted an error or want another calculator? Tell us.