---
tag: m0218
title: Set Hotend Offset
brief: Set the offset of a hotend (from hotend 0).
author: thinkyhead

group: calibration
requires: HOTENDS > 1
eeprom: true

codes: [ M218 ]

notes:
- Requires 2 or more nozzles.
- The default hotend offsets are set with `HOTEND_OFFSET_[XYZ]`.
- Z hotend offset only available with `DUAL_X_CARRIAGE` or `SWITCHING_NOZZLE`.
- View current hotend offsets with [`M503`](/docs/gcode/M503.html).
- If `EEPROM_SETTINGS` is enabled, these offsets are saved with [`M500`](/docs/gcode/M500.html), loaded with [`M501`](/docs/gcode/M501.html), and reset with [`M502`](/docs/gcode/M502.html).

parameters:

- tag: T
  optional: true
  description: Hotend index. Active extruder by default.
  values:
  - tag: index
    type: int

- tag: X
  optional: true
  description: Hotend X offset
  values:
  - tag: offset
    type: float

- tag: Y
  optional: true
  description: Hotend Y offset
  values:
  - tag: offset
    type: float

- tag: Z
  optional: true
  description: Hotend Z offset. Requires `DUAL_X_CARRIAGE` or `SWITCHING_NOZZLE`.
  values:
  - tag: offset
    type: float

---

To keep nozzles aligned to the work area between tool-changes, the firmware needs to know how they relate to each other.
