Under-extrusion, gaps in top layers, bulging corners and walls that measure wrong almost always trace back to one of three settings. Do them in this order, because each one assumes the previous is right.
1. Extruder steps (Marlin) or rotation distance (Klipper)
This tells the firmware how far the extruder motor must turn to push 1 mm of filament. Factory values are approximate.
- Heat the hotend to the filament’s temperature and unload any pressure (retract a little, cut the filament square).
- Measure 120 mm from where the filament enters the extruder and mark it with a marker.
- Command exactly 100 mm of extrusion at a slow speed:
G91,G1 E100 F100,G90(Klipper:G1 E100 F100afterM83). - Measure from the extruder entry to your mark. If 20 mm remains, it extruded 100 mm; if 23 mm remains, it extruded 97 mm.
- Calculate:
- Marlin: new e-steps = old × 100 ÷ actually extruded. Save with
M92 E<value>thenM500. - Klipper: new rotation_distance = old × actually extruded ÷ 100. Edit
[extruder]inprinter.cfgand restart.
- Marlin: new e-steps = old × 100 ÷ actually extruded. Save with
The calibration calculator does the division and prints the exact command. Repeat once to confirm you land within 1 mm.
2. Flow (extrusion multiplier)
With steps correct, flow corrects for the filament’s real diameter and how it behaves under pressure. It is per filament, not per printer.
- Slice a 20–30 mm hollow cube with 1 wall, 0% infill, 0 top layers and your usual line width (say 0.45 mm).
- Print it and measure all four walls with calipers mid-height. Average them.
- New flow = current flow × target width ÷ measured width. Measured 0.48 mm against 0.45 target at 100% flow gives 93.75%.
- Put it in the slicer’s filament profile (OrcaSlicer/Bambu Studio: Flow ratio; PrusaSlicer: Extrusion multiplier; Cura: Flow).
OrcaSlicer’s two-pass flow calibration automates this with a set of small squares; the result is the same number.
3. Maximum volumetric flow
Steps and flow are right, but the hotend still cannot melt plastic infinitely fast. Above its limit the extruder skips or the walls go rough.
- Flow in mm³/s = line width × layer height × speed. 0.42 × 0.2 × 150 = 12.6 mm³/s, which is already past a stock Ender 3 hotend.
- Find your limit with OrcaSlicer’s Max flowrate test, or start from the hotend table and subtract 10%.
- Enter it in the filament profile as Max volumetric speed; the slicer will then slow down automatically wherever width × height × speed would exceed it.
What each one fixes
| Symptom | Likely setting |
|---|---|
| Everything slightly under- or over-extruded on every filament | E-steps / rotation distance |
| One brand of filament prints gappy, another bulges | Flow |
| Fine at 0.12 mm layers, gaps and clicking at 0.28 mm or at high speed | Max volumetric flow |
| Dimensions right, but surfaces show regular banding | Z axis: see magic layer heights |