G-Code and M-Code List [ Easy Examples & Tutorials ] (2025)

  • Milling G Code List
  • Turning G Code List
  • GCode Simulator
  • Fanuc Alarm Code List

Complete CNC g code list with m-codes for milling in the Fanuc, LinuxCNC, GRBL,and Haas CNC machines dialects. We give a quick definition for all g codes along with a link to tutorials and examples of how to use it in CNC programming. Click the g-code link (if any) to visit a tutorial from our popuplar Online Free G-Code Training that shows examples and teaches how to program CNC machines using the g-code commands. This page is your ideal g-code reference.

G Codes and CNC G-Code List

Code

Category

Function

Notes

G00

Motion

g00 rapid: 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

Circular Interpolation: Clockwise circular arc at (F)eedrate

XYZ of endpoint IJK relative to center R for radius

G03

Motion

Circular Interpolation: Counter-clockwise 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 Non-Modal 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 X-Y plane (Plane Selection)

G18

Coordinate

Select X-Z plane (Plane Selection)

G19

Coordinate

Select Y-Z plane (Plane Selection)

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 cycle, no dwell, feed out

G86

Canned

Boring 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

G93

Motion

Inverse Time Feed Mode. For use with rotary axes

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

M Code List to Control Machine Functions

M Codes

Category

Function

Notes

M00

M-Code

m00 Program Stop (non-optional)

M01

M-Code

Optional Stop: Operator Selected to Enable

M02

M-Code

End of Program

M03

M-Code

m03 Spindle ON clockwise

M04

M-Code

Spindle ON (CCW Rotation)

M05

M-Code

m05 Spindle Stop

M06

M-Code

Tool Change

M07

M-Code

Mist Coolant ON

M08

M-Code

Flood Coolant ON

M09

M-Code

Coolant OFF

M17

M-Code

FADAL subroutine return

M29

M-Code

Rigid Tapping Mode on Fanuc Controls

M30

M-Code

End of Program, Rewind and Reset Modes

M97

M-Code

Haas-Style Subprogram Call

M98

M-Code

Subprogram Call

M99

M-Code

Return from Subprogram

F

M-Code

Set Feedrate

S

M-Code

Set Spindle Speed

T

M-Code

Select Tool for Tool Change

X, Y, Z, and A

M-Code

Sets coordinates for the axes: x axis, y axis, z axis and a axis.

Some Thoughts on G and M Codes

G and M Codes are the basic programming language used by most CNC Machines. These same g codes are probably the ones used by your CNC machine.

Most cnc programming of G and M codes is done using Computer Aided Manufacturing (CAM) Software. If you are able to program directly in G and M codes, you can do things that CAM software cannot. These things will make you a more productive CNC'er. Being able to control cnc machines at this level is one thing that can give machine shops competitive advantage.

Bonus: Check Out our Other CNC Cookbooks for More In-Depth 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, G-Code 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

Mazatrol Training Classes

Fanuc CNC Training Classes

G Code Commands FAQ

How many G codes are there in cnc machining?

There are about 100 g code commands, give or take. There are may dialects of g-code, and some have proprietary g-codes.

What are G Codes in CNC Machines?

This page lists all the G code commands used in CNC programming and tells what they do. It also gives links to tutorials and examples. G codes are single-letter commands that tell the CNC machine what to do. They may command motion (i.e. tell the machine where to cut) or do things like turn the spindle on or off.

Is learning G-Code hard?

Learning g-code isn't very hard. We have a complete free online g-code tutorial to teach you and a g-code simulator that makes learning easy.

Why are G Codes used?

G Codes make CNC Machines programmable, which gives them the flexibility to make almost any part.

What is the difference between G codes and M codes?

The G in G-Codes stands for Geometry, which means giving the CNC Machine directions on how and where to move. The four simplest motion-related g codes are:

  • G00: Move at the machine's fastest speed in a straight line to the commanded coordinates.
  • G01: Move at the last commanded feedrate (commanded by the "F" word) in a straight line to the commanded coordinates.
  • G02: Move in a clockwise arc to the commanded coordinates at the last commanded feedrate.
  • G03: Move in a counterclockwise arc to the commanded coordinates at the last commanded feedrate.

M Codes are about Machine functions on the CNC machine.

Do all CNC machines use G-code?

Not all CNC machines use G-Code. Some CNC machines may have both g-code and other ways of programming, for example, alternate languages such as Mazak's Mazatrol or Conversational Programming. Others may have an alternate language and no ability to execute g-code at all.

You Might Also Like

  • CNC Lathe G-Code and M-Code Reference List for CNC Lathes
  • CNC Programming with G Code: Easy Free Tutorial [ 2024 ]
  • Programming Haas CNC Control G-Codes and M-Codes

Be the first to know about updates at CNC Cookbook

Join our newsletter to get updates on what's next at CNC Cookbook.

G-Code and M-Code List [ Easy Examples & Tutorials ] (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Domingo Moore

Last Updated:

Views: 5959

Rating: 4.2 / 5 (73 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Domingo Moore

Birthday: 1997-05-20

Address: 6485 Kohler Route, Antonioton, VT 77375-0299

Phone: +3213869077934

Job: Sales Analyst

Hobby: Kayaking, Roller skating, Cabaret, Rugby, Homebrewing, Creative writing, amateur radio

Introduction: My name is Domingo Moore, I am a attractive, gorgeous, funny, jolly, spotless, nice, fantastic person who loves writing and wants to share my knowledge and understanding with you.