Skip to content

X and Y Offsets Calculator

The X and Y Offsets Calculator works out your probe’s x_offset and y_offset from physical measurements.

Free, runs in your browser, no registration.

Your probe isn’t in the same place as your nozzle. x_offset and y_offset tell Klipper how far the probe sits from the nozzle, so that when you ask it to probe a point, it moves the probe there rather than the nozzle.

Get them wrong and:

  • Bed mesh points land in the wrong places, so the mesh describes a bed you don’t have
  • The probe tries to measure off the edge of the bed and errors out
  • First layer is inconsistent across the plate even though Z offset looks right
  • PROBE_CALIBRATE gives results that don’t reproduce

Offsets are measured from the nozzle to the probe, in the printer’s coordinate system:

  • Probe to the right of nozzle → positive x_offset
  • Probe to the left of nozzle → negative x_offset
  • Probe behind nozzle (toward the back of the bed) → positive y_offset
  • Probe in front of nozzle → negative y_offset

The sign convention is where nearly all mistakes happen. When in doubt, use the paper method below rather than reasoning about it.

Calipers work if the geometry is accessible:

  1. Measure horizontal distance from nozzle tip centre to probe pin centre, along X.
  2. Same along Y.
  3. Apply signs per the convention above.

Better, because it measures what the machine actually does rather than what the CAD says:

  1. Put a sheet of paper on the bed. Home the printer.
  2. Jog the nozzle down to just touch the paper. Mark that exact point with a pen.
  3. Note the X and Y coordinates from your interface.
  4. Now jog so the probe triggers over that same mark.
  5. Note those coordinates.
  6. x_offset = probe_x − nozzle_x, and the same for Y.

This catches mounting variation, bent probe pins, and toolhead flex that measurements from a model won’t.

After setting offsets in printer.cfg:

[probe]
x_offset: -30.0
y_offset: -15.0

Then:

  1. RESTART
  2. Run BED_MESH_CALIBRATE and watch where the probe goes. It should reach every mesh point without straining toward the bed edge.
  3. If it errors with “Probe triggered prior to movement” or tries to leave the bed, your mesh_min and mesh_max need adjusting to account for the offset — the usable probing area is smaller than the bed by the offset amount.
  • Sign errors. By far the most common. Use the paper method.
  • Forgetting to shrink mesh_min / mesh_max. A probe 30 mm left of the nozzle means the leftmost 30 mm of bed can’t be probed.
  • Not re-measuring after a toolhead change. New hotend, new probe mount, new offsets.
  • Confusing probe X/Y offset with Z offset. Different problem entirely — Z offset is PROBE_CALIBRATE.
  • Assuming the offsets in someone else’s config apply to yours. Even the same printer model varies with mount tolerances.

Note on Beacon, Cartographer, and eddy current probes

Section titled “Note on Beacon, Cartographer, and eddy current probes”

These measure through the bed surface and often sit closer to the nozzle, but they still need offsets. They’re also more sensitive to bed surface material — recalibrate if you change from PEI to garolite or add a magnetic sheet.

Machine setup: run currentbelt tensionprobe offsets → Z offset → bed mesh

Probe offsets come before Z offset. Calibrating Z offset with wrong X/Y offsets means calibrating against the wrong part of the bed.

Probe offsets for my BLTouch, inductive, and Beacon setups across the Voron 2.4, Mercury One.1, K2 Plus and Ender machines are documented in the Minimal 3DP config packs.