The answer first: M09 turns the coolant off, and it turns off everything, mist and flood alike. If you keep blanking on it at the control, the problem is not your memory. M-codes are arbitrary assigned numbers, and arbitrary information without a pattern is precisely what brains drop. So here is the pattern.
What does the coolant family look like?
Three codes, two on-switches and one off-switch, as the LinuxCNC M-code reference lists them:
| Code | Action | Note |
|---|---|---|
M07 | Mist coolant on | Air-coolant spray, where equipped |
M08 | Flood coolant on | The standard stream |
M09 | Coolant off | Closes both M07 and M08 |
The detail people miss: M09 is the family’s only off switch. There is no separate mist-off and flood-off; one code ends whatever was running.
What is the pattern that makes it stick?
Look at the coolant family next to the spindle family and the structure jumps out:
| Family | On switches | Off switch |
|---|---|---|
| Spindle | M03 (forward), M04 (reverse) | M05 |
| Coolant | M07 (mist), M08 (flood) | M09 |
In both families, the off switch sits just past its on switches. Two ons, then the off, twice in a row in the number line. Once you see the codes as two parallel families instead of six isolated numbers, the question answers itself: the spindle stops at M05, so the coolant stops at M09. This is structure doing the work a mnemonic normally does, and structure outlasts any rhyme. The spindle half of the pattern is unpacked in M03 vs M04 vs M05.
Why did you keep forgetting it in the first place?
Interference, mostly. M05 and M09 are both off switches with similar shapes, so they swap in memory; CAM types these codes for you all day, so you read them constantly and retrieve them never, and recognition without retrieval is exactly the fluency trap that makes codes feel known until the moment you must produce one. The same mechanism is behind every modal forgetting story at the machine, including the units one in why is my CNC moving in inches instead of mm: what you never actively recall, you lose at the worst time.
A concrete version: an operator hand-typing an MDI warm-up routine wanted coolant off before a tool touch-off, hesitated between M05 and M09, picked M05, and stopped the warm spindle instead. Nothing broke, but the spindle re-warm cost twenty minutes, which is an expensive price for one un-drilled code.
How do you make the fix permanent?
Retrieve instead of reread. Two or three short sessions of self-testing on the M-code families, where you produce the answer before checking, converts the pattern into reflex; the families above plus the rest of the common M-codes for CNC beginners cover everything an operator types in a normal week. Keep a cheat sheet at the machine for the first days, then retire it on purpose; the sheet is scaffolding, not the building.
Where does M09 belong in a program?
Three spots, by convention. Before a tool change, so the change happens without spray and the new tool is visible. Before any in-process measurement or probing, because coolant on a probe or a measuring face ruins the reading. And in the shutdown lines before M30, where it is technically redundant on controls whose program-end also kills coolant, but writing it explicitly costs one block and removes the question. Programs that state their intentions are programs the next person can trust, and M09 in the shutdown is part of that habit.
Bottom line
M09 turns the coolant off, ending both M07 mist and M08 flood, and it stops being forgettable the moment you see the family pattern: two ons, then the off, in both the spindle and coolant families. Drill the families with a few recall sessions on the G-code practice hub and the hesitation at the control disappears for good.
Sources
- LinuxCNC M-code reference (M7, M8, M9 coolant)
- Wikipedia: Mnemonic
- CNCCookbook: G-code and M-code cheat sheet
Frequently asked questions
Which M-code turns off the coolant?
M09. It is the coolant family’s single off switch, shutting down both M07 mist and M08 flood, the same way M05 stops the spindle regardless of direction.
Why do I keep mixing up M05 and M09?
Because both are off switches and they interfere in memory. Learn them as parallel families, M03/M04 then M05, M07/M08 then M09, and the structure carries the recall.
What is the difference between M07 and M08?
M08 is flood coolant, the standard stream; M07 is mist, an air-coolant spray on machines equipped for it. Both end with the same M09.
What is the best way to stop forgetting M-codes like M09?
Drill them as families with active recall. A free app like G-Code Sprint quizzes the coolant and spindle codes and repeats exactly the ones you keep missing.
G-Code Sprint is a study and practice tool only. Always follow your instructor, employer, machine manual, and shop safety procedures.