Learn

G94 vs G95: feed per minute vs feed per revolution

Two modes, one letter. F means distance per minute in G94 and distance per revolution in G95. Read it the right way and the clock is honest. Here’s how each works.

Two meanings of F

G94, feed per minute. F300 is 300 mm/min. Simple, direct, the default on mills.

G95, feed per revolution. F0.1 is 0.1 mm every spindle turn. The real speed is F × S: at S1000 that’s 100 mm/min. Wind the spindle to S2000 and the same F becomes 200 mm/min. The feed follows the spindle.

Both are modal. One G95 near the top of a program changes every F after it.

Why per-rev exists

Because the cut happens per revolution. A drill takes its chip load each turn. A lathe tool advances along the part each turn. Specify F per rev and the chip load stays constant whatever the RPM, which is exactly what the tooling wants. That’s why turning lives in G95 and drilling posts often use it too.

The thousand-fold trap

Spot the F values and you can usually spot the mode. G94 feeds are hundreds: F250, F800, F3000. G95 feeds are fractions: F0.05, F0.1, F0.3. Now read a G95 program with G94 eyes: F0.1 becomes 0.1 mm per minute. A 100 mm cut goes from 60 seconds to 60,000. One modal word, a 1000× error.

The fix is mechanical: track S, and in G95 use F × S. That’s it.

Timed the right way, automatically

UltraNC tracks the spindle speed through the program and reads F by the active mode: units per minute in G94, F × S in G95. Drop the file in and the estimate lands in real minutes. Drilling posts, lathe-style feeds and all. If a G95 program forgets to set S, the viewer says so in a per-file note.

Open the viewer →

Common questions

What is the difference between G94 and G95?

They change what F means. In G94, F is distance per minute: F300 is 300 mm/min, always. In G95, F is distance per spindle revolution: F0.1 means 0.1 mm every turn, so the actual speed is F × RPM: 100 mm/min at S1000, 200 mm/min at S2000. Same F word, completely different clock.

When is G95 used?

Wherever the cut is per-revolution by nature. Turning runs on it, because feed per rev is how lathe work is specified. Drilling posts use it too, because chip load per revolution is what the drill cares about. Milling posts mostly stay in G94.

How do I convert feed per revolution to feed per minute?

Multiply by the RPM. Feed (mm/min) = F (mm/rev) × S (RPM). F0.25 at S800 is 200 mm/min. Going the other way, divide: 200 mm/min at 800 RPM is 0.25 mm/rev.

Why is my cycle time estimate absurdly long?

Check the feed mode. A G95 program read as G94 treats F0.1 as 0.1 mm per MINUTE, a thousand times slow. A 100 mm cut becomes 60,000 seconds instead of 60. It's one of the biggest single errors a time estimate can make, and it comes from one modal code.

← Back to Learn