---
title: "Lathe X: Radius vs Diameter Programming, the Whole System"
description: "Diameter programming won the lathe world because prints and micrometers speak diameter. How both modes work, where each lives, and the words that follow X."
url: https://gcodepractice.com/journal/lathe-g-code-x-radius-vs-diameter-programming/
canonical: https://gcodepractice.com/journal/lathe-g-code-x-radius-vs-diameter-programming/
author: "Lawrence Arya"
authorUrl: https://www.linkedin.com/in/vibecoding/
published: 2026-06-07
updated: 2026-06-07
category: "Code reference"
tags: ["lathe", "diameter mode", "radius mode", "x axis"]
lang: en
---

# Lathe X: Radius vs Diameter Programming, the Whole System

> **TL;DR** Lathe controls can read X two ways: diameter programming, where X50.0 means a 50 mm finished diameter (the near-universal production default, because prints and micrometers speak diameter), and radius programming, where X means literal distance from centerline (surviving in some configurations, dialects, and special contexts). The mode is set per machine, by parameter or by G-codes where supported (LinuxCNC documents G7 diameter and G8 radius), and the convention propagates beyond positions: U increments, X wear offsets, and cycle depth words each follow per-control rules that the mode decides, which is why the first lathe question is always which X this machine speaks.

X is machining's only negotiable axis: every other word in the language means one physical thing, and a lathe's X means either distance-from-centerline or finished-diameter depending on a setting, with everything downstream, increments, offsets, cycles, inheriting the choice. The negotiation settled almost everywhere in one direction, with a persistent minority, and understanding both as a system beats memorizing either as a rule.

## The two readings, and why one won

In radius programming, X is literal geometry: the tool's distance from the spindle axis, 25.0 meaning 25 millimeters from center. In diameter programming, X speaks the part's language: X50.0 means the cut produces a 50 mm diameter, the control halving internally to place the tool 25 from center. The [LinuxCNC lathe documentation](https://linuxcnc.org/docs/html/lathe/lathe-user.html) exposes the choice as G7 (diameter) and G8 (radius); industrial controls mostly bury it in a parameter and ship in diameter mode.

Diameter won production because the rest of turning already spoke it: prints dimension diameters, micrometers and the [whole measuring culture](https://en.wikipedia.org/wiki/Lathe) report them, tolerances negotiate in them. Diameter mode lets program, print, and measurement agree without division at the keyboard, and the price, X moves being half their number in physical travel, is paid once in training rather than per part forever. Radius mode survives where literal geometry matters more than print agreement: certain configurations, dialects, teaching contexts, and a few shops with their own history.

## The system the mode propagates

| The X-family word | Diameter-mode reading | The caution |
| --- | --- | --- |
| X positions | Finished diameter | The headline rule |
| U increments (system A) | Diameter change: U-1.0 closes the diameter 1.0 | Travel is half the number |
| X wear offsets | Diameter values on common controls | 0.4 in the offset = 0.2 per side |
| Cycle depth words | Per-cycle definition: some read on radius | The cycle documentation decides |
| Arc words (I, R) in XZ | Radius-true geometry per dialect rules | The mode does not redefine arc geometry |

The table's last two rows are where competence gets tested: the mode is a convention about X positions, not a redefinition of all geometry, so cycle depths and arc parameters follow their own documented rules per control, and assuming the diameter convention covers them is how [G76 depth words](/journal/g76-threading-cycle-fanuc-explained-simply/) get programmed at twice their intent. The [U-and-W story](/journal/fanuc-lathe-u-and-w-vs-x-and-z-explained/) carries the incremental half of the system in full.

One more system member deserves naming: CAM. Lathe posts carry their own diameter-versus-radius output setting, independent of the machine's, and the pair must agree, a radius-output post feeding a diameter-mode control produces the classic half-size program that previews perfectly and cuts wrong. Post configuration is set once per machine and verified with the first posted program's X values read against the model's diameters, the same one-time check every translator in the chain earns.

## Reading programs and machines defensively

A program does not announce its convention; it inherits its author's assumption, which makes the defensive reading order universal: establish the machine's mode from its settings (never from the program), then read the program's X values against plausibility, a part whose diameters are all suspiciously double or half plausible dimensions is announcing a convention mismatch, the [exactly-2x signature](/journal/why-is-my-cnc-lathe-cutting-twice-as-deep/) before it reaches metal. The two-minute physical verification, small commanded X move, DRO and travel compared, settles any remaining doubt per machine, the same empiricism that [worked references recommend](https://www.helmancnc.com/cnc-lathe-g96-and-g97-g-code/) for every lathe convention.

The fluency layer underneath is the lathe X-family at recall speed: the diameter rule, U's behavior, where offsets apply, drilled free in the 60-second rounds on the [G-code practice page](/g-code-practice/), because the convention only protects the machinist who applies it without stopping to derive it, on every X word of every program, which is exactly what turning serves up all day.

## Sources

- [LinuxCNC: Lathe user information](https://linuxcnc.org/docs/html/lathe/lathe-user.html)
- [Wikipedia: Lathe](https://en.wikipedia.org/wiki/Lathe)
- [Helman CNC: lathe programming references](https://www.helmancnc.com/cnc-lathe-g96-and-g97-g-code/)

## Frequently asked questions

### What is the difference between radius and diameter programming on a lathe?

How the control reads X: diameter programming makes X50.0 mean a 50 mm finished diameter (the production default), radius programming makes X the literal distance from centerline. The machine's setting decides, and everything X-flavored inherits it.

### How do I know if my lathe is in diameter or radius mode?

The settings and documentation state it, by parameter on most industrial machines, by G7/G8 where the dialect supports modes, and a small commanded X move against the DRO verifies it physically. Never infer it from a program.

### Do wear offsets and U words follow the same diameter convention?

On diameter-mode controls the X family generally speaks diameter consistently: positions, U increments, and wear offsets. Cycle depth words are the exception zone, per-cycle definitions rule, so the cycle documentation gets the final word.

### Why did diameter programming become the standard?

Because prints, micrometers, and tolerance talk already spoke diameter: the mode lets program, print, and measurement agree without keyboard division. Radius mode trades that agreement for literal geometry, a trade production declined.

---

Source: https://gcodepractice.com/journal/lathe-g-code-x-radius-vs-diameter-programming/
Author: Lawrence Arya — https://www.linkedin.com/in/vibecoding/
