Hardware & Motion
Stepper Angles, GT2 Belts, Lead Screws, and Z Layer Heights
Key takeaways
- Rotation distance equals belt pitch multiplied by pulley tooth count for belt axes, or thread pitch multiplied by the number of thread starts for lead screw axes.
- A standard 1.8° stepper (200 full steps/rev) driving a TR8x8 lead screw moves 0.04 mm per full step, whereas a TR8x4 moves 0.02 mm and a TR8x2 moves 0.01 mm per full step.
- Choosing layer heights in integer multiples of the full-step Z increment avoids holding at fractional microsteps on non-interpolated drivers, though modern TMC drivers with 256-microstep interpolation largely eliminate microstep ripple.
Every linear millimeter traveled by a 3D printer’s toolhead or build plate is determined by fixed mechanical ratios: stepper motor step angle, belt tooth pitch, pulley tooth count, and lead screw thread lead. Unlike extruder steps—which require empirical tuning against filament compression (see Extruder E-Steps and Rotation Distance)—X, Y, and Z motion parameters should always be calculated directly from hardware geometry rather than adjusted from a printed calibration cube. Understanding these kinematic equations explains how Klipper’s rotation_distance, Marlin’s DEFAULT_AXIS_STEPS_PER_UNIT, and full-step Z layer height increments (“magic numbers”) work.
Stepper Motor Step Angles: 1.8° vs. 0.9°
Hybrid bipolar stepper motors used in desktop FDM printers (most commonly NEMA 17 frame size, 42 mm x 42 mm faceplate) convert discrete electrical current pulses into fixed angular increments. The number of full mechanical steps per 360° revolution (N_fs) is defined by the rotor and stator pole geometry:
Full steps per revolution: N_fs = 360° / theta_step
Two step angles dominate 3D printer motion systems:
- 1.8° stepper motor:
360° / 1.8° = 200full steps per revolution. This is the industry standard for X, Y, Z, and extruder axes across bedslingers and CoreXY machines. - 0.9° stepper motor:
360° / 0.9° = 400full steps per revolution. Often installed on CoreXY A/B (X/Y) belt drives to double native angular resolution and reduce vertical fine artifacts (VFAs) caused by rotor pole cogging.
Stepper drivers subdivide each full step into M microsteps (typically M = 16, 32, or 64) by varying the sine and cosine phase currents through the two motor windings. The total number of microstep pulses per motor shaft revolution (N_pulses) is:
Microsteps per revolution: N_pulses = N_fs * M
For a 1.8° stepper with 16x microstepping, one complete revolution requires 200 * 16 = 3,200 step pulses; for a 0.9° stepper at 16x microstepping, one revolution requires 400 * 16 = 6,400 step pulses.
GT2 Belt Pitch and Pulley Kinematics (X and Y Axes)
Belt-driven axes use synchronous toothed timing belts—almost universally GT2 (2GT) profile with a tooth pitch p_belt = 2.00 mm (0.0787 in)—meshing with a toothed drive pulley of tooth count Z_teeth. Because the belt teeth lock positively into the pulley grooves without slipping, one full revolution of the motor pulley advances the belt by a linear distance known in Klipper’s Rotation Distance documentation as rotation_distance:
Belt rotation_distance (mm/rev) = p_belt * Z_teeth
In Marlin Firmware and RepRapFirmware, the equivalent parameter is expressed as microsteps per millimeter (steps_per_mm), derived in Triffid Hunter’s Calibration Guide:
Belt steps_per_mm = (N_fs * M) / (p_belt * Z_teeth) = (N_fs * M) / rotation_distance
Worked Examples for Common GT2 Pulley Configurations
-
Standard 20-tooth GT2 pulley, 1.8° stepper (
N_fs = 200),16xmicrostepping:rotation_distance = 2.00 mm * 20 = 40.00 mm(1.5748 in)steps_per_mm = (200 * 16) / 40.00 = 3,200 / 40.00 = 80.00 steps/mm- Full-step XY resolution:
40.00 mm / 200 = 0.200 mm(0.0125 mmper16xmicrostep)
-
Compact 16-tooth GT2 pulley, 1.8° stepper (
N_fs = 200),16xmicrostepping:rotation_distance = 2.00 mm * 16 = 32.00 mm(1.2598 in)steps_per_mm = (200 * 16) / 32.00 = 100.00 steps/mm- Full-step XY resolution:
32.00 mm / 200 = 0.160 mm(0.0100 mmper16xmicrostep)
-
20-tooth GT2 pulley, 0.9° stepper (
N_fs = 400),16xmicrostepping:rotation_distance = 2.00 mm * 20 = 40.00 mmsteps_per_mm = (400 * 16) / 40.00 = 160.00 steps/mm- Full-step XY resolution:
40.00 mm / 400 = 0.100 mm(0.00625 mmper16xmicrostep)
Belt Pitch (p_belt) |
Pulley Teeth (Z_teeth) |
Stepper Angle | Microsteps (M) |
Klipper rotation_distance |
Marlin steps_per_mm |
Full-Step Increment |
|---|---|---|---|---|---|---|
| 2.0 mm (GT2) | 16T | 1.8° (200) | 16 | 32.0 mm | 100.00 | 0.160 mm |
| 2.0 mm (GT2) | 20T | 1.8° (200) | 16 | 40.0 mm | 80.00 | 0.200 mm |
| 2.0 mm (GT2) | 20T | 0.9° (400) | 16 | 40.0 mm | 160.00 | 0.100 mm |
| 2.0 mm (GT2) | 20T | 1.8° (200) | 32 | 40.0 mm | 160.00 | 0.200 mm |
Never “calibrate” X and Y steps_per_mm or rotation_distance from a 20 mm printed cube. A printed cube includes polymer thermal shrinkage, die swell, and perimeter track rounding (covered in Designing 3D-Printed Parts That Fit and Flow Rate and Extrusion Multiplier Calibration). Altering rotation_distance from 40.00 mm to 39.80 mm to force a shrunken 20 mm cube to measure 20.00 mm introduces a 0.5% scale error across the build plate, causing a 200 mm part to print 1.00 mm oversized.
Lead Screw Kinematics: Pitch vs. Lead (TR8x8, TR8x4, TR8x2)
On lead-screw Z axes, two distinct thread parameters govern vertical travel:
- Thread pitch (
p_thread): Axial distance from the crest of one thread groove to the next adjacent groove (2.0 mmon metric TR8 trapezoidal screws). - Number of thread starts (
N_starts): Number of independent helical threads wrapped around the shaft (counted at the flat end of the screw). - Lead (
L): Axial distance the nut advances in one360°revolution of the screw (rotation_distanceon a direct-coupled Z axis):
Lead (rotation_distance) = L = p_thread * N_starts
Standard metric trapezoidal 8 mm lead screws (TR8) come in three common configurations:
- TR8x8 (4-start, 2 mm pitch):
L = 2.0 mm * 4 = 8.00 mm/rev. Standard on the Creality Ender 3 series, Prusa MK3/MK4, and Voron Trident. Fast Z travel, but low mechanical reduction allows heavy gantries to back-drive when motors are de-energized. - TR8x4 (2-start, 2 mm pitch):
L = 2.0 mm * 2 = 4.00 mm/rev. Doubles mechanical advantage and full-step vertical resolution compared to TR8x8 while resisting passive gantry drop. - TR8x2 (1-start, 2 mm pitch):
L = 2.0 mm * 1 = 2.00 mm/rev. Quadruples full-step resolution compared to TR8x8 and prevents back-driving without power.
If the Z stepper drives the lead screw or belt through a gear reduction—such as an 80T : 20T (4:1) pulley ratio—Klipper keeps rotation_distance equal to the driven pulley or screw travel and adds gear_ratio: 80:20, whereas Marlin multiplies steps_per_mm by 80 / 20 = 4.
Full-Step Z Increments (“Magic Number” Layer Heights)
A stepper motor generates its highest holding torque and highest angular positional accuracy at full-step detents (where rotor teeth align directly with energized stator poles). The vertical travel per full step (Delta_z_full) is:
Full-step Z increment: Delta_z_full = L / N_fs = rotation_distance / N_fs
For a standard 1.8° stepper (N_fs = 200) driving a direct-coupled TR8x8 lead screw (L = 8.00 mm):
Delta_z_full = 8.00 mm / 200 = 0.040 mm (40 um, or 0.00157 in)
When you slice a print at a layer height h that is an integer multiple of 0.040 mm—such as 0.08 mm, 0.12 mm, 0.16 mm, 0.20 mm, 0.24 mm, or 0.28 mm (within your nozzle’s limits; see Nozzle Diameter vs. Layer Height, Line Width, and Overhangs)—every layer change advances the Z motor by an exact integer number of full steps.
If instead you slice at h = 0.15 mm on a TR8x8 printer with 16x microstepping (400 steps/mm), consecutive layers command 60, 120, 180, and 240 microsteps (3 + 12/16, 7 + 8/16, 11 + 4/16, and 15 + 0/16 full steps). On non-linear drivers or high-friction Z nuts, cycling through four different fractional microstep phases causes layer thickness to oscillate around 0.150 mm every 4 layers (0.60 mm period).
| Lead Screw / Drive Type | Lead (L) |
Stepper (N_fs) |
Marlin steps_per_mm (16x) |
Full-Step Z (Delta_z_full) |
Full-Step Layer Heights (h) |
|---|---|---|---|---|---|
| TR8x8 (4-start) | 8.00 mm | 1.8° (200) | 400.00 | 0.040 mm | 0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32 mm |
| TR8x4 (2-start) | 4.00 mm | 1.8° (200) | 800.00 | 0.020 mm | Every 0.02 mm increment (0.10, 0.12, 0.14, 0.16, 0.20 mm) |
| TR8x2 (1-start) | 2.00 mm | 1.8° (200) | 1,600.00 | 0.010 mm | Every 0.01 mm increment (0.10, 0.11, 0.12, 0.15, 0.20 mm) |
| M8x1.25 Metric Rod | 1.25 mm | 1.8° (200) | 2,560.00 | 0.00625 mm | 0.05, 0.10, 0.15, 0.20, 0.25, 0.30 mm |
| Belted Z (40 mm, 80:16) | 8.00 mm eff. | 1.8° (200) | 400.00 | 0.040 mm | 0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32 mm |
Why Modern TMC Drivers and Bed Mesh Make Magic Numbers Matter Less
While choosing 0.12 mm, 0.16 mm, 0.20 mm, 0.24 mm, or 0.28 mm layer heights remains good practice, three factors on modern printers greatly reduce the impact of full-step Z increments:
- 256-Microstep Trinamic Drivers: Legacy A4988 and DRV8825 drivers suffered from current-regulation deadbands near the sine-wave zero crossing. Modern Trinamic drivers (TMC2208, TMC2209, TMC2130, TMC5160), documented in the Klipper TMC Drivers guide, interpolate inputs to
256microsteps (0.000156 mmper microstep on TR8x8) with smooth sinusoidal current control. - Live Z-Offset Phase Shift: Adjusting live
Z-offsetby-0.015 mmfor first-layer squish (see First-Layer Squish and Z-Offset Math) immediately shifts every layer off the physical full-step detent onto a fractional microstep phase—though using a multiple of0.040 mmstill keeps the motor on the same electrical phase angle at every layer. - Active Bed Mesh Compensation: Automatic bed leveling (ABL) mesh fade continuously steps the Z motor by micrometers across XY moves, overriding static full-step Z positions.
Run the numbers
Fit, Clearance & Shrinkage Calculator (+ STL Gauge)
Compute CAD dimensions for press, sliding, loose and print-in-place joints after polymer shrinkage and nozzle geometry, and download a printable STL test gauge.
Extrusion Flow, Volumetric Speed & E-Steps Calculator
Calculate capsule road cross-section, volumetric flow rate (mm³/s), speed limits, slicer flow ratio and Klipper/Marlin extruder steps.
Sources and further reading
3D printing guidance on this page is general. Printers, hotends, slicers and filament batches vary, so verify dimensions and settings with test prints and calipers. Always observe thermal, electrical and ventilation safety around heated components and melted polymers. Spotted an error? Tell us and we will review it under our corrections policy.