M Code
M-code in CNC programming is a miscellaneous machine-function code that controls non-movement actions such as spindle start/stop, coolant, tool changes, program stops, and subprogram flow. Unlike G-codes which handle geometry and motion, M-codes manage auxiliary machine operations. Their exact meaning can be control- and machine-specific, with only a few common codes like M03 (spindle clockwise) or M30 (end of program) widely standardized.
On the shop floor, M-codes serve as the essential switches that make automated cycles functional after G-codes define the toolpath. In a typical CNC mill or lathe operation, the program moves the tool to position with G-code, then uses M-codes to start the spindle (M03), turn on flood coolant (M08), trigger a tool change (M06), or pause for operator inspection (M00/M01). In production cells, M-codes also coordinate auxiliary equipment such as automatic doors, clamps, air blast, chip conveyors, and probes. However, these extended functions are often machine-builder-specific, not universally standardized. Similarly, in millwork or edgebanding, M-codes manage cutter start/stop, glue application, or trimming cycles. Because M-codes alter machine state directly, incorrect sequencing—such as placing spindle start after motion—can cause crashes or damage. Operators must verify each M-code against the control and builder manual, as copying programs between machines frequently leads to mis-executed functions. Proper use of M-codes ensures safe, unattended operation and consistent part quality.
- Assuming M-codes are universal: The same M-number can mean different things across builds, so copying a program between machines risks triggering wrong functions or causing faults.
- Ordering mistakes in the block sequence: Placing spindle start or coolant after motion can cause dry cuts or crashes, and executing a tool change in an unsafe position risks collision.
- Mixing standard and custom functions without verification: Custom builder M-functions for clamps or doors are often undocumented, so assuming all codes are safe can lead to crashes or alarm states.
Is M-Code the same as G-Code?
No. G-code primarily controls geometry and motion, while M-code controls auxiliary machine functions like spindle, coolant, tool change, and program flow.
Are M-codes standardized?
Only partly. A small set of M-codes is widely used (e.g., M03, M05, M30), but many are controller-specific or machine-builder-specific, so verification against the manual is essential.
What does M06 do?
On many CNC mills, M06 requests a tool change, but the exact behavior depends on the machine and control, including turret vs. automatic tool changer implementation.