Bed leveling and Z-offset
Bed leveling is two separate things people lump together: tramming (making the bed mechanically parallel to the gantry) and mesh leveling (mapping the warp the probe can't physically remove). Z-offset is the human-set "lower than the probe says" number that controls first-layer squish. All three work together; missing one ruins prints regardless of how well you did the others.
Heat the bed to printing temperature. Tram the four corners with a piece of paper under the nozzle (drag, not friction). Run mesh bed leveling. Print a first-layer test. Live-adjust Z during the print until lines look squished smooth (not stringy, not gouging). Save the offset.
The three things that matter
| Term | What it does | How often |
|---|---|---|
| Tramming | Make bed mechanically parallel to gantry (corner screws or bedslinger) | Once at setup, after transport, after any major work on the printer |
| Mesh bed leveling | Map the bed's residual warp the corners can't fix | Before every print or weekly |
| Z-offset / Live-Z | Set the gap between nozzle and bed for the first layer | Once per filament / sheet combination |
Step 1: Manual tramming
The mechanical foundation. Most modern printers with auto-bed-leveling still benefit from a properly trammed bed — the probe maps surface variation, but if the bed is tilted 1 mm corner-to-corner the ABL probe needs to do too much vertical correction across the print and the toolhead has to keep changing Z mid-layer.
Bedslinger (Ender 3, MK3S+ before mesh)
- Heat bed to printing temperature (cold beds are shorter than hot beds).
- Home printer, then disable steppers so you can move the head by hand.
- Move head to one corner.
- Slide a piece of standard 80 gsm paper under the nozzle.
- Adjust the corner screw until the paper has slight drag but still moves freely.
- Repeat for the other three corners.
- Go back to corner #1 and re-check — tramming one corner moves the others slightly.
- Re-check all four until they're consistent.
CoreXY / fixed-bed (Voron, Bambu)
The bed mounts on a 3-point screw system. Use the same paper test, adjusting the three screws to make the bed parallel to the gantry's XY plane. Bambu and Prusa CORE One automate this with a mesh-only routine — you don't manually tram.
Step 2: Mesh bed leveling
The probe touches the bed at multiple points (usually a 4x4 or 5x5 grid) and builds a height map. The firmware then adjusts Z continuously during printing so the nozzle stays at the same distance from the bed surface even where the bed warps.
- Bambu: auto-runs before every print. Force a fresh mesh from Device → Cal → Mesh.
- Prusa MK4 / CORE One: auto-runs before every print.
- Prusa MK3S+: Calibration → Mesh Bed Leveling.
- Klipper:
BED_MESH_CALIBRATEmacro. - Marlin ABL: add
G29to your start G-code afterG28.
Step 3: Z-offset
Probes measure the height of the probe trigger point, not the height of the nozzle tip. The Z-offset is the difference between those two.
- Print a first-layer calibration square (most slicers include one).
- Watch the first layer print.
- Adjust Z-offset live during the print. Most printers support this:
- Prusa: hold ↓ on the LCD; lowers nozzle in 0.025 mm steps.
- Bambu: Device → Cal → Z-offset mid-print.
- Klipper:
SET_GCODE_OFFSET Z_ADJUST=-0.025macros.
- Goal: lines are flat, smooth, touching each other, and stuck to the bed. See first layer not sticking for the inspection checklist.
- Save the offset when it looks right.
When to re-do each step
| Trigger | What to re-do |
|---|---|
| Changed nozzles | Z-offset only |
| Changed build plates / sheets | Z-offset only |
| Changed filaments (different mfr) | Z-offset (live tune during print) |
| Moved the printer | Tramming + mesh + Z-offset |
| First layer suddenly wrong | Mesh + Z-offset |
| Layer 2+ shows issues | Probably not bed-leveling; check belts, drivers |
Auto-bed-leveling probe types
| Probe | Sees | Notes |
|---|---|---|
| Inductive (P.I.N.D.A., SuperPINDA) | Steel under PEI sheet | Temperature compensated (PINDA v1 had drift). |
| Inductive (BLTouch / 3DTouch) | Anything (mechanical contact) | Reliable workhorse; needs Z-offset per probe. |
| Capacitive (CR-Touch, Microswitch) | Anything (mechanical contact) | Slightly faster than BLTouch. |
| Loadcell (MK4, Bambu) | Bed via nozzle contact | Most accurate; auto-Z-offset because the nozzle is the probe. |
| Strain gauge / piezo | Bed via toolhead | Voron / DIY; very accurate when tuned. |
Related articles
Sources & further reading
- Prusa Knowledge Base — Bed leveling failed
- Bambu Lab Wiki — Manual Bed Leveling / Manual Bed Tramming
- Klipper Docs — Bed Mesh