Calculate theoretical steps/mm for belt, lead screw and extruder drives, or calibrate extruder steps/mm or an existing Klipper rotation_distance from a measured test. Marlin command previews and both Klipper gearing conventions are distinguished; no commands are sent to a printer.
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)
A steps/mm value converts to Klipper rotation_distance using one of two alternatives. Let G be motor turns per output turn. Use the folded value only when gear_ratio is omitted; if gear_ratio = G is configured, include G in the conversion:
No gear_ratio: rotation_distance = (S * M) / SPM With gear_ratio = G: rotation_distance = (S * M * G) / SPM
Variables:
- NEW ESTEPS is the corrected extruder steps/mm for an M92 preview; M500 saves all configurable settings only when EEPROM_SETTINGS is enabled
- 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 (or G) is motor turns per output turn: 1 for direct drive; an actual 50:17 driven:driver tooth pair is 50/17, not a truncated 2.94
- 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
Calibration accepts a directly measured length or exact before-minus-after marks. The steps/mm workflow scales old steps/mm by requested/actual; the existing-Klipper workflow scales old rotation_distance by actual/requested while preserving its configured gearing. Three hardware workflows cover extruders, linear X/Y belts and linear Z screws. Their microstep increment is nominal, not guaranteed positioning accuracy. The two displayed Klipper gearing values are alternatives, not settings to combine. See Klipper’s rotation-distance guidance and Marlin M92.
Illustrative Steps/mm Values and Klipper Equivalents
This table illustrates steps/mm and the corresponding folded Klipper rotation_distance at 200 full steps and 16 microsteps, with no separate gear_ratio line. The extruder rows are numerical examples, not verified factory defaults. If gear_ratio is configured, multiply the folded distance by that ratio instead.
| 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 |
| Illustrative extruder setting: 93 steps/mm | 93 | 34.41 |
| Illustrative extruder setting: 280 steps/mm | 280 | 11.43 |
| Illustrative extruder setting: 415 steps/mm | 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, read the active M92 E setting using M92 without parameters, or M503 on older Marlin versions. This reports active settings, not proof of saved EEPROM contents. This example uses 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
The corrected value is approximately 98.936170213 steps/mm (98.94 at two decimals). A Marlin preview is M92 E98.936170213 in millimeter mode; M500 can save all configurable settings if EEPROM_SETTINGS is enabled. The measured extrusion was 6% short. Back up and verify settings before applying changes.
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 uses rotation_distance. With no gear_ratio line, it is travel per motor revolution: full steps × microsteps ÷ steps/mm. With gear_ratio G configured, use full steps × microsteps × G ÷ steps/mm, which is travel per output revolution; do not apply the reduction twice. Extruder calibration scales the existing value by actual/requested with the configuration unchanged, then Klipper recommends three decimal places. Near-whole-number rounding within 0.01 is guidance for hardware-derived X/Y/Z values, not a universal extruder rule. Use hardware dimensions rather than extrusion-style measure-and-trim for X/Y/Z. See Klipper stepper configuration.
Do I need to recalibrate e-steps when I change filament or nozzle?
Steps/mm describe the mechanical drive relationship. After resolving slipping or skipped steps, follow the firmware’s measured extrusion procedure and verify the result; Klipper specifies an appropriately heated hotend and slow extrusion, so do not bypass extrusion protections or assume a cold loaded hotend is suitable. Filament-specific flow tuning is separate from this mechanical setting. Motor angle, driver microstepping or gearing changes can also change the correct value.
