3D Printer Stepper Motor Steps-per-mm Calculator

Calculate the exact steps-per-millimeter firmware value for your 3D printer's X, Y, and extruder axes — based on motor step angle, microstepping, pulley teeth, and belt pitch.

3D Printer Stepper Motor Resolution Calculator

Determine the exact steps per millimeter value for your 3D printer firmware for dimensionally accurate prints.

01 — Motor Step Angle
02 — Microstepping Mode

Most printers use 1/16 (TMC2208) or 1/32 (TMC2209). Higher microstepping = smoother, but lower effective torque.

03 — Belt & Pulley

Dist/rev: 20 × 2mm = 40.000 mm/rev

Firmware Steps per mm
80.00
steps/mm
Min resolution: 12.500 µm per microstep
04 — Full Derivation
Step angle1.8°
Base steps/rev360/1.8 = 200
Microstepping1/16
Microsteps/rev200 × 16 = 3200
Pulley teeth20T
Belt pitch2 mm
Distance/rev20 × 2 = 40.000 mm
Steps/mm3200 / 40.000 = 80.0000
Resolution (µm)12.500 µm
Marlin / Klipper Config
# Marlin Configuration.h
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80.0000, 80.0000, ... }
# Klipper printer.cfg
rotation_distance: 40.0000
microsteps: 16
Summary: Using a 1.8° motor with 1/16 microstepping on a 20-tooth pulley at 2mm pitch, your firmware requires exactly 80.0000 steps per millimeter.
Practical Example

A Creality Ender 3 uses a 1.8° NEMA 17, 1/16 microstepping, 20-tooth GT2 pulley, 2mm pitch belt. Steps: 200 × 16 = 3,200. Dist/rev: 20 × 2 = 40mm. Steps/mm: 3,200 / 40 = 80.00. Resolution: 40 / 3,200 = 0.0125mm = 12.5 µm (theoretical — belt limits real accuracy to ~0.1mm). For Marlin, set M92 X80.00 Y80.00 and save with M500.

Email LinkText/SMSWhatsApp

Quick Answer: What are steps per mm in 3D printing?

Steps per mm is the firmware value that tells your 3D printer's stepper motor controller exactly how many electrical pulses equate to one millimeter of physical movement. An incorrect steps/mm value causes every print dimension to be wrong — a 20mm calibration cube printing at 19.5mm or 20.8mm is the classic symptom. This calculator derives the mathematically exact value from your motor, driver, pulley, and belt specifications.

The Core Formula

steps/mm = (full_steps_per_rev × microsteps) / (pulley_teeth × belt_pitch)

For a standard Ender 3 (1.8° motor, 1/16 microstepping, 20T GT2 pulley): (200 × 16) / (20 × 2) = 80.00 steps/mm. This value goes into Marlin via M92 X80 Y80 or into Klipper as rotation_distance: 40.

Common Printer Configurations

Printer Motor Microstep Pulley Steps/mm
Ender 3 / Ender 3 V21.8°1/1620T GT280.00
Prusa MK3S+1.8°1/1616T GT2100.00
Voron 2.4 (CoreXY)1.8°1/3220T GT2160.00
RatRig V-Core 30.9°1/1620T GT2160.00
Bambu X1C (CoreXY)0.9°1/1620T GT2160.00

When You Need to Recalculate

Motor or Driver Swap

Replacing a 1.8° motor with a 0.9° motor doubles your base steps from 200 to 400 — you must recalculate. Similarly, upgrading from an A4988 driver (1/16) to a TMC2209 at 1/32 doubles the microstep count. Failing to update firmware after a hardware swap causes every dimension to be exactly 2× wrong.

Belt or Pulley Change

Switching from a 20T to a 16T pulley increases steps/mm by 25% (from 80 to 100 on a standard setup). This is a common upgrade for finer resolution. Conversely, upgrading to a 36T or 40T pulley for high-speed CoreXY builds reduces steps/mm, requiring a firmware update to avoid undersized prints.

Pro Tips

Do This

  • ✓Always verify with a calibration cube. After setting your calculated steps/mm, print a 20mm XYZ calibration cube and measure with calipers. The calculated value is mathematically exact for your hardware — but belt tension, frame squareness, and slicer settings still affect the final print.
  • ✓Use M503 to confirm saved values. After sending M92 and M500 to Marlin, always send M503 to read back the EEPROM and confirm your values were actually saved. Power cycling without M500 loses all changes.

Avoid This

  • ✗Don't use this formula for lead screw Z-axes. Z-axis on most printers uses a lead screw, not a belt. The formula is completely different: steps/mm = (steps_per_rev × microsteps) / (pitch × starts). Using the belt formula for a lead screw axis gives a wildly wrong value.
  • ✗Don't "tune" steps/mm to fix dimensional errors. If your 20mm cube prints at 19.8mm, the correct fix is belt tension or slicer flow rate — not adjusting steps/mm. The calculated value is mathematically correct for your hardware. Fudging it masks the real mechanical problem.

Frequently Asked Questions

What steps/mm should I use for my Ender 3?

The stock Ender 3, Ender 3 V2, and Ender 3 S1 all use a 1.8° stepper motor with 1/16 microstepping on a 20-tooth GT2 (2mm pitch) pulley. The correct steps/mm for X and Y axes is 80.00. For the Z-axis (T8 lead screw, 8mm lead): 400.00. For the extruder (Bowden), the stock value is typically 93, but this must be calibrated per-machine by measuring 100mm of filament extrusion.

Do I need steps/mm in Klipper?

No — Klipper uses rotation_distance instead, which is the distance the axis travels per full motor revolution (pulley_teeth × belt_pitch). For a 20T GT2 setup: rotation_distance = 40. Klipper calculates steps internally from this value plus your configured microsteps. This approach avoids floating-point rounding issues that affect fractional steps/mm values in Marlin.

Does higher microstepping improve print quality?

Marginally. The primary benefit of higher microstepping (1/32 or 1/64) is smoother and quieter motor operation, not finer print dimensions. Beyond 1/16, the motor's holding torque per microstep drops so much that real positional accuracy is limited by mechanical factors (belt stretch, backlash, thermal drift) rather than step resolution. TMC drivers with StealthChop internally interpolate to 1/256 regardless of your configured microstep setting.

Why is my calibration cube the wrong size?

If the error is exactly 2× (e.g., 40mm instead of 20mm), you almost certainly have a microstepping mismatch between firmware and driver hardware. If the error is small (0.1–0.5mm), it's more likely belt tension, slicer horizontal expansion settings, or elephant's foot from a too-low first layer. Do not adjust steps/mm to compensate for small errors — the calculated value is mathematically exact for your motion system.

Related Calculators