Machinists crossing between turning and milling fear a second language course. The real workload is smaller: the motion core is identical on both machines, and the differences fit on one short list. This page is that list, with the traps marked.
What stays exactly the same?
The code that does most of the work. G00 rapids, G01 feeds, G02 and G03 arcs, G20/G21 units, G90/G91 positioning, the G54 offset family, and the coolant and spindle M-codes all behave identically, the shared inheritance documented in any standard reference. The M-code side of the crossing, including the tool-change split, has its own map in how to remember lathe M-codes vs mill M-codes; this page covers the G side.
The cheat sheet: six differences that matter
| Difference | Mill | Lathe |
|---|---|---|
| Default plane | G17 (XY), arcs use I, J | G18 (XZ), arcs use I, K |
| X values mean | Distance | Diameter, usually |
| Common feed mode | Per minute (G94) | Per revolution |
| Speed control | Direct RPM (S + M03) | G96 CSS + G97 + G50 cap |
| Canned cycles | G81-G89 drilling family | G70-G76 turning family |
G41/G42 compensate | Cutter diameter (D) | Tool-nose radius |
Row one quietly explains a whole class of arc errors: a lathe arc wants I and K because the arc lives in the XZ plane, and J there is an out-of-plane word. Row two is the identity anchor from stopping the X and Z mix-up: lathe X is a size. Row four is its own safety topic, the G50 spindle cap with constant surface speed. Row five’s turning side, G71 and G72 roughing with G70 finishing, is unpacked in the lathe roughing cycles.
And one family note: the differences above assume the Fanuc-shaped mainstream; controls with their own parallel traditions, like Okuma’s OSP, keep the motion core and re-spell the conventions around it.
Which trap catches the most people?
The codes that exist on both machines with different meanings. The famous pair on Fanuc-style controls: on a lathe, G98 and G99 select feed per minute versus feed per revolution; on a mill, the same two codes set canned-cycle return heights, initial level versus R plane. Nothing in the syntax warns you, so the cheat sheets that list both meanings side by side earn their keep. The safe habit is contextual reading: before trusting any G-code in the 90s, name the machine type first.
A concrete failure from this trap: a mill programmer covering a lathe shift read G99 in a turning cycle as a return-height word and left it alone while doubling the spindle speed, not registering that G99 made every feed per-revolution, so the doubled RPM doubled the actual feed too. The insert paid for the lesson.
How should you actually learn the crossing?
As core plus deltas, never as two languages. The shared core is most of every program and is already a compact recall set; the six differences attach to it as a checklist you can rehearse in one sitting. Reading real programs from the other machine type, narrating each block, converts the list into instinct within a couple of weeks, and the coolant and spindle families that behave identically on both, the M08/M09 pattern included, come along free from the coolant-code family drill.
Bottom line
Lathe and mill G-code share their motion core; six deltas carry all the difference: plane and arc words, diameter X, feed per revolution, CSS with its cap, the cycle families, and what G41/G42 compensate. Learn the core once, drill the deltas as a list, and treat any 90s-numbered code as machine-type-dependent until proven otherwise. The recall layer for both machines runs free on the G-code practice hub.
Sources
Frequently asked questions
What are the G-code differences between a lathe and a mill?
Six matter: default plane (G18 with I/K arcs vs G17 with I/J), diameter programming for lathe X, feed per revolution on lathes, G96/G97 constant surface speed with the G50 cap, the G70-G76 turning cycles vs G81-G89 drilling cycles, and tool-nose radius behind the same G41/G42 codes.
Do G98 and G99 mean the same thing on a lathe and a mill?
No. On Fanuc-style lathes they select feed per minute versus per revolution; on mills they set canned-cycle return heights. Same numbers, unrelated meanings.
Is the motion core really identical on both machines?
Yes: rapids, feeds, arcs, units, positioning, and work offsets behave the same, which is why core-plus-deltas beats learning two languages.
What is the best way to learn lathe and mill G-code differences?
Learn the shared core to instant recall, then drill the six deltas as a list. A free app like G-Code Sprint quizzes the everyday codes for both machine types 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.