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.
More G-Code Guides
Rapid positioning and straight cutting moves.
Clockwise and counter-clockwise arcs with I/J/K or R.
Pause for a set time, in seconds or milliseconds.
Choose the XY, XZ or YZ plane for arcs.
Inch or millimetre units for the program.
Return to home or a second reference position.
Cutter radius compensation, left, right and off.
Tool length offset on and off.
Work coordinate systems and machine coordinates.
Drilling canned cycles, from plain drilling to peck drilling.
Tapping cycle, and how to work out the feed rate.
Absolute positions or incremental distances.
Set the current position by shifting coordinates.
Constant surface speed or a fixed spindle RPM.
Where a drilling cycle retracts between holes.
Spindle, coolant, tool change, stop and subprogram codes.
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