Haas G-codes38 codesLathe
Haas Lathe G-code List
Turning has its own cycle numbers, and that is what separates this table from the mill's: G70 to G72 roughing and finishing, G74 and G75 pecking and grooving, G76 and G92 threading, and G96 with G50 for constant surface speed. On a Haas lathe G90 is the O.D./I.D. turning cycle and G94 end facing, not the mill meanings.
Haas Lathe G-code: 38 codes
Codes in colour link to a full page with a worked example and controller differences; the rest link to their row on the G-code list, except codes whose Haas meaning differs from that list, which have no link.
| Code | Function |
|---|---|
| G00 | Rapid PositioningMoves the tool at maximum speed to the specified position. Used for non-cutting moves to position the tool quickly. Movement is typically not in a straight line - each axis moves at its maximum rate independently. |
| G01 | Linear InterpolationMoves the tool in a straight line at a specified feed rate. Used for cutting operations where precise linear movement is required. |
| G02 | Circular Interpolation CWMoves the tool in a clockwise arc. The arc center is defined by I/J/K offsets or R radius. Direction is clockwise when viewed from the positive direction of the perpendicular axis. |
| G03 | Circular Interpolation CCWMoves the tool in a counter-clockwise arc. The arc center is defined by I/J/K offsets or R radius. Direction is counter-clockwise when viewed from the positive direction of the perpendicular axis. |
| G04 | DwellPauses program execution for a specified time. Useful for chip clearing, allowing spindle to reach speed, or timing operations. |
| G09 | Exact Stop CheckNon-modal exact stop. Machine decelerates to a complete stop at the end of the current block only. Unlike G61, it only affects the single block it appears on. |
| G10 | Data Setting / Offset EntryProgrammable data entry for work offsets, tool offsets, and parameters. Allows automatic offset adjustment during program execution. |
| G18 | XZ Plane SelectionSelects the XZ plane for circular interpolation. Arc movements will occur in the XZ plane with Y as the perpendicular axis. Common for lathe operations. |
| G20 | Inch ModeSets the unit system to inches. All position values and feed rates will be interpreted as inches and inches per minute. |
| G21 | Metric ModeSets the unit system to millimeters. All position values and feed rates will be interpreted as millimeters and mm per minute. |
| G28 | Return to Reference PointReturns the machine to its reference point (machine home). Can pass through an intermediate point if coordinates are specified. Often used for safe tool changes. |
| G29 | Return from Reference PointMoves from reference point through intermediate point to final position. Reverses the G28 path. |
| G32 | Single-Pass ThreadingCuts a single threading pass synchronized with spindle rotation. Used for custom thread profiles or when full control is needed. Multiple passes required for full thread. |
| G50 | Scaling Cancel / Max Spindle SpeedOn mills: Cancels scaling (G51). On lathes: Sets maximum spindle speed for constant surface speed mode (G96). |
| G52 | Local Coordinate SystemSets a local coordinate system offset that is added to the active work coordinate system. Creates a temporary shift without changing the work offset. |
| G53 | Machine Coordinate SystemTemporarily use machine coordinates for the current block only. Coordinates are interpreted relative to machine zero, ignoring work offsets. Non-modal - only affects the block it's on. |
| G54 | Work Coordinate System 1Selects work coordinate system 1. This is typically the primary/default work offset used for most machining operations. Origin is set during setup. |
| G54.1 | Extended Work Coordinate SystemsSelects additional work coordinate systems beyond G54-G59. Provides up to 48 additional offsets (P1-P48) for complex multi-fixture setups. |
| G55 | Work Coordinate System 2Selects work coordinate system 2. Use for second fixture or part setup. |
| G56 | Work Coordinate System 3Selects work coordinate system 3. Use for third fixture or part setup. |
| G57 | Work Coordinate System 4Selects work coordinate system 4. |
| G58 | Work Coordinate System 5Selects work coordinate system 5. |
| G59 | Work Coordinate System 6Selects work coordinate system 6. |
| G61 | Exact Stop ModeMachine decelerates to complete stop at each programmed point. Ensures precise positioning but slower cycle time. Use for sharp corners. |
| G64 | Cutting Mode / Continuous PathEnables continuous path mode for smooth motion. Machine does not decelerate fully at corners, allowing faster cycle times with slight corner rounding. |
| G65 | Macro CallCalls a custom macro program with optional arguments. Allows parameterized subprograms for repetitive operations. |
| G70 | Finishing CycleFinishing cycle that follows a previously defined rough profile (G71/G72). Removes the finishing allowance left by the roughing cycle with a single pass. |
| G71 | Rough Turning Cycle (OD/ID)Automatic roughing cycle for turning. Removes material in multiple passes parallel to the Z-axis, leaving a finishing allowance. Used for OD and ID turning. |
| G72 | Rough Facing CycleAutomatic roughing cycle for facing. Removes material in multiple passes parallel to the X-axis. Used for face roughing operations. |
| G74 | Face Grooving / Peck Drilling Cycle (Lathe)On lathe: Peck drilling cycle in Z-axis or face grooving cycle. Plunges with pecks for chip breaking. |
| G75 | Grooving Cycle (OD/ID)One block on a Haas lathe, written with X, Z, U, W, I, K, D and F. There is no P or Q in microns as on a Fanuc. |
| G76 | Automatic Threading Cycle (Lathe)One block on a Haas lathe, written with X, Z, U, W, I, K, A, D and F: K is the thread height and D the depth of the first pass. |
| G90 | O.D./I.D. Turning CycleThe Haas lathe meaning, not absolute positioning. The lathe list has no G91. |
| G92 | Threading Cycle (Simple)On lathe: Simple threading cycle for single straight or taper thread pass. Commonly used for threading operations where manual control of each pass is desired. |
| G94 | End Facing CycleNot feed per minute, which is G98 on a Haas lathe. |
| G95 | End Face Live Tooling Rigid TapNot feed per revolution, which is G99 on a Haas lathe. |
| G96 | Constant Surface SpeedActivates constant surface speed mode (lathe). Spindle RPM varies automatically to maintain constant cutting speed as diameter changes. |
| G97 | Constant RPMCancels constant surface speed mode. Spindle runs at the programmed RPM regardless of cutting diameter. |
Where Haas differs
- Setting 56, M30 Restore Default G, applies on the lathe control as it does on the mill: with it on, M30 resets modal G codes to their defaults.
- G154 P1 to P99 selects the extended work offsets on the lathe as well.
- A G04 P dwell written with a decimal point is read in seconds: G04 P2.5 is two and a half seconds.
- G50 sets the maximum spindle speed for G96 constant surface speed. The app's note says to set it before every G96, because a facing cut to centre otherwise asks for infinite RPM.
- G74 is peck drilling or face grooving and G76 is the automatic threading cycle, where the same numbers on the mill are left-hand tapping and fine boring. G92 is the simple threading cycle, not the position register.
- G74, G75 and G76 are single-block cycles on a Haas lathe, written with X, Z, U, W, I, K, D and F (G76 adds A), not Fanuc's two-block form with P and Q in microns. In G76, K is the thread height and D the depth of the first pass.
- G27, G30, G33, G34, G66, G67 and G91 are not on the Haas lathe code list, so the table leaves them out. Feed per minute and feed per revolution are G98 and G99, with G99 the default, while G94 is the end facing cycle and G95 the end face live tooling rigid tap.
- G32 single-pass threading takes F as the lead of the thread.
- G18 is the working plane for arcs on a lathe; G17 is the mill default.
Frequently asked questions
Why does the lathe list have different codes from the mill list?
Turning cycles use numbers the mill assigns to other things. G74 is a peck or face grooving cycle on the lathe and left-hand tapping on the mill, G76 is the threading cycle rather than fine boring and G92 is the simple threading cycle rather than a position register. The lathe list shows the turning meaning; the Haas mill G-code list shows the other.
What does G50 do on a Haas lathe?
It caps the spindle speed for constant surface speed work. G96 raises RPM as the diameter falls, and without a G50 limit a cut to centre asks for a speed the chuck cannot hold. Program G50 S before G96 every time. See G-code list.
Do I use G76 or G92 for threading?
G76 is the automatic multi-pass cycle: one block sets the depths and passes and the control works through them. G92 is the simple cycle where you program each pass depth yourself. G76 for production, G92 when you want to see every pass.
Which units do G75 pecks use?
Not Fanuc's microns. On a Haas lathe G75 is one block written with X, Z, U, W, I, K, D and F, with no P or Q word, so the Fanuc habit of P2000 for a 2 mm (0.079 in) peck does not carry over. See G-code list.
Other controller lists
Last updated 11 Oct 2026