> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.simplyprint.io/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Z-Offset calibration: fine-tune your first layer remotely

# Z-Offset calibration: fine-tune your first layer remotely

||| This feature is coming soon and is not yet available in SimplyPrint.

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

1. Open the **Control panel** for your printer
2. Click the **Z-Offset Calibration** button in the top bar (next to bed leveling)
   - Or: Open printer settings dropdown and select **Z-Offset Calibration**
3. Read the instructions and click **Start Calibration**

| Make sure the build plate is clear before starting. Have a piece of paper ready - standard printer paper works well.

### The paper test

After homing and probing completes:

1. Slide a piece of paper between the nozzle and bed
2. Use the adjustment buttons to lower the nozzle
3. Keep adjusting until you feel **slight resistance** when pulling the paper
4. 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
