How to use it
- Choose Marlin or Klipper.
- Enter your current e-steps (or rotation_distance).
- Mark the filament, extrude 100 mm and measure what is left to the mark.
- Copy the new value or command and save it to the printer.
Why calibrate e-steps
E-steps (steps per millimeter on the E axis) tell the firmware how far to turn the extruder motor to push a given length of filament. If the value is off, every print is over- or underextruded: blobs, rough top surfaces and dimensional errors on one side, gaps and weak layers on the other.
It is worth checking after you change the extruder, gears or stepper driver, or if you can't get a good print no matter how you tune flow in the slicer. Calibrate e-steps first; then fine-tune flow per filament with the flow calculator.
The test, step by step
- Heat the hotend to the normal printing temperature for your filament.
- Measure 120 mm up from the extruder inlet and mark the filament with a fine marker.
- Send
M83(relative extrusion), thenG1 E100 F100to extrude 100 mm slowly. - Measure the distance from the inlet to the mark again.
- Enter the numbers in the calculator.
If the extruder pushed exactly 100 mm, 20 mm will be left. In Marlin, find the current value in the M503 output on the line M92 X… Y… Z… E93.00. In Klipper, it is rotation_distance in the [extruder] section of printer.cfg.
The formulas, with an example
Marlin: new e-steps = old e-steps × requested ÷ actual
Klipper: new rotation_distance = old rotation_distance × actual ÷ requested
actual = mark distance − remaining distance
Example: e-steps 93, mark at 120 mm, 24 mm remaining after the test. The extruder actually pushed 96 mm instead of 100 (−4%).
- Marlin: 93 × 100 ÷ 96 = 96.88 steps/mm. Send
M92 E96.88andM500to save. - Klipper with rotation_distance 33.5: 33.5 × 96 ÷ 100 = 32.16. Edit printer.cfg and RESTART.
The Klipper ratio is inverted because rotation_distance is millimeters per motor revolution, the opposite of steps per millimeter.
Tips for accurate results
- Use a slow feed rate (F100 or lower) so the hotend can melt the filament fully; extruding fast through a hot nozzle can make the extruder slip and skew the test.
- Measure with calipers, not a ruler, and read the distance at the same edge of the mark both times.
- Repeat the test with the new value until 100 mm requested gives 99–101 mm.
- Differences under 1% are within measurement error; the calculator tells you when a change isn't worth making.
- Some printers lock e-steps in firmware or reset them on reboot;
M500saves the value to EEPROM where supported.
After calibration
Once e-steps are right, the remaining differences between filaments are handled with the flow rate (extrusion multiplier) in your slicer. A printer with correct e-steps usually needs a flow of roughly 90–100% depending on the material. Then check your maximum volumetric speed so fast prints don't underextrude. The calculator runs in your browser and nothing is sent to the printer automatically.
Typical starting values help you spot a typo: many geared direct-drive extruders sit around 400–700 steps/mm, while common non-geared Bowden extruders are often around 90–100 steps/mm. If your result is far outside the range for your hardware, re-measure before saving.
Frequently asked questions
What are e-steps?
E-steps are the number of motor steps the firmware uses to push 1 mm of filament through the extruder.
How do I find my current e-steps?
In Marlin, send M503 and look for the M92 line; the E value is your e-steps. In Klipper, check rotation_distance in printer.cfg.
How do I save the new e-steps?
Send M92 E<value> and then M500 to store it in EEPROM. In Klipper, change printer.cfg and restart.
Should I calibrate e-steps or flow first?
E-steps first. Flow (extrusion multiplier) is a per-filament fine adjustment on top of correct e-steps.
Why is the Klipper formula reversed?
Because rotation_distance is millimeters per motor revolution, the inverse of steps per millimeter.
Last updated: November 12, 2026