PrintLabGuide
Blue filament feeds from a spool through a stepper extruder gear and hotend, laying lines on a build plate, beside a jig holding a filament length to measure.
calibration

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.

By PrintLabGuide Editorial · ·Updated August 18, 2026 · 5 min read

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.

FirmwareSettingCommand or keyCorrectionPersisting it
MarlinE steps/mmM92 E<value>new = old × (requested ÷ actual)M500, or the value reverts at power-off
Klipperrotation_distance[extruder] in printer.cfgnew = old × (actual ÷ requested)Edit printer.cfg, then RESTART
RepRapFirmwareE steps/mmM92 E<value>new = old × (requested ÷ actual)M500 with config-override.g enabled
Prusa FirmwareE steps/mmM92 E<value>new = old × (requested ÷ actual)M500; stock profiles assume the factory value
Bambu / closed firmwareNot user-exposedHandled 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:

  1. Calibrate E-steps once (hardware calibration)
  2. Calibrate flow rate per material profile (software compensation)
  3. 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