PrintLabGuide
Stylized Ender 3 3D printer with blue filament spool, Bowden extruder and print bed, next to a vernier caliper measuring filament and a hex key.
calibration

Ender 3 E-Steps & Steps per mm: Exact Values and Calibration

Find documented Ender 3 steps per mm, read the active E value, calibrate with Marlin G-code, save to EEPROM and check firmware differences by model.

By PrintLabGuide Editorial · ·Updated · 11 min read

Stock Ender 3 steps per mm are X 80, Y 80, Z 400 and E 93, as set in Creality’s firmware for the original Bowden Ender 3. Marlin’s example configurations for the Ender 3 Pro, V2, Neo and V2 Neo use the same four. The Ender 3 S1 and V3 SE differ on E only: Creality’s source sets 424.9.

That 93 is a firmware reference value, not a number to copy onto every printer carrying the Ender 3 name. Read the active setting before calibrating, especially after an extruder replacement or firmware update.

This page covers the machine-specific command sequence and EEPROM check. For the theory, measurement troubleshooting and equivalent settings in other firmwares, use the generic extruder e-steps guide.

Ender 3 E-Steps Calibration: The Short Version

  1. Heat the hotend to the loaded filament’s printing temperature. Creality’s Ender 3 firmware refuses extrusion below 170°C.
  2. Send M503 and record the E value on the M92 line.
  3. Mark the filament 120 mm above the extruder inlet.
  4. Send M83, then G1 E100 F50.
  5. Measure from the inlet to the mark and subtract that from 120 mm.
  6. Calculate old E × 100 ÷ actual movement and send M92 E with the result.
  7. Repeat the test, save with M500, and confirm with M503 after a restart.

Each step, with the checks that make it reliable, is set out below.

Ender 3 Stock Steps per mm by Model

Model and documented configurationXYZEHow to use the reference
Original Ender 3, Creality’s published Bowden firmware808040093Factory source defaults; saved settings can override them
Ender 3, Marlin examples for the V1 (Melzi), 4.2.2 and 4.2.7 boards808040093Board revision does not change the example defaults
Ender 3 Pro, Marlin CrealityV1 example808040093Same Bowden reference as the original
Ender 3 V2, Marlin V4.2.2 CrealityUI example808040093Project example for stock-style hardware, not proof of your installed firmware
Ender 3 Neo and V2 Neo, Marlin examples808040093Project examples; confirm with M503
Ender 3 S1, Creality’s published source (V3.0.3)8080400424.9Marlin’s S1 STM32F1 example sets 430 instead
Ender 3 V3 SE, Creality’s published source8080400424.9Sprite-extruder branch of the configuration
Ender 3 V3 KEKlipper configKlipper configKlipper configrotation_distanceKlipper-based firmware; see the Klipper section below
Upgraded extruder or third-party boardReadReadReadRead with M503Verify the exact board and extruder before borrowing a default

All numeric entries are steps/mm. Rows naming Creality come from its own published source: the original Ender 3 firmware, the Ender 3 S1 source and the Ender 3 V3 SE source. Rows naming Marlin are examples: Ender 3 V1, Ender 3 Pro, Ender 3 V2, Ender 3 Neo, V2 Neo and S1. Their import branch is a reference, not a firmware package to compile or flash. Use the release configuration that matches your firmware if you need source-level changes.

Published defaults for the same printer do not always agree. Creality’s S1 source says 424.9 where Marlin’s S1 example says 430, and Klipper’s sample config for the 2018 Ender 3 gives the extruder a rotation_distance of 33.683, which converts to 3,200 ÷ 33.683 ≈ 95.0 steps/mm rather than 93. Treat any of them as a starting point; the measurement below decides.

This calibration changes E only. Do not paste all four axis values into M92 to fix an extrusion problem. The other axes describe motion hardware, and a printed cube is not a reason to reset them.

For the newer models, the Ender 3 V3 firmware update guide explains the firmware split. Establish which firmware is installed before using this Marlin procedure. An Ender 3 converted to Klipper uses rotation distance instead of M92 E; the conversion is covered below, and the generic guide compares the Klipper and Marlin formulas.

Why Ender 3 X and Y Are 80 and Z Is 400

X and Y are 80 steps/mm and Z is 400 because the motion hardware fixes them; they are not calibration results. Klipper’s rotation distance documentation relates the units as rotation distance = full steps per rotation × microsteps ÷ steps per mm, and notes that most steppers are 1.8 degree motors with 200 full steps per rotation. At 16 microsteps that is 3,200 steps per motor revolution.

Klipper’s 2018 Ender 3 config sets 16 microsteps on every axis, a rotation distance of 40 mm on X and Y, and 8 mm on Z. The same documentation gives 40 as the rotation distance of a 2 mm pitch belt on a 20-tooth pulley, and 8 as that of the common T8 lead screw (2 mm pitch, 4 separate threads).

AxisDrivemm moved per motor revolutionSteps/mm
X and Y2 mm pitch belt, 20-tooth pulley403,200 ÷ 40 = 80
ZT8 lead screw83,200 ÷ 8 = 400

