.calculator-wrapper {
max-width: 800px;
margin: 0 auto;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
color: #333;
line-height: 1.6;
}
.calc-container {
background: #f9f9f9;
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 25px;
margin: 30px 0;
box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}
.calc-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
@media (max-width: 600px) {
.calc-grid {
grid-template-columns: 1fr;
}
}
.input-group {
margin-bottom: 15px;
}
.input-group label {
display: block;
font-weight: 600;
margin-bottom: 5px;
font-size: 0.9rem;
color: #555;
}
.input-group input {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 1rem;
box-sizing: border-box;
}
.section-title {
grid-column: 1 / -1;
font-size: 1.1rem;
font-weight: 700;
color: #2c3e50;
border-bottom: 2px solid #3498db;
padding-bottom: 5px;
margin-bottom: 15px;
margin-top: 10px;
}
.calc-btn {
grid-column: 1 / -1;
background: #3498db;
color: white;
border: none;
padding: 15px;
font-size: 1.1rem;
font-weight: bold;
border-radius: 5px;
cursor: pointer;
transition: background 0.3s;
margin-top: 10px;
width: 100%;
}
.calc-btn:hover {
background: #2980b9;
}
.results-box {
grid-column: 1 / -1;
background: #fff;
border: 1px solid #ddd;
border-radius: 6px;
padding: 20px;
margin-top: 20px;
display: none;
}
.result-row {
display: flex;
justify-content: space-between;
padding: 10px 0;
border-bottom: 1px solid #eee;
}
.result-row:last-child {
border-bottom: none;
}
.result-label {
font-weight: 600;
color: #555;
}
.result-value {
font-weight: 700;
font-size: 1.1rem;
}
.result-positive { color: #27ae60; }
.result-negative { color: #c0392b; }
.main-metric {
text-align: center;
background: #f0f7fb;
padding: 15px;
border-radius: 5px;
margin-bottom: 15px;
}
.main-metric h3 { margin: 0; font-size: 1rem; color: #7f8c8d; }
.main-metric div { font-size: 2.5rem; color: #2c3e50; font-weight: 800; margin-top: 5px; }
.article-content h2 { color: #2c3e50; margin-top: 40px; }
.article-content h3 { color: #34495e; margin-top: 25px; }
.article-content ul { padding-left: 20px; }
.article-content li { margin-bottom: 8px; }
Understanding the true performance of your real estate investment requires more than just looking at the monthly rent check. The Cash on Cash Return (CoC) is one of the most critical metrics for real estate investors, as it measures the annual return on the actual cash invested, rather than the total loan amount. Use our calculator below to accurately analyze your potential rental property deal.
How Cash on Cash Return is Calculated
The formula for Cash on Cash Return is relatively straightforward but requires accurate inputs to be meaningful. It is calculated as:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100
Key Components:
- Annual Pre-Tax Cash Flow: This is your gross rental income minus all operating expenses (taxes, insurance, maintenance, vacancy, management) and debt service (mortgage payments).
- Total Cash Invested: This is not the price of the home. It is the actual cash you put into the deal, including the down payment, closing costs, and any immediate repair or renovation costs.
Why is Cash on Cash Return Important?
Unlike ROI (Return on Investment) which might account for loan paydown and appreciation, or Cap Rate which ignores debt service, Cash on Cash Return tells you exactly how hard your liquid cash is working for you right now. It is the preferred metric for income-focused investors who prioritize cash flow over speculation.
What is a Good Cash on Cash Return?
While answers vary by market and strategy, many investors aim for a Cash on Cash return of 8% to 12%. This range typically outperforms the stock market average (adjusted for inflation) while providing the tangible security of real estate. In high-appreciation markets, investors might accept lower CoC returns (4-6%), while in stable cash-flow markets, they might demand 15% or higher.
Cash on Cash vs. Cap Rate
It is crucial to distinguish between these two metrics:
- Cap Rate (Capitalization Rate): Measures the return of a property as if it were bought entirely with cash. It indicates the profitability of the asset itself, independent of financing.
- Cash on Cash Return: Measures the return on the specific amount of cash invested, heavily influenced by your financing terms (interest rate and down payment).
Use our calculator above to adjust your down payment and interest rate to see how leverage impacts your returns.
function calculateCoC() {
// Get Inputs
var price = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var years = parseFloat(document.getElementById('loanTerm').value) || 30;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value) || 0;
var annualTax = parseFloat(document.getElementById('annualTax').value) || 0;
var annualInsurance = parseFloat(document.getElementById('annualInsurance').value) || 0;
var monthlyMaint = parseFloat(document.getElementById('monthlyMaintenance').value) || 0;
var managementPercent = parseFloat(document.getElementById('managementFee').value) || 0;
// 1. Calculate Mortgage
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var numPayments = years * 12;
var monthlyMortgage = 0;
if (interestRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
} else {
monthlyMortgage = loanAmount / numPayments;
}
// 2. Calculate Operating Expenses
var vacancyLoss = monthlyRent * (vacancyRate / 100);
var managementCost = monthlyRent * (managementPercent / 100);
var totalMonthlyExpenses = (annualTax / 12) + (annualInsurance / 12) + monthlyMaint + managementCost + vacancyLoss;
// 3. Calculate Income Metrics
var monthlyNOI = monthlyRent – totalMonthlyExpenses; // Net Operating Income (Monthly)
var monthlyCashFlow = monthlyNOI – monthlyMortgage;
var annualCashFlow = monthlyCashFlow * 12;
var annualNOI = monthlyNOI * 12;
// 4. Calculate Returns
var totalCashInvested = downPayment + closingCosts;
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
// 5. Display Results
var resultsBox = document.getElementById('results');
resultsBox.style.display = "block";
// Helper for formatting currency
function formatMoney(num) {
return "$" + num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}
// CoC Display
var cocElem = document.getElementById('displayCoC');
cocElem.innerHTML = cocReturn.toFixed(2) + "%";
if(cocReturn >= 0) {
cocElem.className = "result-positive";
} else {
cocElem.className = "result-negative";
}
// Cash Flow Display
var flowElem = document.getElementById('displayCashFlow');
flowElem.innerHTML = formatMoney(monthlyCashFlow);
if(monthlyCashFlow >= 0) {
flowElem.className = "result-value result-positive";
} else {
flowElem.className = "result-value result-negative";
}
// NOI Display
document.getElementById('displayNOI').innerHTML = formatMoney(annualNOI);
// Total Invested Display
document.getElementById('displayInvested').innerHTML = formatMoney(totalCashInvested);
// Cap Rate Display
document.getElementById('displayCapRate').innerHTML = capRate.toFixed(2) + "%";
}