How to Calculate Attrition Rate: A Complete HR Guide
Understanding employee attrition is vital for any Human Resources department. It measures the pace at which employees leave an organization and are not immediately replaced. High attrition rates can signal issues with company culture, compensation, or management practices.
The Employee Attrition Rate Formula
To calculate the attrition rate, you need to determine the number of employees who left during a specific period and divide that by the average number of employees during that same period. The result is then multiplied by 100 to get a percentage.
Step 1: Calculate Average Headcount
Average Headcount = (Employees at Start + Employees at End) / 2
Step 2: Calculate Attrition Percentage
Attrition Rate = (Number of Separations / Average Headcount) × 100
Example Calculation
Let's say your company had 200 employees on January 1st and 180 employees on December 31st. During that year, 30 employees left the company.
Average Headcount: (200 + 180) / 2 = 190
Attrition Rate: (30 / 190) × 100 = 15.79%
Why Tracking Attrition Matters
Metric
Significance
Low Attrition (Under 10%)
Usually indicates high employee satisfaction and strong retention strategies.
High Attrition (Over 20%)
May suggest competitive disadvantages, poor hiring fit, or toxic workplace culture.
Cost Impact
Replacing an employee often costs 1.5x to 2x their annual salary in recruitment and training.
Difference Between Attrition and Turnover
While often used interchangeably, there is a nuance:
Turnover: Refers to employees leaving and being replaced (a revolving door).
Attrition: Refers to employees leaving and the position remaining vacant or being eliminated (reduction in force or natural retirement).
function calculateAttrition() {
var startEmployees = parseFloat(document.getElementById("startEmployees").value);
var endEmployees = parseFloat(document.getElementById("endEmployees").value);
var leftEmployees = parseFloat(document.getElementById("leftEmployees").value);
var errorDisplay = document.getElementById("errorDisplay");
var resultDisplay = document.getElementById("resultDisplay");
// Validation
if (isNaN(startEmployees) || isNaN(endEmployees) || isNaN(leftEmployees) || startEmployees < 0 || endEmployees < 0 || leftEmployees < 0) {
errorDisplay.style.display = "block";
resultDisplay.style.display = "none";
return;
}
// Average Headcount Calculation
var averageHeadcount = (startEmployees + endEmployees) / 2;
if (averageHeadcount === 0) {
errorDisplay.innerText = "Average headcount cannot be zero.";
errorDisplay.style.display = "block";
resultDisplay.style.display = "none";
return;
}
// Attrition Rate Calculation
var attritionRate = (leftEmployees / averageHeadcount) * 100;
// Update UI
errorDisplay.style.display = "none";
resultDisplay.style.display = "block";
document.getElementById("avgHeadcount").innerText = averageHeadcount.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 2});
document.getElementById("attritionPercentage").innerText = attritionRate.toFixed(2) + "%";
}