How to Calibrate E-Steps on Ender 3 (Step by Step)
A measured, terminal-based walkthrough for calibrating extruder e-steps on the Ender 3, with the exact G-code, the formula, and how to verify the result
If your Ender 3 is laying down walls that look starved or bloated no matter how you tweak the slicer, the fix usually starts upstream of the slicer entirely. Learning how to calibrate e-steps on Ender 3 means teaching the firmware exactly how many motor steps equal one millimeter of filament pushed through the extruder. Get this number right and every flow-rate and temperature adjustment you make afterward sits on solid ground. Get it wrong and you are chasing a moving target forever.
E-steps (steps per millimeter on the E axis) is a single firmware value. The stock Creality Ender 3 ships at 93 steps/mm with the original Bowden setup. That figure is a factory average, and the real number for your specific extruder, hobbed gear, and motor can drift a few percent off it. A 5 percent error there shows up as chronic under- or over-extrusion that no amount of flow tuning fully cancels.
What you need before you start
- A way to send G-code: Pronterface (Printrun), OctoPrint’s terminal, or the console in your slicer. The LCD menu works too but the terminal is faster.
- A digital caliper, or a ruler if that is all you have. A caliper removes most of the measurement error.
- A fine permanent marker.
- Filament loaded, and a hotend you can bring up to printing temperature. The extruder motor will not move cold filament, so you heat first.
Measure in free air with the filament loaded normally. There is no need to remove the hotend.
The calibration procedure
The principle is simple: command the printer to extrude exactly 100 mm, measure what it actually pushed, and correct the firmware value by the ratio.
1. Read your current e-steps. Send M503 and look for the line beginning echo: M92. The value after E is your current setting, for example E93.00. Per the Marlin firmware documentation ↗, M92 is the command that sets steps-per-unit for each axis, and M503 reports the values currently in memory. Write your starting number down.
2. Heat the hotend. Send M109 S200 for PLA. This both sets 200 °C and waits until the nozzle reaches it before continuing. Cold extrusion will trip the printer’s minimum-temperature guard and skip the motor.
3. Mark the filament. With the marker, make a line on the filament 120 mm above the point where it enters the extruder body. Measuring from 120 mm rather than exactly 100 gives you margin so the mark never disappears into the extruder during the test. The Teaching Tech calibration guide ↗ uses this same 120 mm reference for that reason.
4. Switch to relative extrusion and push 100 mm. Send M83 so the next move is measured from the current position, then G1 E100 F50. The slow feed rate of 50 mm/min matters: pushing 100 mm fast can stall the motor or grind the filament, which corrupts the reading. Wait for it to finish.
5. Measure what is left. Measure from the extruder entry point up to your mark. If the printer extruded perfectly, exactly 100 mm passed through and you will read 20 mm remaining. Whatever you read, subtract it from 120 to get the actual length extruded. Read 23 mm? You extruded 97 mm and you are under-extruding.
6. Calculate the new value. The formula every reputable guide uses, including 3DMaker Engineering ↗, is:
new e-steps = (current e-steps × 100) ÷ actual mm extruded
With a starting value of 93 and an actual extrusion of 97 mm: (93 × 100) ÷ 97 = 95.88. Round to two decimals.
7. Write and save the value. Send M92 E95.88 to apply it, then M500 to commit it to EEPROM. This last step is the one people forget. Without M500, the firmware reverts to the old value at the next power cycle. The same source notes the new figure is only persistent once saved.
8. Verify. Repeat steps 3 through 5 once more. You should now read within roughly 1 mm of the 20 mm target. If it is still off by more than that, run the calculation again on the new result and re-save. Two passes is usually enough.
How to verify it actually worked
The numbers test above is the immediate check. The real-world confirmation is a print. Slice a single-wall calibration cube or a hollow open-box at one perimeter, zero infill, zero top layers, and measure the wall thickness with your caliper. A 0.4 mm nozzle laying a 0.4 mm line width should produce a wall very close to 0.4 mm. If it reads consistently thin or thick after e-steps are correct, that residual is what slicer flow rate is for, and as 3D Printerly ↗ points out, e-steps must be calibrated first or your flow-rate math inherits the error.
One caveat worth stating plainly: these defaults assume a stock Bowden Ender 3. If you have swapped to a direct-drive extruder such as the Sprite, or a dual-gear extruder with a different gear ratio, your baseline e-steps will be a completely different number (often in the 400+ range), and you must read your actual starting value with M503 rather than assuming 93.
E-steps are not a one-time-and-forget setting. Hobbed gears wear, tension screws shift, and a motor swap resets the math. Like any system whose output slowly drifts away from spec, the extruder benefits from a periodic re-check, the same discipline that drift monitoring ↗ applies to deployed models: measure, compare to a known reference, correct. A two-minute extrusion test every few months is cheap insurance against a slow slide back into under-extrusion.
Sources
- M92 Set Axis Steps-per-unit — Marlin Firmware docs ↗: The authoritative reference for the M92 command and how steps-per-unit values are set and reported alongside M500/M503.
- Teaching Tech — 3D printer calibration guide ↗: A widely cited community calibration walkthrough; source for the 120 mm mark and slow 50 mm/min extrusion practice.
- 3DMaker Engineering — How to Calibrate Extruder E-Steps ↗: Step-by-step e-step procedure including the correction formula and the M92/M500 save sequence.
- 3D Printerly — Calibrate Extruder E-Steps & Flow Rate ↗: Explains why e-step calibration must precede flow-rate calibration and how the two interact.
Sources
Related
Flow Rate Calibration: Getting Dimensional Accuracy Right
How to calibrate flow rate for accurate, well-bonded prints — the single-wall method, the calibration cube, and where flow rate fits relative to e-steps
Extruder Calibration: How to Tune E-Steps for Accurate Extrusion
E-steps determine how much filament your printer actually extrudes. This calibration guide walks through measuring, calculating, and setting the correct
Bed Leveling Explained: Manual vs Auto and How ABL Probes Work
What bed leveling actually corrects, the difference between manual leveling and automatic bed leveling, and how the common ABL probe types — inductive