CNC | Feedrate Control

In this article, we describe general information about feedrate control for CNC lathe and milling machines.


Feedrate is the closest programming companion to spindle function. While the spindle function controls spindle speed and spindle rotation direction, feedrate controls how fast the tool will move, usually to remove excessive material (stock).

Feedrate Control

Cutting feedrate is the speed at which the cutting tool removes the material by cutting action.

A cutting action may be a rotary tool motion (drilling and milling, for example), rotary motion of the part (lathe operations), or other action (flame cutting, laser cutting, water jet, electric discharge etc.). Feedrate function is used in CNC program to select correct feedrate amount, suitable for the desired action.
Two feedrate types are used in CNC programming :

  • Feedrate per minute – mm/min or in/min
  • Feedrate per revolution – mm/rev or in/rev

The most common types of CNC machines, machining centers and lathes, can be programmed in either feedrate mode. In practice, it is much more common to use the feedrate per minute on machining centers and the feedrate per revolution on lathes.
There is a significant difference in G-codes used for machining centers and lathes.
Another type of special feedrate is called the inverse time feedrate. It is used in some rotary applications only.

Feedrate Function

Calling address for a feedrate word in a program is the address F, followed by a number of digits. The number of digits following address F depends on the feedrate mode selection and machine tool application. Decimal place is normally allowed for feedrate programming.

Feedrate per Minute

For milling applications, all cutting feedrate in linear and circular interpolation modes is programmed in millimeters per minute (mm/min) or in inches per minute (in/min). The amount of feedrate is the distance a cutting tool will travel in one minute (60 seconds). This value is modal and is canceled only by another F-address word. The main advantage of feedrate per minute is that it is not dependent on current spindle speed. That makes it very useful in milling operations, using a large variety of tool diameters. Standard abbreviations for feedrate per minute are:

  • Millimeters per minute ( mm/min )
  • Inches per minute ( in/min (or older ipm / IPM) )

The most typical format for feedrate per minute is F5.1 for the metric system and F5.1 for the imperial system.
For example, feedrate of 15.5 inches per minute, will be programmed as F15.5. In metric system, feedrate amount of 250 mm/min will appear in the program as F250.0. A slightly different programming format may be expected for special machine designs.
One important item to remember about feedrate is the range of available feedrate values. Feedrate range of the control system always exceeds that of machine servo system. For example, feedrate range of a CNC machine with Fanuc CNC system is typically described in metric units, for example, 30000 mm/min may be the maximum for a machine with 60000 mm/min rapid motion. Minimum cutting feedrate depends on the machine builder – it could be 0.1 mm/min or 0.1 in/min or a totally different amount.
In milling, programming command (G-code) for feedrate per minute is G94. For most machines, it is set automatically, by the system default and does not have to be written in the program. For lathe operations, feedrate per minute is used very seldom. In Group A, G- code for feedrate per minute is G98, for Groups B and C it is G94. CNC lathes use primarily feedrate per revolution mode.

Feedrate per Revolution

For CNC lathe work, feedrate is not measured in terms of time, but as the actual distance the tool travels in one spindle revolution (rotation). This feedrate per revolution is common on lathes (G99 for Group A). Its value is modal and another feedrate function cancels it (usually the G98). Lathes can also be programmed in feedrate per minute mode (G98), to control feedrate when the spindle is stationary. Two standard abbreviations are used for feedrate per revolution:

  • Inches per revolution ( in/rev (or older ipr) )
  • Millimeters per revolution ( mm/rev )

The most programming typical format for feedrate per revolution is three decimal places in metric system, and four decimal places in imperial system.Metric feedrate example of 0.42937 mm/rev will be programmed as F0.429 on most controls. In imperial units, a feedrate of 0.083333 in/rev will be applied in the CNC program as F0.0833 on most controls. Many modern control systems accept feedrate of up to five decimal places for metric units and six decimal for imperial units.
Be careful when rounding feedrate values. For turning and boring operation, reasonably rounded feedrates are quite sufficient. Only in tapping and single point threading the feedrate precision is critical for a proper thread lead, particularly for long or very fine threads. Some Fanuc controls can be programmed with up to six decimal places feedrate precision for threading only.
Programming command for feedrate per revolution is G99. For most lathes, this is the system default, so it does not have to written in the program, unless the opposite command G98 is also used.
It is relatively more common to program a feedrate per minute (G98) for a CNC lathe program, than it is to program a feedrate per revolution (G95) in a milling program. The reason is that on a CNC lathe, this command controls feedrate while the spindle is not rotating. For example, during a barfeed operation, a part stopper is used to ‘push’ the bar to a precise position in the chuck or a collet, or a pull-put finger to ‘pull’ the bar out. Rapid feed would be too fast and feedrate per revolution is not applicable. Feedrate per minute is used instead. In cases like these, G98 and G99 commands are used in a lathe program as required. Both commands are modal and one cancels the other.

Need to More?

Our volunteers have worked together and carefully prepared the articles published here in their native language without using machine translation. You can search the entire site for more information on the subject. You can start a discussion on forums and join us to get support, ask questions, improve a published article or give your opinion.

Previous articleCNC | Program Data Override
Next articleCNC | G09 and G61 Codes | Exact Stop