---
title: "G90 vs G91: Absolute vs Incremental (and Why It Crashes Beginners)"
description: "G90 is absolute positioning and G91 is incremental. Mixing them up sends moves to the wrong place, which is a classic beginner crash. Here is the difference."
url: https://gcodepractice.com/journal/g90-vs-g91-crash-prevention/
canonical: https://gcodepractice.com/journal/g90-vs-g91-crash-prevention/
author: "Lawrence Arya"
authorUrl: https://www.linkedin.com/in/vibecoding/
published: 2026-06-02
updated: 2026-06-02
category: "Code reference"
tags: ["g90", "g91", "absolute", "incremental", "beginner"]
lang: en
---

# G90 vs G91: Absolute vs Incremental (and Why It Crashes Beginners)

> **TL;DR** G90 is absolute positioning: every coordinate is measured from part zero. G91 is incremental: every coordinate is a distance from where the tool is now. They are modal, so whichever you set stays active until you change it. Leaving G91 active when the program expected G90 is a classic beginner crash, because moves stack up from the wrong reference.

`G90` and `G91` do not move anything themselves. They decide how the machine reads every coordinate that follows, which is why getting them wrong is quietly dangerous.

## Absolute vs incremental

- **`G90` (absolute):** every coordinate is measured from part zero (your work offset). `X10` always means "go to X10," the same fixed point every time.
- **`G91` (incremental):** every coordinate is a distance from where the tool is right now. `X10` means "move 10 further in X," so the destination depends on where you already are.

```
G90 X10   (absolute: go to X10)
X10       (still X10, the same point)

G91 X10   (incremental: move +10)
X10       (move another +10, now at X20)
```

## Why it is a crash risk

Both codes are **modal**: whichever you set stays active until the other replaces it. If `G91` is left active when the program assumes `G90`, every line adds onto the last instead of going to fixed points. The tool "walks" further and further from where the programmer intended, and a move planned for clear air can end up in the stock or a fixture. This is the same modal-state trap described in [modal vs non-modal G-codes](/journal/modal-vs-non-modal-g-codes/).

## At a glance

| Aspect | `G90` (absolute) | `G91` (incremental) |
| --- | --- | --- |
| Coordinates measured from | Part zero (work offset) | Current tool position |
| `X10` means | Go to the fixed point X10 | Move 10 further in X |
| Repeated `X10` | Stays at X10 | Keeps moving +10 each time |
| Modal? | Yes (stays active) | Yes (stays active) |
| Beginner risk | Safer default | Walks off if left active by mistake |

## How to keep them straight

Read the mode first, always. Before you trust any coordinate in a program, find the active `G90` or `G91`. Then drill the pair until "absolute vs incremental" is instant, the same way you would drill [G00 vs G01](/journal/g00-vs-g01/). These are core entries in the [common G-codes](/journal/common-g-codes-for-cnc-beginners/), and recall of the modal pairs is exactly what [beginner CNC code practice](/journal/beginner-cnc-code-practice/) targets. Recall does not replace careful checking on the machine, but it removes the confusion behind many beginner mistakes.

## Bottom line

`G90` is absolute (from part zero), `G91` is incremental (from here). They are modal, so the wrong one quietly affects every following line. Read the active mode first, and drill the pair until you never hesitate.

## Sources

- [LinuxCNC G-code reference (G90, G91)](https://linuxcnc.org/docs/html/gcode/g-code.html)
- [Wikipedia: G-code](https://en.wikipedia.org/wiki/G-code)
- [CNCCookbook: G-code and M-code cheat sheet](https://www.cnccookbook.com/g-code-m-code-cnc-list-cheat-sheet/)

## Frequently asked questions

### What is the difference between G90 and G91?
`G90` is absolute: coordinates are measured from part zero. `G91` is incremental: coordinates are distances from the current position. The same `X10` means different things depending on which mode is active.

### Why does mixing up G90 and G91 cause crashes?
Because they are modal, the wrong mode stays active for every following line. In `G91` by mistake, each move adds onto the last instead of going to a fixed point, so the tool walks off to a position the programmer never intended.

### How do I stop confusing G90 and G91?
Drill the pair as opposites and always check which mode is active when reading a program. A free tool like G-Code Sprint quizzes `G90` vs `G91` and the other modal pairs and repeats the ones you miss.

*G-Code Sprint is a study and practice tool only. It is not a CNC simulator, machine controller, or safety authority. Always follow your instructor, employer, machine manual, and shop safety procedures.*

---

Source: https://gcodepractice.com/journal/g90-vs-g91-crash-prevention/
Author: Lawrence Arya — https://www.linkedin.com/in/vibecoding/
