Calculate stepper motor steps per mm for belt, lead screw, and extruder drives, or calibrate new e-steps from a test extrusion, with M92 and Klipper outputs.
Stepper Motor Steps per mm (E-Steps) Formula
The calculator uses a different formula for each solve-for mode. To calibrate new e-steps from a test extrusion, it scales your current value by how far the extruder actually moved the filament:
NEW ESTEPS = CURRENT ESTEPS * (COMMANDED / ACTUAL)
To compute theoretical steps per mm from hardware, it first converts the motor step angle into full steps per revolution:
S = 360 / A
Then it divides the total microsteps per output revolution by the distance that revolution produces:
Belt axis: SPM = (S * M * R) / (P * T) Lead screw axis: SPM = (S * M * R) / L Extruder: SPM = (S * M * R) / (pi * D)
Any steps per mm value can also be converted to the equivalent Klipper setting:
rotation_distance = (S * M) / SPM
Variables:
- NEW ESTEPS is the corrected extruder steps per mm to save with M92 and M500
- COMMANDED is the extrusion length you requested, usually 100 mm, and ACTUAL is the length really extruded
- S is full steps per motor revolution and A is the step angle in degrees (1.8 degrees gives 200 steps)
- M is the driver microstepping (16 means 1/16 microstepping)
- R is the gear ratio in motor turns per output turn (1 for direct drive, 3 for a BMG-style extruder)
- P is the belt pitch in mm and T is the pulley tooth count
- L is the lead screw travel per revolution in mm (lead = pitch times number of starts)
- D is the effective hobbed gear diameter in mm
The first mode applies the calibration formula to a measured extrusion test and returns the new e-steps, the extrusion error percentage, and the exact M92 command to send. You can enter the actual extruded length directly or use the mark method, where the calculator subtracts the distance left to your mark from the starting mark distance. The other three modes apply the hardware formulas for an extruder, a belt-driven X or Y axis, or a lead screw Z axis, and every result also includes the per-microstep resolution and the matching Klipper rotation_distance.
Default Steps per mm Values and Klipper Equivalents
This table lists common firmware defaults and their equivalent Klipper rotation_distance at 200 full steps and 1/16 microstepping. It is a quick way to sanity-check a result or migrate a known Marlin value to Klipper.
| Drive | Marlin steps/mm | Klipper rotation_distance |
|---|---|---|
| X/Y belt, GT2 2 mm with 20T pulley | 80 | 40 |
| Z lead screw, T8-8 | 400 | 8 |
| Z threaded rod, M8 (1.25 mm pitch) | 2560 | 1.25 |
| Ender 3 / CR-10 stock extruder (MK8) | 93 | 34.41 |
| Prusa MK3S extruder (geared 3:1) | 280 | 11.43 |
| BMG-style geared extruder | 415 | 7.71 |
This second table shows the theoretical steps per mm for common hardware at 1.8 degrees and 1/16 microstepping with direct drive, along with the movement resolution each setup gives per microstep.
| Hardware | Steps/mm | Resolution per microstep |
|---|---|---|
| GT2 2 mm belt, 16T pulley | 100 | 10 µm |
| GT2 2 mm belt, 20T pulley | 80 | 12.5 µm |
| T8-8 lead screw (8 mm lead) | 400 | 2.5 µm |
| T8-4 lead screw (4 mm lead) | 800 | 1.25 µm |
| T8-2 lead screw (2 mm lead) | 1600 | 0.625 µm |
How to Calculate Steps per mm (E-Steps)
Example Problem 1: calibrating e-steps with the mark method.
First, send M503 and read your current e-steps. In this example the firmware reports 93 steps/mm.
Next, mark the filament 120 mm above the extruder, command a 100 mm extrusion at a slow speed, then measure again. In this example 26 mm remains to the mark, so the actual extruded length is 120 – 26 = 94 mm.
Finally, apply the calibration formula:
NEW ESTEPS = 93 * (100 / 94) = 98.94
Send M92 E98.94 followed by M500 to save. The extruder was under-extruding by 6 percent.
Example Problem 2: belt axis steps per mm.
A 1.8 degree motor (200 full steps) runs at 1/16 microstepping with a direct-mounted 20 tooth GT2 pulley on a 2 mm pitch belt. One revolution moves the belt 2 * 20 = 40 mm, so:
SPM = (200 * 16 * 1) / (2 * 20) = 80
The axis needs 80 steps per mm, each microstep moves 12.5 microns, and the equivalent Klipper rotation_distance is 3200 / 80 = 40.
Steps per mm (E-Steps) FAQ
Why is my measured e-steps value different from the theoretical one?
The hardware formula assumes the hobbed gear moves exactly its circumference of filament per revolution. In practice the teeth bite into the filament, the effective diameter is slightly smaller than the measured one, and grip varies with spring tension and material hardness. The theoretical number is a starting point that is often a few percent low or high. Always finish with a measured 100 mm calibration test and save that value instead.
How do I set steps per mm in Klipper if there is no M92?
Klipper does not use steps per mm at all. Each stepper section in printer.cfg takes a rotation_distance, the distance the axis moves per motor revolution. Convert any steps per mm value with rotation_distance = full steps times microsteps divided by steps per mm, which this calculator prints with every result. For calibration, scale your existing value with new rotation_distance = old rotation_distance * (actual / commanded), which is the same correction inverted. If the result lands within 0.01 of a whole number on X, Y, or Z, round it to that whole number, then save the file and issue a RESTART.
Do I need to recalibrate e-steps when I change filament or nozzle?
No. E-steps describe the mechanical relationship between motor steps and filament movement, so they only change when you modify the extruder itself, such as a new hobbed gear, drive unit, or motor. Differences between filament brands or materials are flow differences, not e-step differences, and belong in your slicer’s flow or extrusion multiplier setting. Calibrate e-steps once with cold or unloaded measurements done carefully, then tune flow per filament profile.
