---
tag: m0290
title: Babystep
brief: Babystep one or more axes
author: thinkyhead

since: 1.1.7
requires: BABYSTEPPING
group: calibration

codes: [ M290 ]

notes: Requires `BABYSTEP_XY` for babystepping on the XY axes.

parameters:
  -
    tag: X
    optional: true
    description: A distance on the X axis
    values:
      -
        tag: pos
        type: float
  -
    tag: Y
    optional: true
    description: A distance on the Y axis
    values:
      -
        tag: pos
        type: float
  -
    tag: Z
    optional: true
    description: A distance on the Z axis
    values:
      -
        tag: pos
        type: float
  -
    tag: S
    optional: true
    description: Alias for Z
    values:
      -
        tag: pos
        type: float
  -
    tag: P
    optional: true
    description: Use `P0` to leave the Probe Z Offset unaffected. (Requires `BABYSTEP_ZPROBE_OFFSET`)
    values:
      -
        type: bool

example:
  -
    pre: Babystep the Z axis by 0.25mm (in mm units mode)
    code:
      - M290 Z0.25 ; move up 0.25mm on the Z axis

---

Apply babysteps to one or more axes using current units. Offsets applied with [`M290`](/docs/gcode/M290.html) aren't added to the current coordinates, but are intended for making small adjustments, especially in the Z axis, at the start of a print.

Note that when `BABYSTEP_ZPROBE_OFFSET` is enabled, [`M290`](/docs/gcode/M290.html) also modifies the Probe Z Offset (with no immediate effects). The new Z offset applies to successive probing operations, and can be saved with [`M500`](/docs/gcode/M500.html). This behavior is means to coincide with the LCD Menu replacing "Z Babystepping" with "Babystep Z Probe Offset." To avoid this side-effect, use `M290 P0` or leave `BABYSTEP_ZPROBE_OFFSET` disabled.
