Extruder Calibration: How to Tune and Verify E-Steps
E-steps decide how much filament your printer really extrudes. Measure, calculate, and set the correct value, then verify it with a second test print.
E-steps (or extrusion steps per millimeter) define how many stepper motor steps are required to move one millimeter of filament. When this value is wrong, every print is wrong — over-extruded at high values, under-extruded at low ones. Getting it right is one of the highest-impact calibrations you can do.
This is the machine-agnostic procedure and the firmware reference. If you are working on a stock Bowden Ender 3 and want the exact G-code sequence with the Marlin-specific commands typed out step by step, use how to calibrate e-steps on Ender 3 instead. If you are not sure whether e-steps are even the right thing to be tuning right now, the 3D printer calibration order shows what depends on what.
What E-Steps Actually Control
When your slicer tells the printer to extrude 10mm of filament, the printer sends pulses to the extruder stepper motor. The E-steps value tells the firmware how many pulses equal 1mm of filament movement. If your extruder is set to 93 steps/mm but the true value is 100 steps/mm, you’re extruding 7% less material than intended — on every print, at every speed, regardless of temperature.
This is different from flow rate, which is a percentage multiplier applied in software. E-steps is the hardware-level calibration. Set E-steps correctly first, then use flow rate only for fine-tuning per-material.
Equipment Required
- A ruler or calipers
- A marker or a piece of tape
- Access to your printer’s console (USB terminal, OctoPrint, or LCD menu)
- Filament loaded and hotend at print temperature
Step 1: Mark 100mm and 120mm on Your Filament
With the hotend at print temperature, mark your filament at 100mm and 120mm above the extruder inlet (the point where filament enters the extruder). Use calipers for accuracy — you’re measuring in millimeters, so precision matters.
A common mistake: mark from the wrong reference point. Measure from the top of the extruder body (or wherever the filament enters the drive mechanism), not from the bowden tube connector or the nozzle.
Step 2: Command 100mm of Extrusion
Using a terminal or your printer’s interface, send:
G91 ; relative positioning mode
G1 E100 F100 ; extrude 100mm at 100mm/min
G90 ; back to absolute mode
Go slowly — 100mm/min is intentional. Fast extrusion at this step can introduce measurement error from motor torque dynamics.
Step 3: Measure What Was Actually Extruded
After the command completes, measure from the top of the extruder inlet to your 100mm mark. Subtract that distance from 100mm to get the actual extrusion.
Example: if 8mm of your filament remains above the extruder inlet where you expected 0mm to remain, you actually extruded 92mm instead of 100mm.
Actual extrusion = 100mm − remaining filament above inlet
Step 4: Calculate New E-Steps
New E-steps = (Current E-steps × Requested mm) ÷ Actual mm
Example:
- Current E-steps: 93 steps/mm
- Requested: 100mm
- Actual: 92mm
- New E-steps = (93 × 100) ÷ 92 = 101.1 steps/mm
Step 5: Set and Verify
Set the new value:
M92 E101.1 ; set new E-steps
M500 ; save to EEPROM
Re-run the test with the new value. You should see close to 0mm remaining above your 100mm mark. Repeat until your measured extrusion is within ±0.5mm of the commanded distance.
Common Issues
Bowden extruder vs direct drive: The measurement method is the same, but bowden printers have more variables (tube friction, slight compression). Focus on getting within ±1mm on a bowden printer — the rest of the variation comes from factors the E-steps value can’t fix.
Slipping extruder: If the filament mark doesn’t move predictably with the motor, you have slippage — the gear is skipping on the filament. Fix the mechanical issue first (idler tension, filament path alignment, worn gear) before calibrating.
Extrusion inconsistency: If repeated measurements give different results, you have a mechanical problem. E-steps calibration produces repeatable results on a healthy extruder.
Setting the Value in Each Firmware
The measurement above is identical on every machine. What differs is the command that stores the result, and — importantly — whether the firmware even expresses the calibration in steps per millimetre. Klipper does not: it uses rotation_distance, the length of filament moved per full revolution of the drive gear, which is a physical dimension rather than a stepper-resolution figure. The correction is therefore a division rather than a multiplication, which is the single most common place people get the maths backwards when moving from Marlin to Klipper.
| Firmware | Setting | Command or key | Correction | Persisting it |
|---|---|---|---|---|
| Marlin | E steps/mm | M92 E<value> | new = old × (requested ÷ actual) | M500, or the value reverts at power-off |
| Klipper | rotation_distance | [extruder] in printer.cfg | new = old × (actual ÷ requested) | Edit printer.cfg, then RESTART |
| RepRapFirmware | E steps/mm | M92 E<value> | new = old × (requested ÷ actual) | M500 with config-override.g enabled |
| Prusa Firmware | E steps/mm | M92 E<value> | new = old × (requested ÷ actual) | M500; stock profiles assume the factory value |
| Bambu / closed firmware | Not user-exposed | — | — | Handled in factory calibration |
Two practical notes on that table. First, M500 is the step people skip: without it, Marlin and RepRapFirmware both accept the new value happily, print correctly for the rest of the session, and silently revert on the next power cycle. Read the value back with M503 after a reboot before trusting it. Second, Klipper’s inverted formula is the reason a machine converted from Marlin sometimes ends up worse after calibration — multiplying where you should divide doubles the original error rather than removing it.
Firmwares that do not expose the setting are not defective, they have simply moved this calibration behind a factory process. There is nothing to do on those machines except verify the symptom is genuinely extrusion volume and not one of the software-layer settings above it.
When to Recalibrate
- After replacing the extruder
- After changing stepper motor drivers
- After updating firmware with different default values
- If you notice systematic over or under-extrusion across multiple prints and materials
E-steps are stable once set correctly. You shouldn’t need to change them unless you change hardware.
Relationship to Flow Rate
After setting E-steps correctly, you can tune flow rate per-material to compensate for material-specific factors (filament diameter variance, melt characteristics). A common workflow:
- Calibrate E-steps once (hardware calibration)
- Calibrate flow rate per material profile (software compensation)
- Tune per-print using live adjustment
Keep E-steps as the hardware baseline. Don’t compensate for wrong E-steps by setting flow rate to 85% or 115% — that hides the real problem and makes every material profile harder to reason about.
With the baseline set, the next steps are a temperature tower for each new filament, then flow rate calibration for dimensional accuracy, then pressure advance to fix the timing of the extrusion rather than its volume. The full dependency map, including what each stage invalidates when you change hardware, is in the 3D printer calibration order. If you are working on a stock Bowden Ender 3 specifically, the machine-specific walkthrough with the exact G-code is how to calibrate e-steps on an Ender 3.
Related
How to Calibrate E-Steps on Ender 3 (Step by Step)
A terminal-based walkthrough for calibrating extruder e-steps on the Ender 3, with the exact G-code, the formula, and how to verify the corrected value.
Flow Rate Calibration: Getting Dimensional Accuracy Right
How to calibrate flow rate for accurate, well-bonded prints using the single-wall method and the calibration cube, and where it belongs after e-steps.
Temperature Tower Guide: Find the Best Print Temperature
A temperature tower is the fastest way to find the right print temperature for a new filament. How to set one up, read each band, and record the result.