G93, G94 and G95: Feed Rate Modes

The feed mode decides how the control reads the F word. G94 is distance per minute, G95 is distance per spindle revolution, and G93 is inverse time.

The F word sets the feed rate, but what the number means depends on the feed mode:

Code Mode F means Example
G94 Feed per minute Distance per minute F800 = 800 mm/min
G95 Feed per revolution Distance per spindle revolution F0.1 = 0.1 mm/rev
G93 Inverse time 1 ÷ the time for the move, in minutes F2 = finish the move in 0.5 minute

All three are modal. A program stays in a mode until another one is called.

G94: feed per minute

This is the normal mode on mills and routers, and the default on almost every control. With G21 (mm), F800 means 800 mm/min. With G20 (inch), F30 means 30 in/min. Most programs never write G94 except in the safety line at the start.

G95: feed per revolution

In G95, F is the distance the tool moves for each spindle revolution. The control multiplies it by the spindle speed to get the actual feed:

0.1 mm/rev × 2,000 RPM = 200 mm/min

Feed per revolution is standard on lathes, because the chip load stays the same when the spindle speed changes, for example with constant surface speed. On mills it's used for some drilling and tapping. G95 needs a spindle with an encoder, so the control always knows the real spindle speed.

G93: inverse time

In G93, F means "complete this move in 1/F minutes". The distance doesn't matter: G1 X10 F2 and G1 X100 F2 both take 30 seconds.

Inverse time exists for 4- and 5-axis machining. When a rotary axis turns at the same time as X, Y and Z move, the speed of the tool tip across the part depends on its distance from the rotary centre. A feed in mm/min no longer describes it well, so CAM software works out the time for each move instead.

Rules to remember:

  • In G93, every G1, G2 and G3 line needs its own F. Most controls alarm if one is missing.
  • Switch back to G94 after the multi-axis section. Forgetting it leaves the next 3-axis moves running with nonsense feeds.

Machine differences

  • Fanuc and Haas mills: G93, G94 and G95 all supported.
  • Fanuc-style lathes: in the standard (A) G-code system, G98 is feed per minute and G99 is feed per revolution instead. See G98 and G99 for what they mean on a mill.
  • LinuxCNC: G93, G94 and G95.
  • Mach3: G93, G94 and G95. G95 needs spindle speed feedback.
  • GRBL: G93 and G94 only. There is no G95.

How CutViewer shows G93, G94 and G95

CutViewer tracks the feed mode. In G94, F is read as units per minute. In G93, each move takes 1/F minutes. In G95, F is multiplied by the spindle speed (S) to get units per minute. The estimated run time uses the right one, and the feed range in the Job panel shows the result in units per minute.

Frequently Asked Questions

What is G94 in G-code?

Feed per minute. F is the distance the tool moves per minute, in mm/min with G21 or inches/min with G20. It's the default on almost every milling machine and router.

What is G95 in G-code?

Feed per revolution. F is the distance the tool moves for each turn of the spindle, for example F0.1 for 0.1 mm/rev. It's standard on lathes and needs a spindle with an encoder so the control knows its speed.

What is inverse time feed (G93)?

In G93, F means "finish this move in 1/F minutes". F2 means the move takes half a minute, whatever its length. CAM systems use it for 4- and 5-axis moves, where a feed in mm/min is hard to define when rotary axes are moving too.

Why do G98 and G99 mean feed per minute and per revolution on my lathe?

On Fanuc-style lathes using the standard (A) G-code system, G98 and G99 do the job of G94 and G95. On mills, G98 and G99 set the canned cycle return level instead.

Check your own program before you cut: open it in CutViewer to see the toolpath in 3D, the run time and any problems.

Open CutViewer