---
tag: m0428
title: Home Offsets Here
brief: Set home offsets based on current position
author: thinkyhead

requires: HAS_HOME_OFFSET
group: motion

codes: [ M428 ]

notes: |
  - Only the Z offset can be altered on `DELTA`.
  - This G-code can be disabled with `NO_WORKSPACE_OFFSETS` to optimize movement.
  - Changing the home offsets will not invalidate bed leveling or other saved data.
  - If `EEPROM_SETTINGS` is enabled, the home offsets are saved with [`M500`](/docs/gcode/M500.html), loaded with [`M501`](/docs/gcode/M501.html), and reset with [`M502`](/docs/gcode/M502.html).
  - Use [`M206`](/docs/gcode/M206.html) to set the home offsets directly.

parameters:

examples:
  -
    pre: What was X=10 becomes X=0. So the X home offset becomes -10.
    code:
      - G1 X10
      - M428

---

Use [`M428`](/docs/gcode/M428.html) to set a persistent offset to the native home position and coordinate space by assigning the current position as the native home position. See the example below.

- The current position must be within 2cm from 0 or an endstop.
- The current position is set to the native home position.
- Any previous position shift from [`G92`](/docs/gcode/G092.html) is cleared.
- The home offset is persistent — added to the current position until changed.
- Some uses include fine adjustment of Z position (without moving endstops) and shifting the coordinate space to print on a different part of the bed.
