How to Calibrate E-Steps: Step-by-Step Guide
E-steps calibration is the most fundamental calibration you can do on a 3D printer. It ensures that when your slicer tells the printer to extrude 100mm of filament, the extruder actually pushes exactly 100mm. If e-steps are wrong, every print will either under-extrude or over-extrude by a consistent percentage, affecting dimensional accuracy, surface quality, and strength.
The good news is that e-steps calibration takes about ten minutes and only needs to be done once (unless you change the extruder hardware). This guide walks through the entire process step by step.
What Are E-Steps?
E-steps stands for "extruder steps per millimeter." Your extruder motor is a stepper motor that moves in discrete steps. E-steps tells the firmware how many motor steps are needed to push exactly 1mm of filament through the extruder.
If this value is too high, the extruder pushes too much filament (over-extrusion). If it is too low, it pushes too little (under-extrusion).
Default values by extruder type:
- Creality stock extruder: ~93 steps/mm
- BMG-style dual gear: ~415 steps/mm
- Titan-style extruder: ~400-420 steps/mm
- Bondtech LGX: ~400 steps/mm
- Bambu Lab extruder: Calibrated at factory (do not change without reason)
These defaults are starting points. Your specific extruder may differ due to manufacturing tolerances, gear wear, or tension settings.
What You Need
- Digital calipers or a ruler — Rexbeti Digital Caliper or any accurate measuring tool
- Marker (permanent marker or painter's tape)
- Access to your printer's terminal — via the LCD screen, OctoPrint, Pronterface, or Fluidd/Mainsail for Klipper printers
- Your current e-steps value — check with
M503(Marlin) or in printer.cfg (Klipper)
Step 1: Check Current E-Steps Value
First, find out what your printer currently thinks the e-steps value is.
Marlin firmware:
Send M503 via the terminal. Look for a line starting with M92. The E value is your current e-steps. Example:
M92 X80.00 Y80.00 Z400.00 E93.00
This shows e-steps = 93.00
Klipper firmware:
Open your printer.cfg file. Under the [extruder] section, find rotation_distance. Klipper uses rotation distance instead of steps/mm, but the calibration process is similar. Note the current value.
Step 2: Prepare the Filament
- Load filament into the printer.
- Heat the nozzle to the filament's printing temperature (e.g., 200°C for PLA). You must heat the nozzle because most firmware prevents cold extrusion as a safety measure.
- Measure 120mm from where the filament enters the extruder (the top of the extruder intake, not the nozzle). Mark this point on the filament with a marker or a piece of tape.
Why 120mm? You will command 100mm of extrusion, and the extra 20mm gives you margin to measure regardless of whether the extruder over or under-extrudes.
Step 3: Extrude 100mm
Send a command to extrude exactly 100mm at a slow speed:
G1 E100 F100
This extrudes 100mm at 100mm/min (slow enough to be accurate). Wait for the extrusion to complete — it takes about a minute.
If the command does not work:
- Make sure the nozzle is at temperature
- Some firmware limits extrusion length per command. Try
M302 P1to disable cold extrusion prevention, or increase the max extrusion length in firmware - On Klipper, you may need to set
max_extrude_only_distance: 150in your extruder config
Step 4: Measure the Result
After extrusion completes, measure the distance from the mark on the filament to the extruder intake.
Three possible outcomes:
-
Exactly 20mm remains — Your e-steps are perfect. No adjustment needed. This is unlikely but possible.
-
More than 20mm remains (e.g., 25mm) — The extruder only pushed 95mm instead of 100mm. E-steps are too low (under-extruding).
-
Less than 20mm remains (e.g., 16mm) — The extruder pushed 104mm instead of 100mm. E-steps are too high (over-extruding).
Calculate actual extrusion: Actual distance = 120 - (measured remaining distance)
Example: If 23mm remains, actual extrusion = 120 - 23 = 97mm (under-extruding by 3%).
Step 5: Calculate New E-Steps
Use this formula:
New E-steps = (Current E-steps × Commanded distance) / Actual distance
Example: Current e-steps = 93. You commanded 100mm. Actual extrusion was 97mm.
New E-steps = (93 × 100) / 97 = 95.88
For Klipper (rotation distance):
New rotation distance = (Current rotation distance × Actual distance) / Commanded distance
The TeachingTech calibration site has an interactive calculator where you plug in your numbers and it gives you the result.
Step 6: Set the New Value
Marlin firmware:
M92 E95.88 (set new e-steps)
M500 (save to EEPROM)
Klipper firmware:
Edit printer.cfg, update rotation_distance under [extruder], and restart Klipper.
Step 7: Verify
Repeat steps 2-4 with the new value. The result should now be very close to 100mm (within ±0.5mm). If not, recalculate and adjust again.
According to Prusa's calibration guide, e-steps should be accurate to within 1% for good print quality.
Common Mistakes
Mistake 1: Calibrating E-Steps with the Bowden Tube Connected
On Bowden printers, friction in the tube, nozzle backpressure, and temperature all affect how much filament reaches the nozzle. These factors should not influence e-steps — e-steps is purely about the mechanical relationship between motor steps and filament movement at the extruder.
The ideal method: Disconnect the Bowden tube from the extruder and extrude into free air. This isolates the extruder's mechanical accuracy from all other variables.
If you cannot disconnect the tube: Heat the nozzle to temperature and extrude at very slow speed (F50) to minimize backpressure effects.
Mistake 2: Using E-Steps to Compensate for Different Filaments
E-steps should be set once and left alone. If a new filament prints slightly over or under-extruded, adjust the flow rate (extrusion multiplier) in the slicer, not e-steps. E-steps is hardware calibration; flow rate is material fine-tuning.
Mistake 3: Not Saving to EEPROM
After M92, you must send M500 to save the value permanently. Without saving, the value resets on power cycle. Many people calibrate perfectly, forget to save, and wonder why the next print is still wrong.
Mistake 4: Measuring Inaccurately
Small measurement errors get amplified by the calculation. Use calipers, not a ruler, and measure multiple times. A 1mm measurement error on a 100mm test translates to a 1% e-steps error.
When to Recalibrate E-Steps
Recalibrate if:
- You install a new extruder or extruder gear
- You replace the stepper motor
- You notice consistent over or under-extrusion that was not present before (gear wear)
- You upgrade the mainboard (different microstepping settings)
Do NOT recalibrate for:
- Different filament brands (use flow rate instead)
- Different materials (use flow rate instead)
- Temperature changes (adjust temperature or flow rate)
E-Steps vs Flow Rate: Understanding the Difference
| Aspect | E-Steps | Flow Rate | |---|---|---| | What it controls | Motor steps per mm of filament | Amount of filament deposited per slicer command | | Where it lives | Firmware (M92) | Slicer profile | | Calibrate when | Extruder hardware changes | Each new filament | | Typical adjustment | One-time, permanent | Per-filament profiles | | Measurement method | Mark filament, extrude 100mm | Single-wall cube with calipers |
After E-Steps: What to Calibrate Next
E-steps is step one. The complete calibration sequence:
- E-steps (firmware) — you just did this
- Flow rate (slicer) — print single-wall cube, measure with digital calipers, adjust flow multiplier
- Temperature — print temperature tower, choose optimal temp per filament
- Retraction — print retraction test, find minimum distance that prevents stringing
- Pressure advance / linear advance — tune for clean corners at speed
As All3DP's calibration sequence notes, doing these in order ensures each calibration builds on a correct foundation.
Klipper-Specific Notes
Klipper uses rotation_distance instead of steps/mm. The math is inverted:
rotation_distance = (full_steps_per_rotation × microsteps × gear_ratio) / steps_per_mm
But for calibration, the simpler approach is:
New rotation_distance = Old rotation_distance × (Actual distance / Commanded distance)
Klipper also supports pressure_advance which should be calibrated after e-steps. See Klipper's documentation for details on rotation distance.
Quick Reference
1. Mark filament at 120mm above extruder
2. Extrude 100mm: G1 E100 F100
3. Measure remaining distance from mark to extruder
4. Actual = 120 - remaining
5. New E-steps = (Old E-steps × 100) / Actual
6. Set: M92 E<new value>
7. Save: M500
8. Verify by repeating
Find Calibration Models
Search 3DSearch for "calibration cube" and "flow rate test" to find models for the follow-up calibrations (flow rate, temperature tower, retraction test). E-steps is done with just a ruler and filament, but the subsequent steps benefit from purpose-built test models.
Final Thoughts
E-steps calibration is ten minutes of work that permanently improves every print your printer produces. It is the foundation that all other calibrations build on — without correct e-steps, flow rate adjustments are guesswork, dimensional accuracy is impossible, and you will chase phantom problems that are actually just incorrect extrusion amounts. Do it once, save it, and move on to flow rate calibration. Your prints will thank you.
Search for related models on 3DSearch
Find 3D printable models across Printables, Thingiverse, and Cults3D in one search. Get AI-powered slicer settings for your printer.
Search 3DSearch →