Cutting Speed and Feed Rate Calculator
.sf-calculator-container {
max-width: 800px;
margin: 0 auto;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
padding: 20px;
background: #f9f9f9;
border: 1px solid #e0e0e0;
border-radius: 8px;
}
.sf-calculator-header {
text-align: center;
margin-bottom: 25px;
}
.sf-calculator-header h2 {
color: #2c3e50;
margin-bottom: 5px;
}
.sf-input-group {
margin-bottom: 15px;
}
.sf-input-group label {
display: block;
margin-bottom: 5px;
font-weight: 600;
color: #333;
}
.sf-input-group input, .sf-input-group select {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
}
.sf-radio-group {
display: flex;
gap: 20px;
margin-bottom: 20px;
justify-content: center;
background: #fff;
padding: 10px;
border-radius: 4px;
border: 1px solid #ddd;
}
.sf-radio-group label {
cursor: pointer;
display: flex;
align-items: center;
gap: 5px;
font-weight: bold;
}
.sf-btn {
width: 100%;
padding: 12px;
background-color: #0056b3;
color: white;
border: none;
border-radius: 4px;
font-size: 18px;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s;
margin-top: 10px;
}
.sf-btn:hover {
background-color: #004494;
}
.sf-result-box {
margin-top: 25px;
padding: 20px;
background-color: #e8f4fc;
border: 1px solid #b6d4fe;
border-radius: 4px;
display: none;
}
.sf-result-item {
margin-bottom: 10px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #d0e3f0;
padding-bottom: 5px;
}
.sf-result-item:last-child {
border-bottom: none;
margin-bottom: 0;
}
.sf-result-label {
color: #555;
font-weight: 600;
}
.sf-result-value {
font-size: 20px;
color: #0056b3;
font-weight: 700;
}
.sf-content-section {
margin-top: 40px;
line-height: 1.6;
color: #333;
}
.sf-content-section h2 {
color: #2c3e50;
border-bottom: 2px solid #0056b3;
padding-bottom: 10px;
margin-top: 30px;
}
.sf-content-section h3 {
color: #444;
margin-top: 20px;
}
.sf-content-section table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
.sf-content-section th, .sf-content-section td {
border: 1px solid #ddd;
padding: 10px;
text-align: left;
}
.sf-content-section th {
background-color: #f2f2f2;
}
.sf-note {
font-size: 14px;
color: #666;
margin-top: 5px;
}
Imperial (Inch)
Metric (mm)
Tool Diameter (in )
Number of Flutes (Teeth)
Chip Load per Tooth (IPT )
Calculate Parameters
Spindle Speed:
0 RPM
Feed Rate:
0 IPM
Understanding Cutting Speeds and Feeds
In CNC machining and manual milling, calculating the correct Cutting Speed and Feed Rate is critical for tool life, surface finish, and machining efficiency. Using incorrect parameters can lead to tool breakage, poor part quality, or chatter.
Key Terms Defined
Cutting Speed (Vc): Also known as Surface Speed. This is the speed difference between the cutting tool and the surface of the workpiece. It is measured in Surface Feet per Minute (SFM) or Meters per Minute (m/min).
Spindle Speed (n): The rotational speed of the tool or workpiece, measured in Revolutions Per Minute (RPM).
Feed Rate (Vf): The velocity at which the cutter is advanced along the workpiece. Measured in Inches Per Minute (IPM) or Millimeters Per Minute (mm/min).
Chip Load (fz): The thickness of material removed by each cutting edge (flute) during one revolution. Also known as Feed Per Tooth.
Formulas Used
The calculations depend on the unit system (Imperial or Metric) used.
Imperial (Inch) Formulas
Parameter
Formula
RPM
$$RPM = \frac{SFM \times 12}{\pi \times \text{Diameter}}$$
Feed Rate (IPM)
$$IPM = RPM \times \text{Chip Load} \times \text{Flutes}$$
Metric (mm) Formulas
Parameter
Formula
RPM
$$RPM = \frac{m/min \times 1000}{\pi \times \text{Diameter}}$$
Feed Rate (mm/min)
$$mm/min = RPM \times \text{Chip Load} \times \text{Flutes}$$
How to Use This Calculator
Select Unit System: Choose between Imperial (Inches) or Metric (Millimeters).
Enter Tool Diameter: Input the diameter of your end mill or drill bit.
Enter Surface Speed: Consult your tool manufacturer's catalog or a machinist's handbook for the recommended Surface Footage (SFM) or Surface Meters (m/min) for the specific material you are cutting (e.g., Aluminum vs. Steel).
Enter Flute Count: The number of cutting edges on the tool (usually 2, 3, or 4).
Enter Chip Load: Input the recommended feed per tooth. This varies by tool diameter and material hardness.
Typical Starting Values
Note: These are general guidelines. Always check specific tooling data.
Aluminum: 600-1200 SFM, 0.001-0.010″ Chip Load
Mild Steel: 100-350 SFM, 0.001-0.006″ Chip Load
Stainless Steel: 50-250 SFM, 0.0005-0.004″ Chip Load
function toggleUnits() {
var radios = document.getElementsByName('unitSystem');
var selectedUnit = 'imperial';
for (var i = 0; i < radios.length; i++) {
if (radios[i].checked) {
selectedUnit = radios[i].value;
break;
}
}
var labelDia = document.getElementById('unitDiameter');
var labelSpeed = document.getElementById('unitSurfaceSpeed');
var labelChip = document.getElementById('unitChipLoad');
var inputDia = document.getElementById('toolDiameter');
var inputSpeed = document.getElementById('surfaceSpeed');
var inputChip = document.getElementById('chipLoad');
if (selectedUnit === 'imperial') {
labelDia.innerText = 'in';
labelSpeed.innerText = 'SFM';
labelChip.innerText = 'IPT (inch/tooth)';
// Optional: Convert values if they exist for better UX
// However, usually users just want to switch context, not convert existing numbers roughly
// resetting placeholders is better
inputDia.placeholder = "e.g. 0.5";
inputSpeed.placeholder = "e.g. 300";
inputChip.placeholder = "e.g. 0.002";
} else {
labelDia.innerText = 'mm';
labelSpeed.innerText = 'm/min';
labelChip.innerText = 'mm/tooth';
inputDia.placeholder = "e.g. 12";
inputSpeed.placeholder = "e.g. 100";
inputChip.placeholder = "e.g. 0.05";
}
}
function calculateSpeedsFeeds() {
var dia = parseFloat(document.getElementById('toolDiameter').value);
var surfaceSpeed = parseFloat(document.getElementById('surfaceSpeed').value);
var flutes = parseFloat(document.getElementById('numFlutes').value);
var chipLoad = parseFloat(document.getElementById('chipLoad').value);
var radios = document.getElementsByName('unitSystem');
var unit = 'imperial';
for (var i = 0; i < radios.length; i++) {
if (radios[i].checked) {
unit = radios[i].value;
break;
}
}
if (isNaN(dia) || isNaN(surfaceSpeed) || isNaN(flutes) || isNaN(chipLoad) || dia <= 0) {
alert("Please enter valid positive numbers for all fields.");
return;
}
var rpm = 0;
var feedRate = 0;
var feedUnit = "";
if (unit === 'imperial') {
// RPM = (SFM * 12) / (PI * Diameter)
rpm = (surfaceSpeed * 12) / (Math.PI * dia);
// Feed (IPM) = RPM * Chip Load * Flutes
feedRate = rpm * chipLoad * flutes;
feedUnit = "IPM";
} else {
// RPM = (m/min * 1000) / (PI * Diameter)
rpm = (surfaceSpeed * 1000) / (Math.PI * dia);
// Feed (mm/min) = RPM * Chip Load * Flutes
feedRate = rpm * chipLoad * flutes;
feedUnit = "mm/min";
}
document.getElementById('results').style.display = 'block';
document.getElementById('resRPM').innerText = Math.round(rpm) + " RPM";
document.getElementById('resFeed').innerText = feedRate.toFixed(2) + " " + feedUnit;
}