GCode and MCode Reference List for Milling
These are the common gcodes and mcodes for milling in the Fanuc, LinuxCNC, GRBL, and Haas dialects. We give a quick definition of each gcode along with a link to tutorials and examples of how to use it. The Tutorial is a link (if any) to a tutorial from our popuplar Online Free GCode Training that uses GWizard Editor to teach how to program the gcode.
Pssst! Hey, if you’re here looking up gcodes, maybe you’d like to find an easier way. What could be better than software that tells you exactly what each gcode does in plain English?
That’s what GWizard Editor is like.
GCode is complicated. GWizard Editor makes it easy.
Code

Category

Function

Notes 
Tutorials


G00 
Motion

Move in a straight line at rapids speed.  XYZ of endpoint  G00 and MDI. Linear Motion: G00 and G01  
G01 
Motion

Move in a straight line at last speed commanded by a (F)eedrate  XYZ of endpoint  G01 and MDI. Linear Motion: G00 and G01  
G02 
Motion

Clockwise circular arc at (F)eedrate  XYZ of endpoint IJK relative to center R for radius  G02 / G03 Tutorial and Examples  
G03 
Motion

Counterclockwise circular arc at (F)eedrate  XYZ of endpoint IJK relative to center R for radius  G02 / G03 Tutorial and Examples  
G04 
Motion

Dwell: Stop for a specified time.  P for milliseconds X for seconds  Precise Timing and Speed: Dwell, Exact Stop, Backlash Compensation  
G05 
Motion

FADAL NonModal Rapids  
G09 
Motion

Exact stop check  Precise Timing and Speed: Dwell, Exact Stop, Backlash Compensation  
G10 
Compensation

Programmable parameter input  
G15 
Coordinate

Turn Polar Coordinates OFF, return to Cartesian Coordinates  G15/G16 Polar Coordinates  
G16 
Coordinate

Turn Polar Coordinates ON  G15/G16 Polar Coordinates Polar Coordinate Calculator  
G17 
Coordinate

Select XY plane  CNC GCode Coordinates  
G18 
Coordinate

Select XZ plane  CNC GCode Coordinates  
G19 
Coordinate

Select YZ plane  CNC GCode Coordinates  
G20 
Coordinate

Program coordinates are inches  G20 and G21: Unit Conversion  
G21 
Coordinate

Program coordinates are mm  G20 and G21: Unit Conversion  
G27 
Motion

Reference point return check  G28: Return to Reference Point  
G28 
Motion

Return to home position  G28: Return to Reference Point  
G29 
Motion

Return from the reference position  G28: Return to Reference Point  
G30 
Motion

Return to the 2nd, 3rd, and 4th reference point  G28: Return to Reference Point  
G32 
Canned

Constant lead threading (like G01 synchronized with spindle)  
G40 
Compensation

Tool cutter compensation off (radius comp.)  
G41 
Compensation

Tool cutter compensation left (radius comp.)  
G42 
Compensation

Tool cutter compensation right (radius comp.)  
G43 
Compensation

Apply tool length compensation (plus)  
G44 
Compensation

Apply tool length compensation (minus)  
G49 
Compensation

Tool length compensation cancel  
G50 
Compensation

Reset all scale factors to 1.0  
G51 
Compensation

Turn on scale factors  
G52 
Coordinate

Local workshift for all coordinate systems: add XYZ offsets  
G53 
Coordinate

Machine coordinate system (cancel work offsets)  
G54 
Coordinate

Work coordinate system (1st Workpiece)  
G55 
Coordinate

Work coordinate system (2nd Workpiece)  
G56 
Coordinate

Work coordinate system (3rd Workpiece)  
G57 
Coordinate

Work coordinate system (4th Workpiece)  
G58 
Coordinate

Work coordinate system (5th Workpiece)  
G59 
Coordinate

Work coordinate system (6th Workpiece)  
G61 
Other

Exact stop check mode  Precise Timing and Speed: Dwell, Exact Stop, Backlash Compensation  
G62 
Other

Automatic corner override  
G63 
Other

