---
title: "Additive vs Subtractive G-Code: The Real Differences"
description: "Printers and mills share the same motion core; the dialects split at the tool: extrusion and heat words on one side, spindle, offsets, and cycles on the other."
url: https://gcodepractice.com/journal/differences-between-additive-and-subtractive-g-code/
canonical: https://gcodepractice.com/journal/differences-between-additive-and-subtractive-g-code/
author: "Lawrence Arya"
authorUrl: https://www.linkedin.com/in/vibecoding/
published: 2026-06-04
updated: 2026-06-04
category: "Code reference"
tags: ["additive", "subtractive", "3d-printing", "g-code", "comparison"]
lang: en
---

# Additive vs Subtractive G-Code: The Real Differences

> **TL;DR** Additive and subtractive machines run the same G-code motion core: G0 and G1 moves, homing, absolute and relative positioning. The dialects split at the tool. Printer code adds the E extrusion axis, temperature waits like M109, and fan control; machining code adds spindle commands, work and tool offsets, compensation, and canned cycles. The deeper difference is stakes: additive mistakes waste plastic, subtractive mistakes meet force.

Open a print file and a milling program side by side and the first impression is kinship: the same `G1` moves, the same coordinates, the same block shapes. Keep reading and the families split, each carrying a professional vocabulary the other never uses. Knowing exactly where the split runs is what lets [3D printing](https://en.wikipedia.org/wiki/3D_printing) people read machining code, and vice versa, without bluffing.

## What do both dialects share?

The motion grammar. `G0` and `G1` for rapid and feed moves, `G28` homing, `G90` and `G91` positioning modes, millimeter units, and the letter-plus-value word format itself. This shared core is why the two communities can talk at all, and why a printing background shortens the machining curve so much, the practical journey mapped in the [3D printer to CNC router transition guide](/journal/3d-printer-to-cnc-router-transition-guide/).

## Where does printer code go its own way?

Toward heat and deposition. The [printer dialect](https://reprap.org/wiki/G-code) revolves around words machining never prints:

| Printer-only | What it does |
| --- | --- |
| `E` axis word | Extrusion, coordinated with motion |
| `M104` / `M109` | Set hotend temperature / set and wait |
| `M140` / `M190` | Bed temperature / wait |
| `M106` / `M107` | Part fan on / off |
| `G29` family | Bed leveling routines |
| `G92 E0` | Reset the extrusion counter |

The `E` word is the deepest difference: extrusion handled as an axis, so `G1 X50 Y20 E4.5` weaves filament feed into the move itself. Temperature waits are the other signature, programs that pause until physics catches up, a concept machining code simply does not contain.

## Where does machining code go its own way?

Toward force and variable geometry. The [machining dialect](https://linuxcnc.org/docs/html/gcode/g-code.html) adds:

| Machining-only | What it does |
| --- | --- |
| `S` + `M03` / `M05` | Spindle speed, start, stop |
| `G54` family | Work offsets locating the part |
| `G43` / `G41` / `G42` | Tool length and radius compensation |
| `T` + `M06` | Tool selection and change |
| `G81`, `G83`, `G71`... | Canned cycles |
| `M08` / `M09` | Coolant |

Every row exists because machining geometry varies: parts clamp anywhere, tools differ in length and radius, and operations repeat in patterns. Printing's fixed bed and single nozzle make the whole offset apparatus unnecessary, which is exactly why `G54` confuses printer people, the story told in [what G54 means in 3D printing](/journal/what-is-g54-in-3d-printing/), and why the [tool change sequence](/journal/m06-tool-change-explained/) has no slicer equivalent.

## What is the deeper difference behind the words?

Stakes and direction. Additive code commands material to arrive, and its failure mode is waste: bad code prints spaghetti, costs filament and hours, and embarrasses nobody twice. Subtractive code commands a tool through resistance, and its failure mode is force: bad code breaks tools, throws parts, and damages machines. The vocabularies reflect it, machining's offsets, compensation, and prove-out culture are all force-management, and so should reading habits: a machining program deserves the line-by-line scrutiny a print file rarely gets.

A concrete illustration: `G1 X100 F3000` is a routine travel move in a print and a possible disaster in a pocket, depending entirely on context the code itself does not show. Same words, different worlds around them.

## Bottom line

One language, two vocabularies: a shared motion core, then `E`, temperatures, and fans on the additive side versus spindle, offsets, compensation, and cycles on the subtractive side, with force as the real divider. Whichever direction you are crossing, the gap is a compact recall set, and short drills on the [G-code practice hub](/g-code-practice/) close it from either shore.

## Sources

- [RepRap wiki: G-code (printer dialect)](https://reprap.org/wiki/G-code)
- [LinuxCNC G-code reference (machining dialect)](https://linuxcnc.org/docs/html/gcode/g-code.html)
- [Wikipedia: 3D printing](https://en.wikipedia.org/wiki/3D_printing)

## Frequently asked questions

### What are the differences between additive and subtractive G-code?
A shared motion core (`G0`, `G1`, homing, positioning), then split vocabularies: extrusion `E`, temperatures, and fans for printing; spindle, work offsets, compensation, tool changes, and canned cycles for machining.

### What is the E axis in printer G-code?
The extruder treated as an axis: `G1 X50 Y20 E4.5` feeds 4.5 mm of filament during the move. Machining has no equivalent because material leaves rather than arrives.

### Why does machining G-code need offsets when printing does not?
Machining geometry varies per setup, parts clamp anywhere and tools differ, so `G54` and `G43` reconcile program coordinates with reality. A printer's fixed bed and nozzle let homing and leveling cover it.

### What is the best way to learn machining G-code if I know printer G-code?
Drill the machining-only vocabulary with active recall; the motion core transfers. A free app like G-Code Sprint quizzes the everyday machining codes and repeats whichever ones you miss.

*G-Code Sprint is a study and practice tool only. Always follow your instructor, employer, machine manual, and shop safety procedures.*

---

Source: https://gcodepractice.com/journal/differences-between-additive-and-subtractive-g-code/
Author: Lawrence Arya — https://www.linkedin.com/in/vibecoding/
