Please enter valid numeric values greater than zero.
Feed Rate:—
Feed Per Revolution:—
Seconds per Inch/10mm:—
Understanding Threading Feed Rates
In CNC machining and manual turning, threading is a unique operation where the movement of the tool (feed) must be perfectly synchronized with the rotation of the spindle. Unlike standard turning or facing operations where the feed rate controls the surface finish and chip load, in threading, the feed rate determines the pitch of the thread being cut.
If the feed rate and spindle speed are not perfectly matched, the resulting thread will not fit the corresponding nut or bolt (cross-threading) or the thread form will be distorted. This calculator helps machinists and programmers verify the correct feed rate (in inches per minute or millimeters per minute) based on the target thread specifications.
How to Calculate Feed Rate for Threading
The calculation depends on the measurement system you are using (Imperial vs. Metric). The fundamental rule of threading is that the tool must advance a distance equal to one thread pitch for every single revolution of the spindle.
Imperial Formulas (Inches)
In the Imperial system, threads are typically defined by Threads Per Inch (TPI). To find the feed rate, you first determine the pitch (1 / TPI) and multiply it by the RPM.
Example: For an M10 × 1.5 thread running at 600 RPM:
Feed = 600 × 1.5 = 900 mm/min.
Why is Spindle Speed Important?
While the mathematical relationship between RPM and Feed is linear, practical limitations exist. If the RPM is too high:
Machine Acceleration: The CNC servo motors may not be able to accelerate the Z-axis fast enough to match the spindle speed, resulting in lead error at the start of the thread.
Chatter: Excessive speed can cause vibration, ruining the thread finish.
Reaction Time: In manual machining, high RPMs make it impossible to disengage the half-nut at the correct time near a shoulder.
Tips for Successful Threading
Consistency: Do not change the spindle speed (RPM) between passes. The machine relies on a consistent RPM to sync the start point of the thread.
Pass Depth: Use a compound infeed angle (typically 29° or 29.5°) to reduce tool pressure and prevent tearing the thread flanks.
Calculation Verification: Always double-check your calculated feed rate against the machine's maximum rapid traverse capabilities. If the required feed for threading exceeds the machine's max feed, you must lower the RPM.
function toggleFields() {
var mode = document.getElementById('calcMode').value;
var imperialInput = document.getElementById('imperialInput');
var metricInput = document.getElementById('metricInput');
var resultArea = document.getElementById('result-area');
var errorMsg = document.getElementById('errorMsg');
// Reset UI
resultArea.style.display = 'none';
errorMsg.style.display = 'none';
if (mode === 'imperial') {
imperialInput.style.display = 'block';
metricInput.style.display = 'none';
} else {
imperialInput.style.display = 'none';
metricInput.style.display = 'block';
}
}
function calculateThreading() {
// Get Inputs
var mode = document.getElementById('calcMode').value;
var rpm = parseFloat(document.getElementById('spindleSpeed').value);
var tpi = parseFloat(document.getElementById('threadsPerInch').value);
var pitch = parseFloat(document.getElementById('threadPitch').value);
// Output Elements
var resFeedRate = document.getElementById('resFeedRate');
var resFeedRev = document.getElementById('resFeedRev');
var resTime = document.getElementById('resTime');
var resultArea = document.getElementById('result-area');
var errorMsg = document.getElementById('errorMsg');
// Validation
if (isNaN(rpm) || rpm <= 0) {
errorMsg.innerText = "Please enter a valid Spindle Speed (RPM).";
errorMsg.style.display = 'block';
resultArea.style.display = 'none';
return;
}
var feedRate = 0;
var feedPerRev = 0;
var timeFactor = 0; // Just a metric to show time to cut unit distance
var unitLabelRate = "";
var unitLabelRev = "";
var unitLabelTime = "";
if (mode === 'imperial') {
if (isNaN(tpi) || tpi <= 0) {
errorMsg.innerText = "Please enter a valid TPI value.";
errorMsg.style.display = 'block';
resultArea.style.display = 'none';
return;
}
// Imperial Calculations
// Formula: Feed (IPM) = RPM * (1/TPI)
feedPerRev = 1 / tpi; // Inches per revolution
feedRate = rpm * feedPerRev; // Inches per minute
// Time to cut 1 inch (at calculated feed rate) in seconds
// Distance (1) / Speed (feedRate/60)
timeFactor = 1 / (feedRate / 60);
unitLabelRate = " in/min";
unitLabelRev = " IPR";
unitLabelTime = " sec / inch";
} else {
if (isNaN(pitch) || pitch <= 0) {
errorMsg.innerText = "Please enter a valid Pitch value.";
errorMsg.style.display = 'block';
resultArea.style.display = 'none';
return;
}
// Metric Calculations
// Formula: Feed (mm/min) = RPM * Pitch
feedPerRev = pitch; // mm per revolution
feedRate = rpm * pitch; // mm per minute
// Time to cut 10mm
timeFactor = 10 / (feedRate / 60);
unitLabelRate = " mm/min";
unitLabelRev = " mm/rev";
unitLabelTime = " sec / 10mm";
}
// Display Results
errorMsg.style.display = 'none';
resultArea.style.display = 'block';
resFeedRate.innerHTML = feedRate.toFixed(4) + unitLabelRate;
resFeedRev.innerHTML = feedPerRev.toFixed(5) + unitLabelRev;
resTime.innerHTML = timeFactor.toFixed(2) + unitLabelTime;
}