Chip thinning is a physical phenomenon that occurs when the radial depth of cut (ae) is less than half the diameter of the cutter (D). As the engagement decreases, the actual chip produced is thinner than the programmed feed per tooth. To maintain the intended chip load and maximize tool life, machinists must increase the programmed feed rate.
The Mathematical Formula
The adjustment factor for chip thinning is calculated using the following geometry:
Factor = D / (2 * sqrt(ae * (D – ae)))
Your programmed Feed Per Tooth (fz) is then: Desired Chip Thickness * Factor.
Example Calculation
Imagine you are using a 0.500″ diameter end mill with a radial engagement (ae) of 0.050″. You want a chip thickness of 0.003″ per tooth.
Ratio: 0.050 / 0.500 = 10% engagement.
Adjustment Factor: At 10% engagement, the factor is approximately 1.66.
Adjusted Feed: 0.003″ * 1.66 = 0.005″ per tooth.
Result: To actually get a 0.003″ chip, you must program 0.005″.
Why This Matters for CNC Machining
If you do not account for chip thinning during light radial cuts (high-speed machining or trochoidal milling), the tool will "rub" rather than cut. This rubbing generates excessive heat, work-hardens the material, and leads to premature tool failure. By using this calculator, you ensure that the tool is actually shearing the material as designed, which significantly improves cycle times and surface finish.
function calculateChipThinning() {
var D = parseFloat(document.getElementById("cutterDiameter").value);
var ae = parseFloat(document.getElementById("radialDepth").value);
var hm = parseFloat(document.getElementById("desiredChip").value);
var z = parseFloat(document.getElementById("numFlutes").value);
var rpm = parseFloat(document.getElementById("spindleRPM").value);
if (isNaN(D) || isNaN(ae) || isNaN(hm) || D <= 0 || ae <= 0 || hm D) {
alert("Radial Depth (ae) cannot be greater than Cutter Diameter (D).");
return;
}
// Calculation Logic
// Engagement Ratio
var ratio = (ae / D) * 100;
// Adjustment factor (Valid for ae <= D/2)
// Formula: fz = hm * (D / (2 * sqrt(ae * (D – ae))))
var factor = 1.0;
if (ae 0 && rpm > 0) {
finalFeedRate = adjustedFz * z * rpm;
}
// Display Results
document.getElementById("chipResult").style.display = "block";
document.getElementById("resEngagement").innerText = ratio.toFixed(2) + "%";
document.getElementById("resFactor").innerText = factor.toFixed(4);
document.getElementById("resFeedTooth").innerText = adjustedFz.toFixed(5);
if (finalFeedRate > 0) {
document.getElementById("resFinalFeed").innerText = finalFeedRate.toFixed(2) + " units/min";
} else {
document.getElementById("resFinalFeed").innerText = "Enter RPM/Flutes for total feed";
}
}