3D Printer Calibration: Step-by-Step

Calibration is what separates a printer that sometimes works from one that reliably produces good parts. This guide covers the full calibration sequence — bed leveling, Z-offset, e-steps, flow rate, PID, and pressure advance — in the correct order, with the exact procedure for each step.

Calibration order

Each step depends on the previous one. Do not jump to flow rate before e-steps, or pressure advance before flow rate.

StepWhat it doesTool neededWhen to redoNotes
1Bed levelingManual or auto (BLTouch / CR Touch)First setup, after moving printer, if first layer failsManual leveling first even on printers with auto-leveling — mesh compensation works best when the bed is already close.
2Z-offsetSlicer / printer UIAfter bed leveling, any first-layer issueTarget: nozzle presses filament flat without squishing through the layer. Paper test: slight resistance when sliding.
3E-steps (extruder calibration)Ruler + command line (M92)New printer, after extruder changeOnly needed on printers without flow compensation. Bambu / Prusa MK4 calibrate automatically.
4Flow rate / extrusion multiplierSingle-wall cube printNew filament brand, any under/over-extrusionPer-filament setting. 0.95–1.05 covers most spools.
5PID tuningM303 commandTemperature fluctuates ±3°C+, after hotend changeRun M303 E0 S210 C8 for hotend. Saves with M500. Only needed if temps are unstable.
6Pressure advance / linear advanceOrcaSlicer calibration / built-inRounded corners, blobs at direction changesRun after flow rate is correct. Bambu Lab sets this automatically per filament.

Step 1: Bed leveling

The goal is a consistent gap between the nozzle and bed across the entire print surface. For most printers, this means 0.1–0.2 mm — roughly the thickness of a standard sheet of paper.

Manual leveling (paper test)
Home the printer (G28). Disable steppers (M84). Move the nozzle to each corner and slide a sheet of paper under it — there should be slight resistance when you pull the paper. Adjust the bed knob until resistance is consistent at all four corners, then check the center.
Auto-leveling (BLTouch, CR Touch, LeviQ, etc.)
Auto-leveling probes measure a mesh of points across the bed and compensates in software. It does NOT replace manual leveling — the bed should be manually leveled close first, then the mesh handles remaining variance. Run the mesh calibration after manual leveling, then save (M500).
Bambu Lab / Prusa MK4
Both run automatic leveling before every print. No manual procedure is needed unless you are seeing persistent first-layer problems — in that case, check for a warped build plate before anything else.

Step 2: Z-offset

Z-offset is the fine distance adjustment between the nozzle and the bed at the home position. A correct Z-offset produces a first layer that is visibly squished flat but not so squished that it oozes sideways between lines.

Live adjust Z: The best way to dial in Z-offset is to start a print, watch the first layer, and adjust live. In OrcaSlicer and PrusaSlicer, the Z-offset slider adjusts in 0.025 mm increments while printing. Bambu printers have a Live Adjust Z setting during the first layer of any print. Write down the final value and save it.

Signs of incorrect Z-offset:

  • Too high: first layer lines are round, not flat, filament doesn't stick, gaps between lines
  • Too low: nozzle drags through previously deposited material, filament builds up on the nozzle, clogged on first layer

Step 3: E-steps calibration

E-steps tell the firmware how many motor steps equal 1 mm of filament. If this is wrong, all other calibration is undermined. Modern printers (Bambu, Prusa MK4) calibrate automatically. On printers running stock Marlin firmware, check and set e-steps once after setup.

PrinterDefault e-stepsMethod
Creality Ender 3 / S193 steps/mmManual M92 E<value>
Creality K1 / K1 MaxFactory calibratedSlicer flow rate only
Prusa MK4Auto (input shaper)PrusaSlicer first layer calibration
Prusa MK3S+280 steps/mm (Bondtech)Manual M92 or Prusa Calibration wizard
Bambu Lab (all models)AutoBuilt-in flow calibration per filament
Elegoo Neptune 4 / Pro415 steps/mmManual M92 E<value>
Anycubic Kobra 3Auto (LeviQ 2.0)Built-in auto-leveling, manual flow rate

To calibrate e-steps manually:

  1. Mark 120 mm of filament above the extruder with a felt tip
  2. Send M83 (relative extrusion mode)
  3. Send G1 E100 F100 to command 100 mm of extrusion
  4. Measure how far the mark moved. If it moved 95 mm instead of 100 mm:
  5. New e-steps = (current e-steps × 100) ÷ actual mm moved
  6. Send M92 E<new value> then M500 to save

Step 4: Flow rate (extrusion multiplier)

Flow rate is a per-filament multiplier applied on top of e-steps. Different brands and colors of the same material can have slightly different actual diameters, requiring flow rate adjustment. Target: 0.95–1.05.

Print a single-wall cube (20 × 20 × 20 mm, 1 perimeter, no infill, no top/bottom layers). Measure the wall thickness with calipers. It should equal your line width (0.4 mm for a 0.4 mm nozzle). Adjust flow rate = (target wall width) ÷ (measured wall width).

In OrcaSlicer: Calibration → Flow Rate. In PrusaSlicer / BambuStudio: set as a filament override under "Extrusion multiplier" in the filament profile.

Step 5: PID tuning (only if needed)

PID controls how the printer maintains nozzle and bed temperature. Factory settings are usually fine. Only run PID tuning if you see temperatures fluctuating more than ±2°C during a print, or after replacing the hotend or heater block.

Send M303 E0 S210 C8 (hotend, 210°C, 8 cycles). Wait for it to finish — it will output new Kp, Ki, Kd values. Send M301 P<Kp> I<Ki> D<Kd> then M500 to save. For the bed: M303 E-1 S65 C8.

Step 6: Pressure advance

Pressure advance (Klipper) or linear advance (Marlin) compensates for the lag between extruder movement and filament pressure at the nozzle tip. Without it, corners accumulate excess material, and straight sections after corners are under-extruded.

In OrcaSlicer: Calibration → Pressure Advance. This prints a tower that varies the pressure advance value. Find the layer with the sharpest corners and no blobs — read off the value from the printed scale. Typical values: 0.02–0.08 for direct drive, 0.4–0.8 for Bowden.

Find settings for your printer

Settings by printer →Bed adhesion guide →Retraction settings →