GCode and MCode Reference List for Milling
A list of 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. Click the gcode link (if any) to visit a tutorial from our popuplar Online Free GCode Training that shows examples and teaches how to program the gcode.
Code

Category

Function

Notes 

G00 
Motion

Move in a straight line at rapids speed.  XYZ of endpoint  
G01 
Motion

Move in a straight line at last speed commanded by a (F)eedrate  XYZ of endpoint  
G02 
Motion

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

Counterclockwise circular arc at (F)eedrate  XYZ of endpoint IJK relative to center R for radius  
G04 
Motion

Dwell: Stop for a specified time.  P for milliseconds X for seconds  
G05 
Motion

FADAL NonModal Rapids  
G09 
Motion

Exact stop check  
G10 
Compensation

Programmable parameter input  
G15 
Coordinate

Turn Polar Coordinates OFF, return to Cartesian Coordinates  
G16 
Coordinate

Turn Polar Coordinates ON  
G17 
Coordinate

Select XY plane  
G18 
Coordinate

Select XZ plane  
G19 
Coordinate

Select YZ plane  
G20 
Coordinate

Program coordinates are inches  
G21 
Coordinate

Program coordinates are mm  
G27 
Motion

Reference point return check  
G28 
Motion

Return to home position  
G29 
Motion

Return from the reference position  
G30 
Motion

Return to the 2nd, 3rd, and 4th 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  
G62 
Other

Automatic corner override  
G63 
Other

Tapping mode  
G64 
Other

Best speed path  
G65 
Other

Custom macro simple call  
G68 
Coordinate

Coordinate System Rotation  
G69 
Coordinate

Cancel Coordinate System Rotation  
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  
G97 
Motion

Cancel constant surface speed  
G98 
Canned

Return to initial Z plane after canned cycle  
G99 
Canned

Return to initial R plane after canned cycle  
MCodes


Code

Category

Function

Notes 

M00 
MCode

Program Stop (nonoptional)  
M01 
MCode

Optional Stop: Operator Selected to Enable  
M02 
MCode

End of Program  
M03 
MCode

Spindle ON (CW Rotation)  
M04 
MCode

Spindle ON (CCW Rotation)  
M05 
MCode

Spindle Stop  
M06 
MCode

Tool Change  
M07 
MCode

Mist Coolant ON  
M08 
MCode

Flood Coolant ON  
M09 
MCode

Coolant OFF  
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  
M98 
MCode

Subprogram Call  
M99 
MCode

Return from Subprogram 
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
Become a Feeds & Speeds Expert
Get the 2019 Feeds & Speeds Master Class Lessons sent to your inbox every Friday. In addition, we'll send you our blog posts via email newsletter. Includes Basic, Intermediate, and Advanced Lessons.