Getting the first layer height right: Z offset, Live Adjust Z and probe calibration
Short answer
The Z offset is the gap between nozzle and bed at the moment the probe triggers [1]. In Klipper, run PROBE_CALIBRATE with a paper test, then ACCEPT and SAVE_CONFIG; fine-tune during a print with SET_GCODE_OFFSET and store the change with Z_OFFSET_APPLY_PROBE [2, 3]. Marlin stores the value as M851 Z and saves it with M500 [5]. Prusa i3 and MINI printers use Live Adjust Z, while Prusa LoadCell models and Bambu Lab printers measure it automatically [7, 11].
What wrong first-layer height looks like
Every method on this page adjusts one number: how far the nozzle sits above the bed when the printer thinks it is at Z = 0. The visual signs are consistent across manufacturers:
| Nozzle position | What you see | Risk |
|---|---|---|
| Too high | Round, separate lines; gaps in solid areas; weak bed adhesion | Print detaches or turns into a blob |
| Too low | Lines squashed flat with ridges between them; edges curling up; translucent, thin layer | Clogging, damage to the sheet and nozzle, parts too stuck to remove |
| Right | Flat, even surface with lines touching and no ridges | None |
Prusa and Bambu Lab describe the same symptoms [8, 12]. Prusa stresses judging by eye rather than by a number, and says measuring a printed layer with calipers is not a recommended way to calibrate [8]. Excess squish also widens the first layer, which shows up as elephant’s foot.
Safety: Prusa warns that a nozzle set too low can damage the flexible steel sheet and that such damage is not covered by warranty [8]. Make adjustments in small steps while watching the first lines.
Prusa: First Layer Calibration and Live Adjust Z
On i3-series printers (MK2.5, MK3, MK3.5) the First Layer Calibration prints a zig-zag while you turn the knob to lower the nozzle. Start from zero and move into negative values; counter-clockwise brings the nozzle closer [8, 7]. Prusa quotes −0.400 to −1.500 as a common range in its calibration article and −1.500 to −0.200 as typical in its Live Adjust Z article. A positive value is not possible and indicates a sensor or alignment problem [7].
Points from Prusa’s documentation worth knowing:
- Live Adjust Z fine-tunes the same value during a print. On the MK3S, holding the knob for a few seconds while the first layers print opens it, and the change is permanent [7].
- Smooth, satin and textured sheets differ in thickness, so each needs its own calibration in a steel sheet profile [8].
- Rerun the full calibration after changing the nozzle, upgrading the extruder, moving the printer, or moving the sensor [8].
- If line width varies across the bed, use Bed Level Correction, which shifts the left, right, front and rear by up to ±100 µm each [9]. The bed mesh guide covers this in more detail.
Prusa’s LoadCell printers (CORE One, MK4/S, MK3.9/S, XL) calibrate the first layer automatically. A long press on the knob during the first layer adjusts it for that print only. For a lasting change, set Printer Settings → General → Z offset in PrusaSlicer, where a negative value squishes more [7]. PrusaSlicer adds that value to every Z coordinate in the G-code [10].
Klipper: probe, endstop and baby-steps
With a probe, z_offset in [probe] is required and is defined as the nozzle-to-bed distance when the probe triggers [1]. Klipper’s calibration sequence [2]:
- Home, move the nozzle near the bed center, and run
PROBE_CALIBRATE. - Klipper probes automatically, then moves the nozzle over the probed spot and starts a manual probe.
- Lower the nozzle with the paper test until you feel slight friction, then
ACCEPT. - Run
SAVE_CONFIGto write the newz_offset.
The result becomes invalid after changes to the motion system, hotend position or probe mount, and after any bed tilt change if the probe sits offset from the nozzle. Any mesh made with the old offset must then be redone with BED_MESH_CALIBRATE [2]. Check repeatability with PROBE_ACCURACY: Klipper considers a range above 25 µm too poor for typical bed leveling [2]. Printers that home Z with an endstop instead use Z_ENDSTOP_CALIBRATE and the same paper test [4].
For fine-tuning during a print, SET_GCODE_OFFSET Z_ADJUST=<mm> shifts all following moves; Klipper’s example of Z=-0.2 followed by Z_ADJUST=0.3 leaves a total of 0.1 mm [3]. Z_OFFSET_APPLY_PROBE then subtracts that G-code offset from the probe’s z_offset and needs SAVE_CONFIG; Z_OFFSET_APPLY_ENDSTOP does the same for endstop printers [3]. With a stored z_offset of 1.650 and a baby-step of −0.050 toward the bed, the saved value becomes 1.650 − (−0.050) = 1.700.
Many probes read differently hot and cold, so Klipper recommends probing at a consistent temperature and waiting a few minutes after reaching it [2].
Marlin: M851 and babystepping
Marlin stores the probe’s position relative to the nozzle with M851. Without the MarlinUI probe offset wizard, the documented manual method is [5]:
- Home Z, raise the head and deploy the probe.
- Lower Z slowly until the probe triggers, checking with
M119. - Read Z with
M114and negate it: a reading of 5.2 becomesM851 Z-5.2. - Save with
M500.
Most probes trigger below the nozzle and so have negative Z offsets. Probes triggered by the nozzle itself can be positive; Marlin’s example is M851 Z1.2 [5].
M290 Z<mm> babysteps during a print, for example M290 Z0.25 to move up 0.25 mm. With BABYSTEP_ZPROBE_OFFSET enabled, babystepping also edits the probe Z offset, which M500 then saves; M290 P0 avoids touching it [6].
Bambu Lab: automatic calibration and the G29.1 offset
Bambu Lab’s auto-calibration measures bed leveling and nozzle height with the printer’s sensors [11]. Start it from the printer screen, from Device → Calibrate in Bambu Studio, or from Bambu Handy. For X1 and P1 first-layer problems, Bambu Lab recommends running Automatic Bed Leveling from Settings → Calibration → Print Calibration, repeating it after moving the printer, long storage or heatbed work, and leaving Bed Leveling enabled when starting prints [12].
If the first layer is still wrong, the same guide describes a temporary edit to the G29.1 Z{-0.04} line in Printer Start G-code. The default presses 0.04 mm down on textured plates. Suggested ranges are −0.06 to 0 mm on textured plates and −0.01 to +0.01 mm on others; a first layer that is too high needs a more negative value, too low a less negative one. Bambu Lab cautions that this can create new local defects and should be reverted once the root cause is fixed [12].
If height is right but parts still lift, the problem is elsewhere; Prusa names a greasy sheet, print settings and leveling as next suspects [8]. See bed adhesion and warping.
Questions
Is there a correct Live Adjust Z number for a Prusa i3?
No. Prusa says the value depends on the exact sensor position on each machine, so it must be judged visually; it gives -0.400 to -1.500 only as a common range [8].
Do I need a separate offset for each build plate?
On Prusa i3 printers, yes: smooth, satin and textured sheets have different thicknesses, so each needs its own first layer calibration, stored in steel sheet profiles [8].
Sources
- Configuration reference. Klipper documentation. Firmware documentation. [probe] z_offset definition. Accessed October 12, 2026.
- Probe calibration. Klipper documentation. Firmware documentation. PROBE_CALIBRATE procedure, invalidation rules, PROBE_ACCURACY limits, temperature bias. Accessed October 12, 2026.
- G-Codes. Klipper documentation. Firmware documentation. SET_GCODE_OFFSET, Z_OFFSET_APPLY_PROBE, Z_OFFSET_APPLY_ENDSTOP. Accessed October 12, 2026.
- Manual leveling. Klipper documentation. Firmware documentation. Z_ENDSTOP_CALIBRATE for printers without a probe. Accessed October 12, 2026.
- M851 - XYZ Probe Offset. Marlin Firmware documentation. Firmware documentation. Manual Z offset method, sign convention, PROBE_OFFSET_WIZARD. Accessed October 12, 2026.
- M290 - Babystep. Marlin Firmware documentation. Firmware documentation. Babystepping and BABYSTEP_ZPROBE_OFFSET. Accessed October 12, 2026.
- Live adjust Z. Prusa Knowledge Base. Manufacturer documentation. Live Adjust Z behavior, typical range, LoadCell models and PrusaSlicer Z offset. Accessed October 12, 2026.
- First Layer Calibration (i3). Prusa Knowledge Base. Manufacturer documentation. Procedure, visual criteria, per-sheet profiles, when to rerun. Accessed October 12, 2026.
- Bed Level Correction. Prusa Knowledge Base. Manufacturer documentation. Per-side correction, ±100 µm limit. Accessed October 12, 2026.
- ConfigDefsFDM.cpp (setting definitions and tooltips). Prusa Research, PrusaSlicer source on GitHub. Source code. z_offset is added to all Z coordinates in the G-code. Accessed October 12, 2026.
- Printer Calibration Guide. Bambu Lab Wiki. Manufacturer documentation. Auto-calibration covers bed leveling and nozzle height; where to start it. Accessed October 12, 2026.
- X1/P1 First Layer Print Quality Improvement Guide. Bambu Lab Wiki. Manufacturer documentation. Too high vs too low symptoms; G29.1 Z offset ranges. Accessed October 12, 2026.