Changing those values only makes sense when one of the parts changes: pulley, belt, lead screw, motor step angle or microstepping. A test cube that measures slightly off on X or Y is a reason to check belt tension, wheel adjustment and extrusion width first.

Ender 3 Board Versions: 1.1.4, 4.2.2 and 4.2.7

The board revision does not change Ender 3 steps per mm. Marlin’s Ender 3 examples for the V1 Melzi board, the 4.2.2 board and the 4.2.7 board all set 80, 80, 400 and 93. What the revision changes is the processor and the firmware build, so read the version printed on the mainboard before downloading anything.

A board marked V1.1.4 is one of Creality’s Melzi-type controllers; TH3D’s Melzi connection guide applies to the V1.1.2, V1.1.3 and V1.1.4 revisions. Klipper’s 2018 Ender 3 config is compiled for the AVR atmega1284p, and Marlin’s board list places the matching board definition in its ATmega644P/ATmega1284P group.

Board markingMarlin MOTHERBOARDProcessor in Marlin’s listExample E steps/mm
V1.1.x, including V1.1.4BOARD_MELZI_CREALITYATmega644P / ATmega1284P93
V4.2.2BOARD_CREALITY_V4STM32F103RC / STM32F103RE93
V4.2.7BOARD_CREALITY_V427STM32F103RC / STM32F103RE93
v2.4.S1_301 (Ender 3 S1)BOARD_CREALITY_V24S1_301STM32F103RC / STM32F103RE430 in Marlin’s example, 424.9 in Creality’s source

Read the Active E Value

Connect a G-code terminal while the printer is idle, then send:

M503

Find the reported M92 line and record the value following E, such as E93.00. Marlin documents M503 as a report of the current settings in memory. It does not by itself prove what was saved previously. Marlin’s M92 page also lists M92 with no parameters as a way to get the current steps-per-unit, which helps on a build compiled with DISABLE_M503.

If neither command is available, check whether the installed firmware exposes steps/mm through its display or terminal. Do not substitute 93 merely because the report failed. Keep a copy of the original setting so the adjustment can be reversed.

Measure a Controlled 100 mm Extrusion

Use a ruler or caliper and a fine marker. Identify a fixed reference at the extruder inlet. On a Bowden machine, measure the filament entering the drive, not the curled plastic leaving the nozzle.

Heat the hotend to a temperature supported by the loaded filament and printer. For a PLA profile that specifies 200°C, the command is:

M109 S200

That is a conditional example, not a temperature for every material. Leave the cold-extrusion protection enabled: Creality’s Ender 3 firmware defines PREVENT_COLD_EXTRUSION with EXTRUDE_MINTEMP 170, so below 170°C the move is refused rather than performed. Ensure the nozzle has clearance from the bed and can extrude freely.

Mark the filament 120 mm above the inlet reference. Then send:

M83
G1 E100 F50

M83 selects relative extrusion; F50 requests 50 mm/min. Let the move finish before measuring. If the drive clicks, slips or grinds the filament, resolve the feed problem before calculating a correction.

Measure the distance remaining from the same inlet reference to the mark. Subtract it from 120 mm. A remaining distance of 23 mm means 97 mm actually moved. The expected remainder for an exact 100 mm move is 20 mm.

Calculate, Apply and Save E-Steps

Use your recorded starting value:

new E-steps = old E-steps × 100 / actual filament movement

With a starting value of 93 and a measured movement of 97 mm, the calculated value is 95.88 steps/mm. Only if those are your readings would you send:

M92 E95.88

Make another reference mark and repeat the movement check with the new value. Use consistent measurement points. Widely different results between repetitions indicate a problem that one constant cannot correct.

Once the result is repeatable, save it:

M500
M503

M500 requires EEPROM support. Creality’s original Ender 3 source defines EEPROM_SETTINGS, commented “Enable for M500 and M501 commands”, so a stock firmware build has it; a custom build may not. Read the response and confirm that the reported E value matches the one you intended to save. Do not assume an accepted M92 also guarantees persistent storage.

Set E-Steps From the Ender 3 Screen

On the stock Ender 3 control screen, the value sits under Control > Motion > Esteps/mm, according to Let’s Print 3D’s Creality walkthrough, so the calibration can run without a computer. The same walkthrough extrudes through Prepare > Move Axis > Move 1mm > Extruder, turning the knob until the target reads 100, and saves with Store Settings. Ender 5 menus call that entry Store Memory, and CR-10 menus Save to EEPROM.

The screen route gives up control of the feed rate, since the menu move runs at the firmware’s manual-move speed while the terminal lets you request F50. Menu labels also differ on other Ender 3 screens. If an entry is not where this path says, use the terminal sequence rather than guessing, and still confirm the saved value after a restart.

Verify After Restarting the Printer

Finish the extrusion session and allow the printer to cool normally before powering it down. After restarting, send M503 again. The E value should match the saved result. This distinguishes a session-only adjustment from a value that survives a restart.

If it reverted, check EEPROM support and the installed firmware’s storage instructions. Also inspect start G-code for an M92 command that would overwrite the saved value at the start of a job. Avoid M502 as a troubleshooting shortcut: restoring defaults affects settings beyond the extruder.

