Ultimate Guide to CNC M Codes

M codes play a critical in any CNC program. Using the wrong one or forgetting to use one at the right point in your program can mean the difference between a good part and a chunk of scrap.

We’ve laid out what each M code does, but remember that some CNC makers switch things around a little bit. You can bet that the most common codes such as the ones for starting and stopping your spindle, coolant and program will be the same but some of the others might vary.

M00 CNC M Code

M00 - Program Stop

When the machine gets to this code it will stop everything, including the spindle and coolant until the operator tells the machine to continue on.

M01 CNC M Code

M01 - Optional Stop

The machine will check the control panel and if the optional stop switch is on, the machine will stop just like with M00.

Programs often have optional stops placed at the break of sections in the program such as the start of a hole drilling sequence.

M02 CNC M Code

M02 - End of Program, No Rewind

A leftover from the NC days. Ends the program without rewinding to the start again. 

In many machines now, M02 is no different than M30. How it gets treated depends on the specific CNC control model.

M03 CNC M Code

M03 - Spindle On, Clockwise

Turns the spindle on in the clockwise direction. This is the spindle direction used by most cutting tools.

M04 CNC M Code

M04 - Spindle On, Counterclockwise

Turns the spindle on in the counterclockwise direction. 

M05 CNC M Code

M05 - Spindle Stop

Stops the machine spindle.

M06 CNC M Code

M06 - Tool Change

Swaps tools.

M07 CNC M Code

M07 - Coolant On, Mist

Turns on a coolant mist. Some machines treat it as coolant source 1 on.

M08 CNC M Code

M08 - Coolant On, Flood

Turns the coolant on to soak the workpiece. Some machines treat it as coolant source 2 on.

M09 CNC M Code

M09 - Coolant Off

Turns off all coolant sources.

M19 CNC M Code

M19 - Orient Spindle

Gets the tool ready for tool change. Aligns the keyways. 

The M06 code will do this as well but calling it ahead of time can make the tool change process faster.

M30 CNC M Code

M30 - End of Program, Rewind

Stops everything including the spindle, movement, coolant and will go back to the beginning of the program.

M98 CNC M Code

M98 - Sub Program Call

Starts a subprogram.

M99 CNC M Code

M99 - End of Sub Program

Ends a subprogram.

Frequently Asked Questions

What are M codes used for in a CNC program?

M codes are used for turning miscellaneous functions on and off such as the spindle and coolant.

What is the difference between G and M codes?

M codes turn things on and off while G codes switch modes in the machine such as working in inches or mm.

G codes also prepare the machine for functions such as canned cycles for drilling or boring holes.

What other types of CNC codes are used?

There are many other CNC codes that get used such as:

  • Location based codes such as A, B, C, I, J, K, X, Y & Z
  • Machine related codes such as F, R & S
  • Offset related codes such as D, H & T
  • Program related codes such as G, N, O, P & Q 

Leave a Comment