The 3D Printer Calibration Cookbook
A factory-fresh printer is a printer that has never been calibrated. Out of the box, every machine — even a $1,500 CoreXY — ships with profiles that are intentionally conservative. They work, but they leave significant print quality and speed on the table, and they assume a filament the manufacturer picked, not the roll you actually bought.
This cookbook walks the full calibration workflow in the order you should actually run it. Skip steps and you end up tuning against a moving target; do them in sequence and each test isolates one variable while the others stay fixed.
Everything here applies whether you are running Klipper, Marlin, Bambu Studio, or OrcaSlicer. The test patterns differ slightly, but the physics and the order are the same.
The rule that governs the order
Every calibration test depends on the tests before it. That is not an arbitrary convention — it is a consequence of how the failure modes interact.
If your first layer is wrong, every layer above it is wrong. If your extruder is under- or over-extruding, every flow-related test will lie to you. If pressure advance is miscalibrated, your corners look bad regardless of how good your retraction is. If your belts aren’t tensioned, input shaping can’t save you.
The order is therefore fixed: mechanical → extruder → flow → temperature → pressure advance → retraction → input shaping → max volumetric speed → vertical fine artifacts. That’s the cookbook.
You only re-run the later tests when you change filament. You re-run the earlier tests only when you change hardware.
Step 0: Mechanical sanity
Before you calibrate anything, verify the machine itself is square.
- Frame squareness. The gantry should be parallel to the bed. On a bed slinger, measure from the top of each Z rail to the gantry — they should match within 0.5 mm. On a CoreXY, the gantry should be square to the frame.
- Belt tension. Use a frequency app (Bambu has one built in, Gates Carbon Drive is the classic). A-belt and B-belt should ring within a few Hz of each other. Loose or mismatched belts destroy print quality and invalidate input shaping.
- V-wheel or linear rail preload. Wheels should roll with gentle resistance — not wobble, not bind. Linear rails should move freely with no grit.
- Nozzle. Check it’s tight (cold-tighten the hot end, hot-tighten the nozzle at print temperature) and not leaking onto the heater block. An eccentric or partially-clogged nozzle will ruin every test.
- Z offset and bed leveling. Use the printer’s bed mesh or automatic bed leveling, and dial in a proper first layer. A crushed or too-loose first layer poisons everything downstream.
If this takes you an afternoon, good. You only do it once per hardware change.
Step 1: Extruder (E-steps / rotation distance)
Goal: the printer extrudes exactly as much filament as the slicer asks for.
Why it matters
Every flow ratio, pressure advance, and retraction test assumes the extruder moves filament linearly. If your extruder is off by 5%, your flow ratio test will be off by 5%, your pressure advance calibration will be off, and everything downstream inherits the error.
How to do it
- Heat the nozzle to printing temperature for your filament.
- Retract or disengage any Bowden tubing at the hotend entrance so you’re only measuring the extruder itself.
- Mark the filament 120 mm above the extruder inlet with a Sharpie.
- Command a 100 mm extrude (in OctoPrint/Mainsail/Bambu Studio).
- Measure the remaining distance from the mark to the inlet.
Result should be exactly 20 mm remaining. If you have 22 mm remaining, you only extruded 98 mm — the extruder is under-extruding by 2%.
Applying the fix
- Marlin:
M92 E<new_value>wherenew_value = old_E_steps × (100 / actual_extruded). Save withM500. - Klipper: in
printer.cfg, adjustrotation_distancefor the extruder. New value =old_rotation_distance × (actual_extruded / 100). Save and restart. - Bambu (X1C/P1S/A1/X2D): not user-accessible; Bambu calibrates at the factory and you skip this step. If your Bambu extrudes wrong, it’s a hardware problem, not a calibration problem.
You only re-run this when you change extruders or steppers.
Step 2: Flow ratio (extrusion multiplier)
Goal: the walls of your prints are the thickness the slicer thinks they are.
Why it matters
Even with perfect E-steps, filament does not exit the nozzle at the exact volumetric rate the slicer assumed. Diameter varies ±0.03 mm roll-to-roll. Material density varies. Melt behavior varies by formulation. The result is that a “0.42 mm wall” might actually be 0.44 mm (over-extruded) or 0.40 mm (under-extruded).
Over-extrusion causes elephant’s foot, poor dimensional accuracy, and blobs. Under-extrusion causes weak walls, gaps between perimeters, and poor interlayer bonding.
How to do it
Two methods. Pick one.
Method A: single-wall cube. Print a 20 mm hollow cube, one perimeter wide, zero top/bottom layers, zero infill. Walls should be exactly the line width (e.g., 0.42 mm for a 0.4 mm nozzle at default 105% extrusion width). Measure with calipers on all four walls at multiple heights. Average them.
Correction: new_flow_ratio = old_flow_ratio × (target_wall_width / measured_wall_width).
Method B: OrcaSlicer / Bambu Studio calibration suite. Run the pass-1 flow test (coarse: ±10%), pick the best plate (flattest top surface, no gaps, no ridges). Run pass-2 (fine: ±3% around the winner). Pick the best plate again. The value is your flow ratio.
Notes
- PLA typically calibrates around 0.95–1.00.
- PETG often 0.90–0.95 (notoriously over-extrudes at factory defaults).
- ABS/ASA 0.95–1.00.
- TPU varies wildly, 0.90–1.05. Calibrate each roll separately.
You re-run this per filament. It’s the single biggest lever for cosmetic quality on top surfaces.
Step 3: Temperature tower
Goal: the hottest temperature you can print this filament without stringing, blobs, or heat creep; and the coolest without under-extrusion, poor layer adhesion, or cracking.
Why it matters
Every roll’s ideal temperature is different. Filament manufacturer’s recommended range is a 30°C window because they can’t predict your hotend, your enclosure temperature, or your fan profile.
The test tower breaks the window into 5°C steps. You look at the tower after printing and pick the step that looks best.
How to do it
- In OrcaSlicer, load the temperature tower STL (built into the calibration menu) or in Bambu Studio grab one from MakerWorld.
- The slicer automatically inserts
M104temperature changes at each band. - Start 10°C above your highest guess, drop 5°C per band, 5–7 bands.
- After printing, evaluate each band for:
- Stringing between the pegs (too hot).
- Overhang quality on the curved section (too cool = rough, stringy; too hot = drooping).
- Bridge quality on the horizontal span (too hot = sagging; too cool = under-extrusion, gaps).
- Surface texture — uniform at the right temp.
Typical results
- Generic PLA: 200–215°C. Overheated PLA (above 230°C) degrades in the melt zone and gets stringy.
- Silk / glittery / color-change PLA: run 10–15°C hotter than basic PLA because the additives hurt flow.
- PETG: 235–250°C. Too cool = poor layer adhesion (splits at the weakest axis). Too hot = massive stringing.
- ABS/ASA: 240–260°C with a heated enclosure.
- PA/Nylon: 250–270°C, dry filament mandatory.
- PA-CF: 280–300°C, hardened steel nozzle mandatory.
Pick the coolest band that still prints cleanly — cooler = less oozing, less stringing, less heat creep, less nozzle wear from printing hot.
Step 4: Retraction (conditional)
Goal: eliminate stringing and blobbing without causing under-extrusion or grinding.
Why it matters less than it used to
Pressure advance (next step) handles most of what retraction used to compensate for. On a well-tuned direct-drive machine with calibrated PA, you can often set retraction to 0.4 mm and ignore it. On Bowden, retraction still matters because the filament has to take up slack in the tube.
This is why the cookbook order matters: if you tune retraction before pressure advance, you’ll over-retract to hide symptoms that PA actually fixes. Fix PA first, then tune retraction only if you still see stringing.
How to do it (only if PA tuning leaves stringing)
- OrcaSlicer retraction tower test: prints towers of thin pillars with increasing retraction distance.
- Pick the shortest retraction that eliminates stringing between pillars.
- Retract speed: 25–40 mm/s on direct-drive, 30–50 mm/s on Bowden.
Typical values (post-PA-tune)
- Direct-drive: 0.4–0.8 mm retraction, 25–35 mm/s.
- Bowden: 2–4 mm, 35–50 mm/s.
Retraction tuning is per-filament but usually not far from the default for your extruder type.
Step 5: Pressure advance / linear advance
Goal: clean corners and clean starts-and-stops, at speed.
Why it matters
When the toolhead accelerates, the melted filament in the nozzle lags behind because the plastic is viscous. When it decelerates, plastic keeps flowing from pressure in the melt chamber. Without correction, this shows up as:
- Blobs at corners (plastic oozes as toolhead pauses to change direction).
- Under-extrusion at line starts (pressure hasn’t built up yet).
- Bulging at corners (extruder over-pressurized during approach).
- Visible speed-change scars on curves and walls.
Pressure advance (Klipper, Marlin 2, Bambu firmware) proactively de-pressurizes before decelerations and pressurizes before accelerations.
How to do it
Klipper: use the official pressure advance test pattern. TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=0.005. Print a single-wall hollow test. Measure the height where corners are sharp without bulging. PA value = height × 0.005.
Bambu / OrcaSlicer: built-in PA calibration: pattern-based (PA line test) or tower-based. The line test is faster. Print, photograph, pick the line without the bulge or gap.
Marlin: linear advance (K factor). Same principle, different tests.
Typical values
- Bowden PLA: K = 0.08–0.12 (pressure advance range).
- Direct-drive PLA: K = 0.02–0.05.
- Direct-drive PETG: K = 0.04–0.08 (higher viscosity).
- Direct-drive TPU: K = 0.06–0.10.
- Bambu X1C with AMS: factory-tuned PA per filament, auto-recalibrates each print with their lidar. You still override per-roll if the auto-tune is off.
PA is per-filament and somewhat per-nozzle-diameter. Changing nozzle size invalidates it.
Step 6: Input shaping
Goal: print fast without ringing (the ghostly echoes of sharp features repeated down the wall).
Why it matters
When a toolhead changes direction at speed, the frame and gantry oscillate at their resonant frequency. The nozzle follows the oscillation, depositing plastic in a wave pattern — ringing / ghosting. Slowing down hides it. Input shaping cancels it.
Klipper and Bambu firmware both implement it; Marlin 2.1 supports it but the workflow is cruder.
How to do it
Bambu: one-button vibration compensation on every print start. Your X1C / P1S / X2D does this without you asking. Done.
Klipper with accelerometer (ADXL345): run SHAPER_CALIBRATE. It sweeps the frequency range, measures resonance on both axes, recommends shaper type (MZV, EI, ZV, 2HUMP_EI) and frequency. Edit [input_shaper] in printer.cfg. Takes about 10 minutes total.
Klipper without accelerometer: run the ringing tower test. Print a stepped tower that accelerates differently on each band. Measure the ring spacing with calipers, convert to frequency using Klipper’s docs. Manual but workable.
Typical results
A well-tuned 2020-extrusion CoreXY: 40–60 Hz on both axes. A Voron 2.4 or X1C: often 50–80 Hz, shaper type MZV or EI.
Once IS is tuned, you can run accelerations of 8,000–20,000 mm/s² cleanly on a good frame. Older/floppier machines top out around 3,000–5,000 mm/s².
Re-run input shaping when you change the toolhead mass (different hotend, different cables, added CAM/lidar module) or major frame modifications.
Step 7: Max volumetric speed
Goal: the upper limit on how fast plastic can exit your nozzle without under-extrusion.
Why it matters
Every slicer lets you set “print speed” in mm/s, but that is not what limits you. What actually limits you is volumetric flow — the cubic millimeters of plastic your hotend can melt per second. Past that number, the filament stops keeping up with the toolhead and you get under-extrusion regardless of how fancy your pressure advance is.
This is why swapping to a high-flow hotend (Bambu X1C high-flow, Revo HF, Volcano) actually enables faster printing. It’s not the motion system — it’s the melt zone.
How to do it
OrcaSlicer calibration test: max flowrate test. Prints a wedge that accelerates volumetric output from a floor to a ceiling. You mark (visually or with calipers) where the top surface transitions from smooth to rough-and-gappy. That’s the point where the hotend stopped keeping up. Set your max volumetric speed 5–10% below that number.
Typical values
| Hotend | PLA | PETG | ABS | PA-CF |
|---|---|---|---|---|
| Stock V6 / Creality | 10–14 mm³/s | 8–12 | 10–14 | — |
| Bambu X1C (stock) | 18–24 | 14–18 | 16–20 | 12–16 |
| Bambu X1C high-flow | 28–35 | 20–25 | 22–28 | 16–20 |
| Revo HF / Mosquito Magnum | 25–35 | 18–24 | 20–28 | 15–20 |
| Volcano | 30–40 | 22–28 | 24–32 | 18–22 |
Once you know your max volumetric speed, the slicer’s speed-in-mm/s becomes a derived value: at a given line width and layer height, volumetric flow = width × height × speed. Increase any two, decrease the third, or live with under-extrusion.
Most people find that max volumetric speed, not motion system speed, is their real bottleneck.
Step 8: VFA (vertical fine artifacts) — the expert step
Goal: eliminate the faint vertical banding that appears on smooth walls printed at the “wrong” speed.
What it is
A regular pattern of faint vertical stripes on vertical walls, appearing every few millimeters. It is caused by the printer’s belt/pulley cogging interacting with stepper microstepping at specific speeds. The artifact is speed-dependent.
How to do it
Run OrcaSlicer’s VFA calibration test. It prints walls at a range of speeds. You find the speed where the pattern disappears and avoid it in your profiles, or at minimum keep outer-wall speed in the clean band.
Most users can ignore VFA. It’s cosmetic and only visible on large smooth surfaces in raking light. If you make display pieces, tune it. If you make functional parts, skip it.
The filament-change checklist
When you open a new roll (even same brand, same color), re-run just these:
- Flow ratio — 20 minutes.
- Temperature tower — 40 minutes.
- Pressure advance — 10 minutes.
- Max volumetric speed — 15 minutes if the filament differs substantially from what you’ve tuned for.
That’s 90 minutes of calibration for a hobby roll. Sounds like a lot until the first time you watch an 8-hour print fail because you didn’t. Engineering filaments (PA-CF, PC) absolutely warrant this; generic PLA in a color you’ve run before, you can skip to just flow ratio.
The hardware-change checklist
When you change nozzle, hotend, extruder, belts, or frame:
- Mechanical sanity — belts, rails, squareness.
- E-steps / rotation distance — if extruder changed.
- Input shaping — if toolhead mass changed.
- Max volumetric speed — if hotend changed.
- Then all the filament-level tests again.
Quality-of-life tips
- Save profiles per-filament, not per-brand. Your Polymaker PolyTerra Black is not your Polymaker PolyTerra Red. Close, but not identical.
- Keep a log. Notebook or OrcaSlicer notes field. Record: nozzle size, temperature, flow ratio, PA value, max volumetric speed. When you come back in six months, you’ll want them.
- Don’t chase perfection. Calibration has diminishing returns. The difference between flow ratio 0.97 and 0.98 is measurable; the difference between 0.97 and 0.971 is not. Get close and stop.
- Recalibrate periodically. Nozzles wear. Belts stretch. Six months of heavy printing changes your machine.
- Print calibration sets before projects, not after. If you need a perfect print of an engineering part, don’t be eight hours into a job and find out the roll under-extrudes.
What good calibration looks like
After a full pass through this cookbook on a good machine with a good roll of PLA, you should be able to:
- Print a 20 mm cube dimensionally accurate to ±0.1 mm.
- Print a Benchy with clean overhangs, no stringing, no ringing, in under 25 minutes (well-tuned CoreXY) or 45 minutes (well-tuned bed slinger).
- Run prints at 300+ mm/s outer wall on a Bambu X1C or Voron 2.4 without quality loss.
- Get consistent layer lines on smooth surfaces, visible only under raking light.
If you’re missing any of those, walk back through the cookbook in order and find the step that broke. That’s almost always how you fix a quality regression — not by changing something else, but by re-running whichever test corresponds to the symptom you’re seeing.
Further reading
- Ellis’s Print Tuning Guide — the long-form reference, exhaustive and free. Aimed at Voron users but universal.
- OrcaSlicer calibration docs — covers each built-in test in detail.
- Klipper docs: resonance_compensation.md — the canonical source on input shaping.
- Bambu Lab Wiki — the best reference for Bambu-specific quirks and calibration behavior on their machines.
Calibration is not glamorous. It is also the single highest-leverage skill in 3D printing. An expensive printer with defaults is outperformed by a cheap printer with a serious calibration pass. Do the cookbook once; you’ll never be confused about why your prints look rough again.
Comments