---
title: "Harvey Tool Speeds and Feeds to G-Code: Chart to Program"
description: "Harvey Tool publishes real per-tool cutting data. Translating a chart row into S and F words takes two formulas and three checks: the full worked path."
url: https://gcodepractice.com/journal/harvey-tool-speeds-and-feeds-to-g-code/
canonical: https://gcodepractice.com/journal/harvey-tool-speeds-and-feeds-to-g-code/
author: "Lawrence Arya"
authorUrl: https://www.linkedin.com/in/vibecoding/
published: 2026-06-07
updated: 2026-06-07
category: "Guides"
tags: ["harvey tool", "speeds and feeds", "cutting data", "workflow"]
lang: en
---

# Harvey Tool Speeds and Feeds to G-Code: Chart to Program

> **TL;DR** Harvey Tool publishes unusually detailed per-tool speeds and feeds charts, and translating a chart row into program words is a fixed two-step: convert the chart's surface speed and your tool diameter into RPM for the S word, then multiply RPM by flutes and the chart's chip load for the F word. Three checks finish the job: confirm which feed mode (G94 or G95) the F number assumes, respect your machine's RPM ceiling, and discount for long stickout or deep engagement, which the chart's footnotes usually flag.

Harvey Tool sits at the good end of the cutting-data world: its [published speeds and feeds](https://www.harveytool.com/resources/speeds-feeds) are per-tool, per-material, and engagement-aware, which is exactly the data a program needs. What the chart does not give you is the program itself, because charts speak in surface speed and chip load while programs speak in S and F. The translation is mechanical, two formulas and three checks, and once it is routine, any tooling vendor's chart becomes a direct input to your code.

## Why the chart speaks a different language than the program

The chart's two numbers are tool properties: surface speed (how fast this carbide tolerates the material streaming past it) and chip load (how thick a bite each flute sustains). Neither depends on your machine. The program's two words are job properties: S is an RPM this spindle will turn, F is a velocity this table will move. The same chart row produces different S and F on different diameters and machines, which is precisely why vendors publish the tool properties and leave the [speeds-and-feeds](https://en.wikipedia.org/wiki/Speeds_and_feeds) conversion to you.

## The translation, worked end to end

Take a typical chart row for a 3/8 inch, 4-flute end mill in 6061 aluminum: say 800 SFM surface speed and 0.0023 inches per tooth chip load (read your actual chart; numbers vary by series and coating).

| Step | Formula | This example |
| --- | --- | --- |
| 1. RPM from surface speed | (SFM x 12) / (pi x D) | (800 x 12) / (3.1416 x 0.375) = about 8,150 RPM |
| 2. Feed from chip load | RPM x flutes x chip load | 8,150 x 4 x 0.0023 = about 75 in/min |
| 3. The program words | S then F | S8150 M03 ... G01 X... F75.0 |

The same arithmetic with metric charts swaps the 12 for 1000 and lands in mm/min, and worked variations on both fill pages like [Helman CNC's calculation guide](https://www.helmancnc.com/feed-rate-and-spindle-speed-calculation/). The division of labor with the [chip load post](/journal/g-code-to-calculate-chip-load/) is direction: that page runs the formula backward to audit existing programs; this one runs it forward from a vendor chart you trust.

## The three checks before the numbers ship

**Feed mode.** F75.0 assumes G94, feed per minute, the mill default. A control sitting in G95 per-revolution mode reads the same word as seventy-five inches per revolution, which no tool survives. The F number and the feed mode travel as a pair, always.

**The RPM ceiling.** Small tools in aluminum routinely calculate past what the spindle turns. The rule when the formula asks for more than the machine has: run the maximum, and recompute the feed at that RPM so the chip load stays right. Chasing the chart's surface speed at the cost of per-tooth bite inverts the priority; the bite is what breaks tools, the [reason no machine-brand chart can exist](/journal/haas-speeds-and-feeds-chart-pdf/) in the first place.

**The footnote discounts.** Harvey-style charts carry their own adjustment guidance for long reach, deep axial engagement, and slotting versus profiling. Those footnotes are the difference between a chart row and your cut: a 3xD stickout finishing pass and a full-slot rough share a row but not a feed. Apply the vendor's own percentages rather than inventing discounts.

## Making it a habit instead of an event

Shops that do this well keep the loop tight: chart open or printed at the desk, the [two formulas on a card](/journal/cnc-programming-without-the-confusing-math/), a phone calculator, the whole [pocket stack](/journal/machinist-calculator-with-g-code-dictionary/) assembled deliberately, and the resulting S and F written into the setup sheet next to the tool number, so the translation happens once per tool rather than once per panic. The remaining friction is vocabulary: knowing without thinking that S carries RPM, F carries feed, G94 and G95 split the feed meaning, and M03 starts what the S word promised. That fluency is recall material, drilled in minutes a day on the [G-code practice page](/g-code-practice/), and it is what makes vendor data feel like a direct input to your program instead of homework between you and the cut.

## Sources

- [Harvey Tool: Speeds and feeds resources](https://www.harveytool.com/resources/speeds-feeds)
- [Wikipedia: Speeds and feeds](https://en.wikipedia.org/wiki/Speeds_and_feeds)
- [Helman CNC: Feed rate and spindle speed calculation](https://www.helmancnc.com/feed-rate-and-spindle-speed-calculation/)

## Frequently asked questions

### How do I convert Harvey Tool speeds and feeds to G-code?

Two formulas: RPM = (SFM x 12) / (pi x tool diameter) gives the S word, and F = RPM x flutes x chip load gives the feed word. Then confirm the feed mode the F number assumes, cap RPM at your machine's limit, and apply the chart's engagement and stickout adjustments.

### Why does Harvey Tool publish chip load instead of feed rates?

Because chip load is the tool property, while feed rate depends on the RPM your job runs. Inches per tooth lets one chart serve every machine; your feed rate is one multiplication away.

### What if the calculated RPM exceeds my machine's maximum?

Run at your machine's maximum and scale the feed proportionally to preserve the chip load. Keeping the per-tooth bite right at the achievable RPM matters more than reaching the chart's ideal surface speed.

### What is the fastest way to get fluent with the codes the chart values land in?

Drill the word family, S, F, G94, G95, M03, and the surrounding core, until they answer instantly. The free G-Code Sprint app runs that drill in 60-second recall rounds, repeating misses.

---

Source: https://gcodepractice.com/journal/harvey-tool-speeds-and-feeds-to-g-code/
Author: Lawrence Arya — https://www.linkedin.com/in/vibecoding/
