G54.APP

G-code deep dive

G92 Coordinate Offset: What It Does and Why G54 Is Safer

G92G92.1G92.2

G92 is the old way to set a part zero: park the tool somewhere known and declare it. G92 X0 Y0 Z25 means "from now on, call this position X0 Y0 Z25" — the control back-computes an offset and applies it globally. No axes move.

It predates stored work offsets, and on hand-cranked or unhomed machines it was the only option. On a modern homed machine it survives mostly as a source of mystery shifts — because of two properties:

  1. It stacks. The G92 shift adds on top of the active G54G59 offset — and stays applied when you switch to another work system. Every fixture on the table moves together.
  2. It lingers. The shift persists across program end and reset on many controls — FANUC stores it in parameters that survive power-down. The next program inherits it invisibly.
G54 G0 X0 Y0     ; tool over G54 zero: readout says X0 Y0
G92 X10          ; declare "this is X10" — a −10 shift now exists
G55 G0 X0 Y0     ; even in G55, everything is shifted by −10
G92.1            ; clear it; sanity restored

Where G92 still earns its place

If the machine homes and the control has work offsets, the modern rule is blunt: set G54, don't set G92.

OperationLinuxCNCGRBLCentroidFANUCMach3Mach4Notes
Set position / coordinate offset G92 G92 G92 G92 G92 G92 FANUC has G92.1 / G92.2 to clear or restore; Mach has G92.1.

— means the control has no equivalent code. Full cross-control tables: the complete G-code & M-code reference.

Debugging a mystery shift

Parts cutting consistently off-location by the same amount, with correct work offsets, is the G92 signature. The checklist:

  1. Look at the control's offset/parameter screen for nonzero G92 values.
  2. Clear with G92.1 (or zero the parameters).
  3. Find the program that set it — usually a hand-written probe or setup routine — and replace the G92 with G10 L20 writing to a real work offset.

A simulator that tracks the full offset stack shows a G92 shift the moment it happens, instead of after the third scrapped part.

Common mistakes

Frequently asked questions

What does G92 do?

G92 X0 Y0 declares 'the tool is now at X0 Y0' — the control computes whatever offset makes that true and applies it to every coordinate system. Nothing moves; the numbers shift. It's a statement about where you are, not a command to go somewhere.

What is the difference between G92 and G54?

G54 selects a stored offset measured from machine home — absolute, persistent, settable from the offset screen. G92 improvises an offset from wherever the tool happens to be, and it stacks on top of the active G54–G59 offset. On homed machines with work offsets, G92 is almost never the right tool.

How do I cancel a G92 offset?

G92.1 clears the offset (and on FANUC zeroes the stored parameters); FANUC also has G92.2 to suspend it while keeping the values. On GRBL, G92.1 clears it. If parts are cutting shifted and the work offsets look right, check the G92 values — a leftover shift persists across programs and, on some controls, across power cycles.

Why do 3D printers use G92 so much?

Printer firmware uses G92 E0 to reset the extruder axis position between retractions and moves — the E axis has no home switch, so declaring its position is the only way. That idiom is legitimate; it's on machine tools with real homing and work offsets that G92 becomes a liability.

See it, don't guess it

Paste a program into the free G54.APP viewer and watch these codes execute — toolpaths, stock removal, and machine state, live in your browser. Nothing is uploaded.

Open the G-code viewer