Skip to content

E-Steps Calibration: Getting Your Extruder’s Steps-Per-mm Right

E-steps is a firmware value, not a slicer setting, and no amount of flow rate tweaking fixes it once a gear swap or a new extruder throws it off. Here is the measurement, the formula, and where it fits before flow rate tuning.

E-Steps Calibration

E-steps, short for extruder steps-per-mm, is a firmware value that tells your printer’s control board how many motor steps correspond to one millimeter of filament movement. In Marlin it lives in the M92 command as the E value. In Klipper it is expressed differently, as rotation_distance (and gear_ratio, if your extruder has a gearbox) in the extruder section of printer.cfg. Either way, it is the number the firmware uses to convert “extrude 5mm of filament” into an exact count of stepper pulses.

This is easy to confuse with flow rate, also called the extrusion multiplier in most slicers, and the two solve different problems. E-steps is a mechanical and firmware calibration: it tells the board how far your specific gear and motor combination actually pushes filament per step. Flow rate is a slicer-side percentage that compensates for whatever small inconsistency is left after e-steps is already correct, along with material behavior like a filament’s actual diameter tolerance or how it shrinks after extrusion. If you have not covered that slicer-side tuning yet, the site’s guide on Extrusion Multiplier: Calibrating Your Printer’s Flow Rate walks through the single-wall test for it. Getting the order backward, tuning flow rate to paper over a wrong e-steps value, tends to produce a number that only works for one filament at one temperature, and it will not fix an extruder that is mechanically off by 5 or 10 percent.

How steps-per-mm actually works

A stepper motor moves in fixed increments, further divided by microstepping on the driver. The firmware needs to know how much filament travel each of those increments produces once you account for the gear ratio and the effective diameter of the drive gear that grips the filament. Multiply steps per revolution by microstepping, divide by how many millimeters of filament one revolution of the drive gear pushes through, and you get steps-per-mm. Marlin stores this directly as a steps/mm number. Klipper instead stores rotation_distance, the physical distance of filament movement per full rotation of the stepper shaft, and calculates steps internally from that plus your microstepping and gear_ratio settings. It is effectively the same information described from opposite ends: Marlin counts steps per millimeter, Klipper counts millimeters per rotation.

For most machines, this number is already close to correct out of the box. Manufacturers calculate it from the known gear teeth count, pulley diameter, and microstepping of the stock hardware, and Marlin’s default configuration files or a printer’s factory firmware usually reflect that math accurately. This is worth saying plainly: most users never need to touch this value at all, because the stock extruder and stepper it was calculated for have not changed.

When you actually need to recalibrate it

E-steps drifts out of accuracy when something about the mechanical path between the motor and the filament changes. The common triggers are swapping the extruder gear, especially to an aftermarket hardened steel or dual-drive gear with a different tooth profile or effective diameter than the stock part, replacing the stepper motor itself, or upgrading the whole extruder assembly, such as moving from a stock Bowden setup to an aftermarket direct-drive unit. A worn or slipping drive gear can also throw the number off over time, though that usually shows up as inconsistent extrusion rather than a clean, repeatable error. If none of that applies to your printer, the factory value is almost certainly fine and recalibrating it is unlikely to change much.

The manual measurement procedure

The classic test does not require any special tooling. Heat the hotend to printing temperature, load filament, then mark a fixed reference point on the filament somewhere above the extruder’s entry point, commonly 100 to 120mm up. Measure that distance precisely with calipers. Then command the firmware to extrude a known length, 100mm is a convenient round number, through the LCD menu or a direct G1 E100 command sent at a slow feedrate to avoid pressure buildup skewing the result. Measure the new distance from the extruder to the mark and subtract it from the original mark distance to find how far the filament actually moved.

The formula for a new Marlin steps/mm value is straightforward: new_esteps equals old_esteps multiplied by requested_length divided by actual_length_extruded. If your old value was 415 steps/mm, you asked for 100mm, and only 96mm actually moved, the new value is 415 times 100 divided by 96, which comes out to about 432. Klipper inverts this relationship because rotation_distance moves in the opposite direction from a steps-per-mm figure: new_rotation_distance equals old_rotation_distance multiplied by actual_length_extruded divided by requested_length. If your old rotation_distance was 22.7mm and the same under-extrusion showed up, actual came in short relative to requested, the new value goes down, not up, since less filament moved per rotation than the number implied.

Applying the new value

In Marlin, send M92 E followed by the new value through the console to update the number for the current session, then M500 to write it to EEPROM so it survives a power cycle. On boards without EEPROM support, or if you would rather have the value baked in permanently, edit the E entry in DEFAULT_AXIS_STEPS_PER_UNIT inside Configuration.h and reflash. In Klipper, there is no separate save command for this. Open printer.cfg, find the extruder section, and edit the rotation_distance line directly to the new calculated figure, then issue a RESTART (or FIRMWARE_RESTART if you also touched gear_ratio) for Klipper to reread the config.

Where this fits relative to other calibration steps

E-steps is a mechanical fact about your specific machine, and it should be settled before anything downstream that assumes the extruder moves filament by the amount you ask for. That includes flow rate tuning, pressure advance or linear advance, and even retraction settings, since all of them are calibrated against an assumption that a commanded extrusion length actually happens. A wrong e-steps value can look exactly like under-extrusion or over-extrusion on the surface, and it is tempting to chase it by nudging the flow rate percentage in your slicer. That can mask the symptom for one filament and one temperature, but the underlying mechanical error is still there, and it will reappear the moment you switch materials or extrusion widths. The site’s guide on Essential 3D Printer Calibration, in the Right Order covers where e-steps sits in the broader sequence, and it belongs early, right after your motion axes are dialed in and before you start adjusting anything that assumes correct filament flow.

If your printer is still running the extruder it shipped with, this is one calibration step you can probably skip. The moment you change the gear, the motor, or the whole extruder body, though, it is worth the ten minutes with a caliper and a permanent marker before you touch anything else.

Your next print can be better

Describe the symptom. Start with the most likely fix.

The troubleshooting hub narrows the library by print stage, material and the action you are comfortable taking.