A feed move running while the spindle sits still is alarming to watch and logical underneath: spindle and feed are controlled independently on a CNC, by design, so nothing forces them to agree, and when they desynchronize you get a non-rotating tool being dragged through metal. It is a genuine hazard with a short suspect list, and the right first move is feed hold, then diagnosis.

Why they can desync at all

The spindle (M03 on, M04 reverse, M05 off, with S for speed) and the feed (G01 and its F word) are separate subsystems with separate commands and separate override dials. That independence is useful, you adjust cutting speed and feed rate separately, but it removes any automatic guarantee that the spindle is turning when the feed moves. In numerically controlled machining the program is responsible for keeping them in sync, and when the program, a fault, or an override breaks that sync, the machine faithfully does what it was told: feed, with no spindle.

The suspect list

CauseWhat happenedWhere to look
M05 fired earlySpindle stopped before a feed move that should have followedThe spindle commands above the current block
Missing M03Spindle never started before cutting beganThe program’s preamble and each tool’s start
Spindle stalled or faultedHardware stopped the spindle, feed continuedAlarms, the drive, the load
Spindle override at zeroThe dial cut spindle speed while feed override stayed upBoth override dials

The top two are code-side and read directly: an M05 misplaced so it stops the spindle during cutting rather than after, or a missing spindle start so the feed begins into a never-started spindle, both found by reading the spindle commands around the block that was running. The override row is the one people miss, because the program can be flawless while a dial is wrong: spindle override and feed override are separate, so spindle at zero with feed normal produces exactly this symptom, and checking both dials is part of every diagnosis.

The opposite problem, and why this one is worse

This is the mirror of the machine-stopped-waiting-for-spindle case, where the spindle is fine and the motion is paused, and it is the more dangerous direction: there, nothing cuts; here, a dead tool is dragged through material, rubbing instead of cutting, generating heat, risking tool breakage, grabbing, and on a lathe a violent stall. That is why the response order is feed hold first, always, then diagnosis, because every second of feed-with-no-spindle is doing damage, unlike the paused case where the machine is safely waiting.

The fix and the prevention

Fix the cause you found: correct the M05 placement, add the missing M03, clear the spindle fault, or restore the override dial, and then re-prove the section, because a program edited to fix this is unproven at the change. Prevention is a programming habit: the spindle should be running and at speed before any feed move, M03 with its S value in the tool’s preamble, and where timing matters a spindle-at-speed wait or dwell so the feed never begins before the spindle is ready, the same sequencing care that M08 coolant placement needs. Reading programs for spindle-state alongside feed moves, is the spindle commanded on, at speed, before this cut?, catches the code-side causes before they reach metal, and that reading runs on the standard vocabulary the free 60-second rounds on the G-code practice page keep automatic, so M03, M05, and the feed words register together as a state you track rather than letters you decode.

Sources

Frequently asked questions

Why did my spindle stop but the feed kept going?

Because spindle and feed are independent systems that can desynchronize. Usual causes: an M05 that fired before a feed move, a missing M03 so the spindle never started, a spindle that stalled or faulted, or spindle override dialed to zero while feed override stayed up. Feed hold first, then diagnose the commands around the current block and both override dials.

Is a feed move with the spindle stopped dangerous?

Yes: a non-rotating tool fed into material rubs rather than cuts, generating heat, breaking tools, grabbing the part, and on a lathe stalling violently. Treat it as an immediate feed-hold situation and find the cause before resuming.

Can the override dials cause this?

Yes, and it is easy to miss: spindle override and feed override are separate, so spindle override at zero with feed override normal produces exactly this. Check both dials, the program can be perfect while a dial is wrong.

How do I prevent spindle and feed from desynchronizing?

Program the spindle running and at speed before any feed move, M03 with an S value and a spindle-at-speed wait where it matters, and place M05 so the spindle stops after cutting, not during it. Reading for spindle-state alongside feed moves catches the code causes.