Z-Offset calibration: fine-tune your first layer remotely
Z-Offset calibration: fine-tune your first layer remotely
The Z-offset calibration wizard lets you calibrate your printer's Z-offset directly from SimplyPrint - no physical access to the printer's screen required. This is the same "paper test" calibration you'd do locally, but accessible remotely.
What is Z-offset?
When your printer has a probe (BLTouch, CR-Touch, inductive sensor, load cell, etc.), that probe triggers at a different height than where your nozzle actually touches the bed. The Z-offset tells your printer's firmware: "when the probe triggers, the nozzle is X millimeters from the bed."
If the Z-offset is wrong:
- Too far from bed: Poor adhesion, prints detaching, spaghetti
- Too close to bed: Nozzle scratching the bed surface, potential damage
When do you need to recalibrate?
You should recalibrate Z-offset after:
- Changing the nozzle
- Swapping or adjusting the build plate
- Moving or adjusting the probe
- Reassembling the hotend or bed
It's one of the most common calibration tasks for FDM printers.
Supported printers
Z-offset calibration works with printers connected via:
Integration | Supported |
|---|---|
OctoPrint (Marlin) | Yes |
Moonraker/Klipper | Yes |
Duet (RepRap) | Yes |
Bambu Lab | No - uses automatic calibration |
Ultimaker | No |
Elegoo | No |
Prusa Connect | No - uses built-in calibration |
The feature requires the ability to send G-code commands to the printer, which some closed integrations don't support.
Probe vs endstop-only printers
The wizard works with both probe-equipped printers and older endstop-only printers. SimplyPrint detects your setup and sends the appropriate commands.
How to use the Z-offset wizard
Starting calibration
- Open the Control panel for your printer
- Click the Z-Offset Calibration button in the top bar (next to bed leveling)
- Or: Open printer settings dropdown and select Z-Offset Calibration
- Read the instructions and click Start Calibration
The paper test
After homing and probing completes:
- Slide a piece of paper between the nozzle and bed
- Use the adjustment buttons to lower the nozzle
- Keep adjusting until you feel slight resistance when pulling the paper
- Click Save Z-Offset
The step size buttons (0.01mm, 0.1mm, 0.5mm, 1mm) let you make coarse or fine adjustments. Start with larger steps, then switch to 0.01mm for final fine-tuning.
After saving
- Marlin/OctoPrint: The offset is saved immediately to EEPROM
- Klipper: The printer restarts briefly to apply changes (SAVE_CONFIG) - this is normal
- Duet: The offset is saved to config-override.g
How it works (technical details)
The wizard uses G-code macros that adapt to your printer's firmware. If you need to customize the behavior, you can edit these macros in Settings → G-code Macros.
Firmware-specific commands
Firmware | Start | Adjust | Save |
|---|---|---|---|
Klipper (probe) | PROBE_CALIBRATE | TESTZ Z=X | ACCEPT + SAVE_CONFIG |
Klipper (endstop) | Z_ENDSTOP_CALIBRATE | TESTZ Z=X | ACCEPT + SAVE_CONFIG |
Marlin (probe) | M851 Z0, G28, G1 Z0 | G91 + G1 Z | M851 + M500 |
Marlin (endstop) | M206 Z0, G28, G1 Z0 | G91 + G1 Z | M206 + M500 |
Duet | G30 S-2, G92 Z0 | G91 + G1 Z | G31 + M500 |
Safety features
- Offset range limited to -5.0mm to +2.0mm
- Warning shown for unusual values outside -3.0mm to +0.5mm
- Soft endstops (Marlin) temporarily disabled during calibration
- Nozzle automatically raised when canceling
Troubleshooting
"This feature is not available for your printer"
Your printer integration doesn't support sending G-code commands. This typically means:
- Bambu Lab printers (closed ecosystem)
- Ultimaker (no direct G-code control)
- Elegoo printers (limited API)
Offset seems wrong after saving
Some causes:
- Bed temperature wasn't at printing temp during calibration (thermal expansion affects measurements)
- Paper thickness varies - try a different piece
- Nozzle had filament residue
Tip: Run calibration with the bed heated to your usual printing temperature for best accuracy.
Klipper printer went offline after saving
This is expected behavior. Klipper requires a firmware restart after SAVE_CONFIG. The printer will reconnect within a few seconds.
Related features
- Babystepping: Temporary per-print Z adjustments (different from Z-offset)
- Bed leveling/probing: Creates a mesh of bed surface variations
- G-code macros: Customize the calibration commands for your setup
Updated on: 23/02/2026
Thank you!