Free · runs in your browser · nothing is uploaded

E-Steps Calculator for 3D Printer Extruders

Mark the filament 120 mm above the extruder, extrude 100 mm, and measure what is left to the mark. New e-steps = current e-steps × 100 ÷ the length that really went in. Type your numbers below to get the new value and the exact commands for Marlin, Klipper or RepRapFirmware.

Loading the e-steps calculator...
Demo with a sample file, recorded in this tool.

How to calibrate e-steps

  1. 1

    Read the current value

    Send M503 (Marlin) and find the E number in the M92 line, or read rotation_distance in printer.cfg (Klipper). Enter it in the calculator.

  2. 2

    Heat and mark

    Heat the nozzle to your printing temperature. Make a mark on the filament 120 mm above where it enters the extruder.

  3. 3

    Extrude 100 mm slowly

    Send the lines shown under "Test commands" (heat, relative mode, then 100 mm at 100 mm/min). Wait until the motor stops.

  4. 4

    Measure and update

    Measure from the extruder to the mark, enter it, and send the new value. Save it, then repeat once to confirm it is within 1%.

What each number means

The calculation is a simple ratio: if the extruder pushed 96 mm when you asked for 100, every step moves less filament than the firmware thinks, so it needs proportionally more steps.

E-steps (steps/mm)How many motor steps the firmware sends to push 1 mm of filament. Many geared direct-drive extruders sit in the 400s, many Bowden extruders around 93 to 100. Your printer's own value is the one that matters.
Mark distanceHow far above the extruder you marked the filament. 120 mm leaves 20 mm to measure after a 100 mm push, and room if the extruder over-extrudes.
Left after extrudingWhat you measure from the extruder entry to the mark once the 100 mm push is done. Measure to the same point you measured from when you made the mark.
Actually extrudedMark distance minus what is left. If it is 100 mm, your e-steps are already right.
rotation_distance (Klipper)Klipper uses the millimetres moved per motor turn instead of steps/mm, so the fix is the other way round: new = old × actually extruded ÷ requested.

Printer tuned? Make a printable model with AI

Turn a photo or a sentence into a 3D model with an STL download, ready to slice. The AI generators use credits; this calibration tool does not.

More free 3D printing tools

E-steps FAQ

New e-steps = current e-steps × requested length ÷ actual length. Ask for 100 mm, measure how much really went in (mark distance minus what is left), and divide. Example: current 93, actual 96 mm, new = 93 × 100 ÷ 96 = 96.88 steps/mm.
Either way works if you are consistent. With the nozzle on and hot, extrude slowly (100 mm/min) so the hotend can keep up; a fast push through a cold or narrow nozzle makes the extruder slip and reads as under-extrusion. Some people remove the Bowden tube or nozzle to measure the extruder alone.
Send M92 E<new value>, then M500 to save it to EEPROM, and M503 to check it is there. If your board has no EEPROM support, M500 does nothing and the value is lost at power off: put the new value in your start G-code or firmware instead.
Klipper sets the extruder by millimetres per full motor rotation instead of steps per millimetre. Change rotation_distance in the [extruder] section of printer.cfg to the value shown, save and restart. Because it is the inverse, a printer that under-extrudes gets a smaller rotation_distance.
After you change the extruder, its gears, the motor or the firmware, and when something new under-extrudes everywhere. It is not a per-filament setting: differences between filaments are fixed with the flow rate (extrusion multiplier) instead.
No. E-steps makes the extruder push the length it is asked for and is set once per printer. Flow rate (extrusion multiplier) fine-tunes how much plastic comes out for one filament and is set in the slicer. Do e-steps first, then flow.
A big correction usually means a measuring slip, a skipping or slipping extruder, or the wrong starting value. Check the extruder is not clicking during the 100 mm push, read the current value again with M503, and repeat. Then calibrate once more with the new value.

The result is plain arithmetic from the numbers you enter. Check the commands match your firmware before sending them, and keep a note of your old value.