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
- Heat the hotend to the loaded filament’s printing temperature. Creality’s Ender 3 firmware refuses extrusion below 170°C.
- Send
M503and record the E value on theM92line. - Mark the filament 120 mm above the extruder inlet.
- Send
M83, thenG1 E100 F50. - Measure from the inlet to the mark and subtract that from 120 mm.
- Calculate old E × 100 ÷ actual movement and send
M92 Ewith the result. - Repeat the test, save with
M500, and confirm withM503after 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 configuration | X | Y | Z | E | How to use the reference |
|---|---|---|---|---|---|
| Original Ender 3, Creality’s published Bowden firmware | 80 | 80 | 400 | 93 | Factory source defaults; saved settings can override them |
| Ender 3, Marlin examples for the V1 (Melzi), 4.2.2 and 4.2.7 boards | 80 | 80 | 400 | 93 | Board revision does not change the example defaults |
| Ender 3 Pro, Marlin CrealityV1 example | 80 | 80 | 400 | 93 | Same Bowden reference as the original |
| Ender 3 V2, Marlin V4.2.2 CrealityUI example | 80 | 80 | 400 | 93 | Project example for stock-style hardware, not proof of your installed firmware |
| Ender 3 Neo and V2 Neo, Marlin examples | 80 | 80 | 400 | 93 | Project examples; confirm with M503 |
| Ender 3 S1, Creality’s published source (V3.0.3) | 80 | 80 | 400 | 424.9 | Marlin’s S1 STM32F1 example sets 430 instead |
| Ender 3 V3 SE, Creality’s published source | 80 | 80 | 400 | 424.9 | Sprite-extruder branch of the configuration |
| Ender 3 V3 KE | Klipper config | Klipper config | Klipper config | rotation_distance | Klipper-based firmware; see the Klipper section below |
| Upgraded extruder or third-party board | Read | Read | Read | Read with M503 | Verify 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).
| Axis | Drive | mm moved per motor revolution | Steps/mm |
|---|---|---|---|
| X and Y | 2 mm pitch belt, 20-tooth pulley | 40 | 3,200 ÷ 40 = 80 |
| Z | T8 lead screw | 8 | 3,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 marking | Marlin MOTHERBOARD | Processor in Marlin’s list | Example E steps/mm |
|---|---|---|---|
| V1.1.x, including V1.1.4 | BOARD_MELZI_CREALITY | ATmega644P / ATmega1284P | 93 |
| V4.2.2 | BOARD_CREALITY_V4 | STM32F103RC / STM32F103RE | 93 |
| V4.2.7 | BOARD_CREALITY_V427 | STM32F103RC / STM32F103RE | 93 |
| v2.4.S1_301 (Ender 3 S1) | BOARD_CREALITY_V24S1_301 | STM32F103RC / STM32F103RE | 430 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.
- 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.
- Bed level and Z offset. A machine without a probe levels by hand; manual vs auto bed leveling explains what a probe changes.
- E-steps. This page, once per extruder.
- Temperature per filament. Print a temperature tower for each new material.
- Flow per filament profile, at the chosen temperature.
- 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.