Before printing, let the slicer’s normal start G-code establish its required extrusion mode. If you continue sending commands manually, explicitly select the mode those commands expect; this procedure used relative extrusion.

Ender 3 on Klipper: Converting 93 Steps per mm

Klipper stores the extruder calibration as rotation_distance in printer.cfg rather than as an M92 value. Using Klipper’s formula, rotation distance = full steps per rotation × microsteps ÷ steps per mm, so Creality’s 93 at 200 full steps and 16 microsteps becomes 3,200 ÷ 93 ≈ 34.409 mm. Klipper’s sample Ender 3 config ships 33.683 instead, roughly 95 steps/mm.

Klipper’s own measure-and-trim procedure marks the filament about 70 mm from the extruder intake, extrudes 50 mm with G91 then G1 E50 F60, and corrects in the opposite direction from Marlin: new rotation distance = old × actual ÷ requested, rounded to three decimal places. The generic e-steps guide sets the two formulas side by side.

Creality describes the Ender 3 V3 KE as based on the Klipper firmware, so on that model check the extruder’s rotation distance rather than sending M92.

Where E-Steps Fits When You Calibrate an Ender 3

E-steps is the third job when you calibrate an Ender 3: after the mechanics and the bed, and before anything set per filament.

  1. Mechanics. Belt tension, the eccentric nuts on the carriage wheels and the frame bolts. Dimensional error from a loose belt is not something a steps/mm change fixes.
  2. Bed level and Z offset. A machine without a probe levels by hand; manual vs auto bed leveling explains what a probe changes.
  3. E-steps. This page, once per extruder.
  4. Temperature per filament. Print a temperature tower for each new material.
  5. Flow per filament profile, at the chosen temperature.
  6. Retraction last. Bowden and direct-drive machines need different starting points; see retraction settings for stringing.

Keep the resulting E value with the printer’s hardware record. Use a filament profile for the later flow rate calibration, after choosing its temperature. The calibration order shows which checks to repeat after an extruder, nozzle or firmware change. If that change is a new nozzle on an Ender 3 V2, see which MK8 brass nozzles fit the Ender 3 V2.

FAQ

what are ender 3 pro and ender 3 v2 e-steps?

Both use 93 E-steps per mm, with 80, 80 and 400 for X, Y and Z. Marlin’s Ender 3 Pro example on the Melzi board and its Ender 3 V2 example on the 4.2.2 board set identical values. A replaced extruder, new board or old saved settings can change the running value, so check with M503.

what is the ender 3 s1 e steps value?

Creality’s published Ender 3 S1 firmware source sets 424.9 E-steps per mm, with the usual 80, 80 and 400 on X, Y and Z. Marlin’s S1 example configuration uses 430 instead, so treat both as starting points. Read your printer’s current value with M503, run the 100 mm extrusion test, and save whatever the measurement gives.

why do my ender 3 e-steps reset after turning it off?

The new value was set but never saved, or something overwrites it at startup. M92 changes only the running setting; M500 writes it to EEPROM, which Creality’s Ender 3 firmware enables. After a restart, check with M503, then look for an M92 line in the slicer’s start G-code that replaces the saved value.

what temperature should the hotend be for ender 3 e-steps calibration?

Use the normal printing temperature of the filament you have loaded, for example 200°C if your PLA profile specifies it. The hard floor is 170°C: Creality’s Ender 3 firmware enables cold-extrusion prevention at that temperature and refuses the extrusion move below it. Keep the temperature the same for every repeat of the test.

do i need to calibrate e-steps on a new ender 3?

Yes, check it once rather than trusting the default. The firmware value is a design reference, and published references for the same Ender 3 already disagree: Creality’s source says 93, while Klipper’s sample config works out to about 95. One 100 mm test shows whether yours is close; recalibrate after any extruder, motor or firmware change.

Sources

  1. Creality: Original Ender-3 firmware configuration
  2. Marlin: Ender-3 V2 V4.2.2 CrealityUI example configuration
  3. Marlin: Set axis steps per unit
  4. Marlin: Report settings
  5. Marlin: Save settings
  6. Marlin: Relative extrusion
  7. Marlin: Wait for hotend temperature
  8. Marlin: Ender-3 CrealityV1 (Melzi) example configuration
  9. Marlin: Ender-3 CrealityV422 example configuration
  10. Marlin: Ender-3 CrealityV427 example configuration
  11. Marlin: Ender-3 Pro CrealityV1 example configuration
  12. Marlin: Ender-3 Neo example configuration
  13. Marlin: Ender-3 V2 Neo CrealityV422 example configuration
  14. Marlin: Ender-3 S1 STM32F1 example configuration
  15. Creality: Ender-3 S1 firmware source configuration
  16. Creality: Ender-3 V3 SE firmware source configuration
  17. Creality: Ender-3 V3 KE product page
  18. Marlin: Supported boards
  19. TH3D Studio: Creality Melzi board connections
  20. Klipper: Rotation distance
  21. Klipper: Creality Ender 3 (2018) example config
  22. Let's Print 3D: How to calibrate the extruder steps (Ender-3 / Ender-5 / CR-10)

Related