Tapping mode  
G64 
Other

Best speed path  
G65 
Other

Custom macro simple call  Subprograms and Macros  
G68 
Coordinate

Coordinate System Rotation  G68 and G69 Tutorial and Examples  
G69 
Coordinate

Cancel Coordinate System Rotation  G68 and G69 Tutorial and Examples  
G73 
Canned

High speed drilling cycle (small retract)  
G74 
Canned

Left hand tapping cycle  
G76 
Canned

Fine boring cyle  
G80 
Canned

Cancel canned cycle  
G81 
Canned

Simple drilling cycle  
G82 
Canned

Drilling cycle with dwell (counterboring)  
G83 
Canned

Peck drilling cycle (full retract)  
G84 
Canned

Tapping cycle  
G85 
Canned

Boring canned cycle, no dwell, feed out  
G86 
Canned

Boring canned cycle, spindle stop, rapid out  
G87 
Canned

Back boring canned cycle  
G88 
Canned

Boring canned cycle, spindle stop, manual out  
G89 
Canned

Boring canned cycle, dwell, feed out  
G90 
Coordinate

Absolute programming of XYZ (type B and C systems)  
G90.1 
Coordinate

Absolute programming IJK (type B and C systems)  
G91 
Coordinate

Incremental programming of XYZ (type B and C systems)  
G91.1 
Coordinate

Incremental programming IJK (type B and C systems)  
G92 
Coordinate

Offset coordinate system and save parameters  
G92 (alternate) 
Motion

Clamp of maximum spindle speed  S  
G92.1 
Coordinate

Cancel offset and zero parameters  
G92.2 
Coordinate

Cancel offset and retain parameters  
G92.3 
Coordinate

Offset coordinate system with saved parameters  
G94 
Motion

Units per minute feed mode. Units in inches or mm.  
G95 
Motion

Units per revolution feed mode. Units in inches or mm.  
G96 
Motion

Constant surface speed  G96: Constant Surface Speed  
G97 
Motion

Cancel constant surface speed  G96: Constant Surface Speed  
G98 
Canned

Return to initial Z plane after canned cycle  G98 GCode and G99 GCode: Canned Cycle Return or Feedrate Modes  
G99 
Canned

Return to initial R plane after canned cycle  G98 GCode and G99 GCode: Canned Cycle Return or Feedrate Modes  
MCodes


Code

Category

Function

Notes 
Tutorials


M00 
MCode

Program Stop (nonoptional)  
M01 
MCode

Optional Stop: Operator Selected to Enable  
M02 
MCode

End of Program  
M03 
MCode

Spindle ON (CW Rotation)  M03 and MDI.  
M04 
MCode

Spindle ON (CCW Rotation)  
M05 
MCode

Spindle Stop  M05 and MDI.  
M06 
MCode

Tool Change  
M07 
MCode

Mist Coolant ON  M07 and MDI.  
M08 
MCode

Flood Coolant ON  M08 and MDI.  
M09 
MCode

Coolant OFF  M09 and MDI.  
M17 
MCode

FADAL subroutine return  
M29 
MCode

Rigid Tapping Mode on Fanuc Controls  
M30 
MCode

End of Program, Rewind and Reset Modes  
M97 
MCode

HaasStyle Subprogram Call  Subprograms and Macros  
M98 
MCode

Subprogram Call  Subprograms and Macros  
M99 
MCode

Return from Subprogram  Subprograms and Macros 
Bonus: Check Out our Other CNC Cookbooks for More InDepth CNC Information!
If you’re a CNC Beginnner, check out our CNC Beginner’s Cookbook. It’ll get you up to speed with a solid CNC foundation fast.
We also have Cookbooks for Feeds and Speeds, GCode Programming, CNC Manufacturing and Shop Management, DIY CNC, and don’t forget the CNC Cookbook Blog–with over 4 million visitors a year it’s the most popular CNC blog by far on the web.
More Resources
Software that will make anyone a better CNC'er
Get Better Tool Life, Surface Finish, and Material Removal Rates Fast.
It's that easy. You can install and get results in a matter of minutes.