:root {
–primary-color: #2c3e50;
–secondary-color: #3498db;
–accent-color: #e74c3c;
–bg-color: #f8f9fa;
–card-bg: #ffffff;
–text-color: #333333;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: var(–text-color);
background-color: var(–bg-color);
margin: 0;
padding: 20px;
}
.calculator-container {
max-width: 600px;
margin: 0 auto;
background: var(–card-bg);
padding: 30px;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
border: 1px solid #e1e4e8;
}
.calc-header {
text-align: center;
margin-bottom: 25px;
}
.calc-header h2 {
margin: 0;
color: var(–primary-color);
}
.input-group {
margin-bottom: 20px;
}
.input-group label {
display: block;
margin-bottom: 8px;
font-weight: 600;
color: var(–primary-color);
}
.input-group input {
width: 100%;
padding: 12px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
}
.input-group input:focus {
border-color: var(–secondary-color);
outline: none;
box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.2);
}
.calc-btn {
display: block;
width: 100%;
padding: 14px;
background-color: var(–secondary-color);
color: white;
border: none;
border-radius: 4px;
font-size: 18px;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s;
}
.calc-btn:hover {
background-color: #2980b9;
}
.results-area {
margin-top: 30px;
padding: 20px;
background-color: #f1f8ff;
border-radius: 4px;
border-left: 5px solid var(–secondary-color);
display: none;
}
.result-row {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: 1px solid #dceefb;
}
.result-row:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.result-label {
font-weight: 600;
}
.result-value {
font-weight: 700;
color: var(–primary-color);
}
.result-value.large {
font-size: 1.2em;
color: var(–secondary-color);
}
.article-content {
max-width: 800px;
margin: 40px auto;
background: var(–card-bg);
padding: 40px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
.article-content h2 {
color: var(–primary-color);
margin-top: 30px;
}
.article-content p {
margin-bottom: 15px;
}
.article-content ul {
margin-bottom: 20px;
padding-left: 20px;
}
.article-content li {
margin-bottom: 8px;
}
.help-text {
font-size: 0.85em;
color: #666;
margin-top: 4px;
}
function calculateRunRate() {
// 1. Get input values
var existingMRR = parseFloat(document.getElementById('existingMRR').value) || 0;
var newMRR = parseFloat(document.getElementById('newMRR').value) || 0;
var expansionMRR = parseFloat(document.getElementById('expansionMRR').value) || 0;
var churnMRR = parseFloat(document.getElementById('churnMRR').value) || 0;
var contractionMRR = parseFloat(document.getElementById('contractionMRR').value) || 0;
// 2. Calculate Net New MRR (Gains – Losses)
var totalAdditions = newMRR + expansionMRR;
var totalLosses = churnMRR + contractionMRR;
var netNewMRR = totalAdditions – totalLosses;
// 3. Calculate Net MRR (End of Month)
var finalMRR = existingMRR + netNewMRR;
// 4. Calculate Annual Run Rate (ARR)
var arr = finalMRR * 12;
// 5. Calculate Growth Rate
var growthRate = 0;
if (existingMRR > 0) {
growthRate = (netNewMRR / existingMRR) * 100;
} else if (existingMRR === 0 && finalMRR > 0) {
growthRate = 100; // Technical infinite growth from zero
}
// 6. Format currency and percentages
var currencyFormatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
// 7. Update the display
document.getElementById('netMRRDisplay').innerHTML = currencyFormatter.format(finalMRR);
document.getElementById('netNewMRRDisplay').innerHTML = (netNewMRR >= 0 ? "+" : "") + currencyFormatter.format(netNewMRR);
document.getElementById('arrDisplay').innerHTML = currencyFormatter.format(arr);
document.getElementById('growthRateDisplay').innerHTML = growthRate.toFixed(2) + "%";
// Show results container
document.getElementById('results').style.display = 'block';
}
How to Calculate Monthly Run Rate (MRR)
For SaaS (Software as a Service) companies and subscription-based businesses, understanding your revenue momentum is critical. The Monthly Run Rate (MRR), often referred to simply as Monthly Recurring Revenue, is the lifeblood of these business models. It acts as a compass, indicating not just where revenue stands today, but projecting where the annual revenue will land if current trends persist.
This guide explains exactly how to calculate monthly run rate, why it matters, and how to break down the formula into actionable components.
What is Monthly Run Rate?
Monthly Run Rate is a measure of your predictable revenue stream. It normalizes your revenue to a one-month period, excluding one-time fees (like setup charges or consulting fees) and variable revenue that isn't guaranteed to recur. It is the primary metric investors and founders use to track growth.
Once you have your MRR, you can easily calculate your ARR (Annual Run Rate) by multiplying the monthly figure by 12. This assumes that no new customers are added and no existing customers churn in the futureāit is a snapshot of current performance annualized.
The MRR Formula
To accurately calculate your Net MRR for a specific month, you cannot simply look at the total cash in the bank. You must account for the different movements of revenue within your customer base. The standard formula for Net MRR is:
Net MRR = (Beginning MRR + New MRR + Expansion MRR) – (Churned MRR + Contraction MRR)
Let's break down these variables:
- Beginning MRR: The recurring revenue you had at the very start of the month (carried over from the previous month).
- New MRR: Revenue generated from brand new customers acquired during the month.
- Expansion MRR: Additional revenue from existing customers who upgraded their plans or purchased add-ons (Upsells).
- Churned MRR: Revenue lost from customers who cancelled their subscriptions entirely.
- Contraction MRR: Revenue lost from existing customers who downgraded to a cheaper plan (Downsells).
How to Use the Calculator
Our Monthly Run Rate calculator above is designed to give you a granular view of your revenue flow. Here is how to input your data:
- Beginning of Month MRR: Enter the total recurring revenue you started the month with. Do not include one-time sales.
- New MRR: Input the value of all new subscriptions sold this month.
- Expansion MRR: Enter the total value of upgrades. For example, if a customer moves from a $50 plan to a $100 plan, the expansion MRR is $50.
- Churned & Contraction MRR: Enter the value of lost revenue. If a customer cancels a $100 subscription, enter 100 in Churn. If they downgrade from $100 to $50, enter 50 in Contraction.
Example Calculation
Imagine a small SaaS company with the following metrics for September:
- Starting Revenue: $10,000
- New Sales: $1,500
- Upgrades: $500
- Cancellations: $800
- Downgrades: $200
Using the logic in the calculator:
($10,000 + $1,500 + $500) – ($800 + $200) = $11,000 Net MRR
This results in a Net New MRR of $1,000 (a 10% growth rate) and an Annual Run Rate (ARR) of $132,000.
Why Distinguish Between Churn and Contraction?
While both represent lost revenue, they indicate different problems. High churn suggests your product isn't solving the core problem or you are acquiring the wrong customers. High contraction might mean your pricing tiers are misaligned, or customers are finding they don't need your premium features. Tracking them separately allows for more targeted fixes.