What is the e-steps formula?
New e-steps equal the current e-steps times the length you asked for, divided by the length that actually went in. Ask for 100 mm at 93 steps/mm, measure 96 mm, and the new value is 93 × 100 / 96 = 96.88 steps/mm. Under-extrusion raises the number. Over-extrusion lowers it.
new e-steps = current e-steps × requested length / actual length
actual length = mark distance before − mark distance after
error = (actual length − requested length) / requested length
Without a test, you can estimate e-steps from the parts. One motor turn is its full steps times the driver’s microsteps. The gears turn the drive gear, and one drive-gear turn pushes π times its effective diameter of filament:
e-steps = full steps per turn × microsteps × gear ratio / (π × effective drive gear diameter)
A 1.8° motor has 200 full steps per turn and a 0.9° motor has 400, according to Klipper’s documentation. Most drivers run 16 microsteps. The gear ratio is driven teeth over motor teeth. Bondtech gives the BMG’s as 50:17, which Klipper’s docs note is often sold as 3:1.
Worked example: a Bondtech BMG from its parts
Voron Design’s configs give Bondtech 5 mm drive gears a rotation distance of 22.68 mm per gear turn. That is an effective diameter of 22.68 / π = 7.22 mm.
- Steps per motor turn: 200 × 16 = 3,200.
- With the 50:17 gearing: 3,200 × 50 / 17 = 9,412 steps per drive-gear turn.
- E-steps: 9,412 / (π × 7.22) = 415 steps/mm, which matches the 415 Bondtech publishes.
Treat a hardware estimate as a starting point. Klipper’s documentation notes that the drive gear’s grip varies between printers and even between spools. Set the estimate, then run the test below.
How do you calculate e-steps?
Read the current value with M503, mark the filament 120 mm above the extruder, and extrude 100 mm slowly. Measure the mark again; the difference is what went in. Multiply the current value by 100, divide by that length, then send M92 E with the result and M500 to save it.
- Heat the nozzle to the printing temperature of the loaded filament.
- Send
M503. Find the line that starts withM92. The number afterEis your current e-steps. - Mark the filament 120 mm above the extruder’s intake and measure the distance with calipers.
- Send
M83, which puts the extruder in relative mode, thenG1 E100 F60. F60 is 1 mm/s, so the move takes 100 seconds. Klipper’s guide uses a slow rate because fast extrusion builds pressure and skews the result. - Measure from the intake to the mark again.
- Enter both distances. The calculator gives the new value and the commands.
- Send
M92 E<new value>, thenM500. M92 changes the running value. M500 writes it to EEPROM, the board’s settings memory, so it survives a restart.
If the extruded length is more than about 2 mm off, Klipper’s guide says to run the test again. Use the new value as the current one for the second run.
Worked example: an Ender-3 that under-extrudes
These are the calculator’s defaults.
- Current value from M503: 93 steps/mm.
- Mark before: 120 mm. Mark after: 24 mm. Actually extruded: 120 − 24 = 96 mm.
- Error: (96 − 100) / 100 = −4.0%, so the extruder under-extrudes by 4 mm.
- New e-steps: 93 × 100 / 96 = 96.88 steps/mm.
- Commands:
M92 E96.88, thenM500.
The 4 mm miss is over 2 mm, so run the test once more at 96.88.
| Actually extruded (of 100 mm, at 93) | Error | New e-steps |
|---|---|---|
| 90 mm | −10.0% | 103.33 |
| 95 mm | −5.0% | 97.89 |
| 96 mm | −4.0% | 96.88 |
| 98 mm | −2.0% | 94.9 |
| 100 mm | 0.0% | 93 |
| 102 mm | +2.0% | 91.18 |
| 105 mm | +5.0% | 88.57 |
You can also measure the extruded length directly instead of using a mark. Pick “The extruded length itself” and type that length.
What should e-steps be on an Ender 3?
93 steps/mm. Creality’s own Marlin firmware for the Ender-3 sets DEFAULT_AXIS_STEPS_PER_UNIT { 80.00, 80.00, 400.00, 93.00 }, and the fourth number is the extruder. Treat 93 as the factory starting point for the stock extruder, not a guarantee. A 100 mm test shows what your machine needs.
The same Creality configuration enables EEPROM_SETTINGS, so M500 saves a new value on the stock firmware. If you have fitted a geared extruder, 93 no longer applies. Use the hardware mode and the maker’s value instead.
Stock values from each printer’s firmware source:
| Printer | Stock e-steps | Firmware source |
|---|---|---|
| Creality Ender-3 | 93 | Creality Ender-3 Marlin Configuration.h |
| Creality Ender-3 Pro | 93 | Marlin example configuration for the Ender-3 Pro |
| Creality Ender-3 V2 | 93 | Creality Ender-3 V2 Marlin Configuration.h |
| Creality Ender-3 S1 | 424.9 | Creality Ender-3 S1 Marlin Configuration.h |
| Prusa i3 MK3S | 280 | Prusa-Firmware MK3S.h, with the extruder at 32 microsteps |
E-steps for geared extruders
Makers publish e-steps for a 1.8° motor at 16 microsteps. Bondtech notes that the value doubles if you double the microsteps, and also doubles on a 0.9° motor. The calculator applies both rules when you change the motor or driver.
| Extruder | 1.8° motor, 16 microsteps | 1.8° motor, 32 microsteps | 0.9° motor, 16 microsteps |
|---|---|---|---|
| Bondtech BMG | 415 | 830 | 830 |
| LDO Orbiter v2.0 | 690 | 1,380 | 1,380 |
| Sherpa Mini or Voron Clockwork 2 (50:10, Bondtech drive gears) | 705.5 | 1,411 | 1,411 |
Bondtech and the Orbiter v2.0 project page publish their figures directly. The 50:10 row is calculated: Annex Engineering gives the Sherpa Mini 50:10 gearing, and Voron Design pairs 50:10 with Bondtech drive gears at 22.68 mm per turn. That gives 3,200 × 5 / 22.68 = 705.5 steps/mm.
E-steps on Klipper
Klipper sets the extruder in its config file as rotation_distance, the millimeters of filament per motor turn: full steps times microsteps, divided by steps per mm. 93 steps/mm at 200 steps and 16 microsteps is a rotation distance of 34.409 mm. Use the rotation distance calculator for the same 100 mm test on Klipper.
E-steps set how much filament the extruder pushes. The slicer’s flow setting then trims how much plastic each line gets, and the flow rate calculator covers that step.
Published · Figures last checked
Sources
- Creality, Ender-3 Marlin firmware, Configuration.h (DEFAULT_AXIS_STEPS_PER_UNIT, EEPROM_SETTINGS) (accessed 2026-10-14)
- Creality, Ender-3 V2 Marlin firmware, Configuration.h (accessed 2026-10-14)
- Creality, Ender-3 S1 Marlin firmware, Configuration.h (accessed 2026-10-14)
- Marlin Configurations, Creality Ender-3 Pro (CrealityV1) example Configuration.h (accessed 2026-10-14)
- Prusa Research, Prusa-Firmware MK3S variant (MK3S.h) (accessed 2026-10-14)
- Marlin, M92: Set Axis Steps-per-unit (accessed 2026-10-14)
- Marlin, M500: Save Settings (accessed 2026-10-14)
- Marlin, M503: Report Settings (accessed 2026-10-14)
- Marlin, M83: E Relative (accessed 2026-10-14)
- Klipper documentation, Rotation distance (accessed 2026-10-14)
- Bondtech, BMG extruder (e-step value and 50:17 gearing) (accessed 2026-10-14)
- Orbiter Projects, Orbiter v2.0 (steps/mm at 16 microstepping) (accessed 2026-10-14)
- Annex Engineering, Sherpa Mini Extruder (50:10 gearing) (accessed 2026-10-14)
- Voron Design, Voron 2.4 Octopus Klipper config (Bondtech drive gear rotation_distance, gear ratios) (accessed 2026-10-14)