Customer Retention Rate (CRR) is a critical metric for businesses, particularly in SaaS and subscription models. It measures the percentage of customers a company retains over a specific period. While our calculator above provides an instant result, many professionals prefer performing the retention rate calculation in Excel for monthly reporting.
The Formula: CRR = ((E – N) / S) x 100
Where:
E (End): Number of customers at the end of the period.
N (New): Number of new customers acquired during the period.
S (Start): Number of customers at the start of the period.
How to Calculate Retention Rate in Excel
To set up a retention rate calculator in Excel, follow these specific steps to ensure your data is structured correctly for automated reporting.
Step 1: Set Up Your Data Columns
Open a new Excel sheet and create headers for your data variables. For example:
Cell A1: Period (e.g., "January")
Cell B1: Customers at Start (S)
Cell C1: Customers at End (E)
Cell D1: New Customers (N)
Cell E1: Retention Rate (%)
Step 2: Input Your Data
Enter your actual business numbers into row 2. For example:
B2: 500 (Start)
C2: 480 (End)
D2: 20 (New)
Step 3: Enter the Excel Formula
In cell E2, copy and paste the following formula:
=((C2-D2)/B2)
Important: After entering the formula, click on cell E2 and press CTRL + SHIFT + % (or click the "%" button in the Home ribbon) to format the decimal result as a percentage.
Why We Subtract New Customers
A common mistake when performing the retention rate calculation in Excel is simply dividing End Customers by Start Customers (E/S). This is incorrect because it includes new growth.
To measure true retention (loyalty), you must isolate the cohort of customers that existed at the beginning of the period. By subtracting New Customers (N) from the End total (E), you determine exactly how many of the original customers are still with you.
Interpreting Your Results
Once you have your percentage, here is how to interpret the health of your business:
100% Retention: You did not lose a single customer from your starting cohort.
High Retention (>90%): Indicates strong product-market fit and high customer loyalty.
Low Retention (<20%): Suggests a "leaky bucket" problem where customers leave as fast as they arrive.
Use the calculator above for quick checks, or build the Excel model described to track trends over fiscal quarters.
function calculateRetention() {
// 1. Get input values by ID
var startCust = document.getElementById('custStart').value;
var endCust = document.getElementById('custEnd').value;
var newCust = document.getElementById('custNew').value;
// 2. Validate inputs are not empty
if (startCust === "" || endCust === "" || newCust === "") {
alert("Please fill in all fields (Start, End, and New Customers).");
return;
}
// 3. Parse strings to numbers
var s = parseFloat(startCust);
var e = parseFloat(endCust);
var n = parseFloat(newCust);
// 4. Logical validation
if (s <= 0) {
alert("Customers at Start (S) must be greater than 0 to calculate a rate.");
return;
}
if (n < 0 || e < 0) {
alert("Customer counts cannot be negative.");
return;
}
// Warning if data looks inconsistent (optional but helpful)
// e.g., if end customers is less than new customers, implies negative retention which is physically impossible
// unless there is a data error, but we will process the math regardless.
// 5. Calculate Retained Customers
// Formula: Retained = End – New
var retainedCount = e – n;
// 6. Calculate Retention Rate
// Formula: ((End – New) / Start) * 100
var retentionRate = (retainedCount / s) * 100;
// 7. Calculate Churn Rate
// Formula: 100 – Retention Rate
var churnRate = 100 – retentionRate;
// 8. Handle edge cases where calculation might exceed 100% due to bad data entry
// (Though technically retention cannot exceed 100% unless new customers weren't tracked correctly)
// 9. Display Results
document.getElementById('displayRetention').innerText = retentionRate.toFixed(2) + "%";
document.getElementById('displayChurn').innerText = churnRate.toFixed(2) + "%";
document.getElementById('displayRetainedCount').innerText = retainedCount;
// Show result box
document.getElementById('result-box').style.display = "block";
}