This calculator helps you determine the optimal spindle speed (RPM) and feed rate (IPM or mm/min) for your machining operations. Proper settings are crucial for tool life, surface finish, and preventing material damage.
mm
inch
m/min
sfm
mm/tooth
inch/tooth
.spindle-feed-calculator {
font-family: sans-serif;
border: 1px solid #ccc;
padding: 20px;
border-radius: 8px;
max-width: 500px;
margin: 20px auto;
background-color: #f9f9f9;
}
.spindle-feed-calculator h2 {
text-align: center;
margin-bottom: 20px;
color: #333;
}
.spindle-feed-calculator p {
margin-bottom: 20px;
color: #555;
line-height: 1.5;
}
.input-group {
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 10px;
}
.input-group label {
flex: 1;
min-width: 150px;
color: #444;
}
.input-group input[type="number"] {
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
width: 80px;
}
.input-group select {
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
}
.spindle-feed-calculator button {
display: block;
width: 100%;
padding: 10px 15px;
background-color: #007bff;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
margin-top: 20px;
}
.spindle-feed-calculator button:hover {
background-color: #0056b3;
}
.calculation-result {
margin-top: 25px;
padding: 15px;
border: 1px solid #d4edda;
background-color: #d4edda;
color: #155724;
border-radius: 5px;
text-align: center;
font-size: 1.1em;
}
.calculation-result span {
font-weight: bold;
}
function calculateSpindleFeed() {
var cuttingDiameter = parseFloat(document.getElementById("cuttingDiameter").value);
var diameterUnit = document.getElementById("diameterUnit").value;
var materialSurfaceSpeed = parseFloat(document.getElementById("materialSurfaceSpeed").value);
var surfaceSpeedUnit = document.getElementById("surfaceSpeedUnit").value;
var feedPerTooth = parseFloat(document.getElementById("feedPerTooth").value);
var fptUnit = document.getElementById("fptUnit").value;
var numberOfFlutes = parseInt(document.getElementById("numberOfFlutes").value);
var spindleSpeed = 0;
var feedRate = 0;
var spindleSpeedUnit = "RPM";
var feedRateUnit = "mm/min";
var validInputs = true;
if (isNaN(cuttingDiameter) || cuttingDiameter <= 0) validInputs = false;
if (isNaN(materialSurfaceSpeed) || materialSurfaceSpeed <= 0) validInputs = false;
if (isNaN(feedPerTooth) || feedPerTooth <= 0) validInputs = false;
if (isNaN(numberOfFlutes) || numberOfFlutes < 1) validInputs = false;
if (!validInputs) {
document.getElementById("calculationResult").innerHTML = "Please enter valid positive numbers for all inputs.";
return;
}
// Convert diameter to millimeters if it's in inches
var diameterMM = cuttingDiameter;
if (diameterUnit === "inch") {
diameterMM = cuttingDiameter * 25.4;
}
// Convert surface speed to m/min
var surfaceSpeedM_min = materialSurfaceSpeed;
if (surfaceSpeedUnit === "sfm") {
surfaceSpeedM_min = materialSurfaceSpeed * 0.3048;
}
// Calculate Spindle Speed (RPM)
// Formula: RPM = (Vc * 1000) / (PI * D)
// Vc in m/min, D in mm
spindleSpeed = (surfaceSpeedM_min * 1000) / (Math.PI * diameterMM);
// Convert feed per tooth to mm/tooth if it's in inch/tooth
var feedPerToothMM = feedPerTooth;
if (fptUnit === "inch_tooth") {
feedPerToothMM = feedPerTooth * 25.4;
}
// Calculate Feed Rate (mm/min)
// Formula: Feed Rate (mm/min) = FPT (mm/tooth) * Number of Flutes * RPM
feedRate = feedPerToothMM * numberOfFlutes * spindleSpeed;
// Display results
document.getElementById("calculationResult").innerHTML =
"Spindle Speed: " + spindleSpeed.toFixed(0) + " RPM" +
"Feed Rate: " + feedRate.toFixed(2) + " mm/min";
}