.roi-calc-container {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
max-width: 800px;
margin: 20px auto;
padding: 25px;
background: #f9f9f9;
border: 1px solid #e0e0e0;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}
.roi-calc-title {
text-align: center;
color: #2c3e50;
margin-bottom: 25px;
}
.roi-form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.roi-input-group {
margin-bottom: 15px;
}
.roi-input-group label {
display: block;
margin-bottom: 5px;
font-weight: 600;
font-size: 14px;
color: #444;
}
.roi-input-group input {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
}
.roi-input-group input:focus {
border-color: #3498db;
outline: none;
}
.roi-section-header {
grid-column: 1 / -1;
font-size: 18px;
color: #2980b9;
border-bottom: 2px solid #ddd;
padding-bottom: 5px;
margin-top: 10px;
margin-bottom: 10px;
}
.roi-btn {
grid-column: 1 / -1;
background-color: #27ae60;
color: white;
border: none;
padding: 15px;
font-size: 18px;
border-radius: 4px;
cursor: pointer;
transition: background 0.3s;
font-weight: bold;
text-transform: uppercase;
margin-top: 10px;
}
.roi-btn:hover {
background-color: #219150;
}
.roi-results {
grid-column: 1 / -1;
background: #fff;
padding: 20px;
border-radius: 4px;
border: 1px solid #ddd;
margin-top: 20px;
display: none;
}
.roi-result-row {
display: flex;
justify-content: space-between;
padding: 10px 0;
border-bottom: 1px solid #eee;
}
.roi-result-row:last-child {
border-bottom: none;
}
.roi-highlight {
font-size: 24px;
font-weight: bold;
color: #27ae60;
}
.roi-neg {
color: #c0392b;
}
.calc-article {
max-width: 800px;
margin: 40px auto;
font-family: inherit;
line-height: 1.6;
color: #333;
}
.calc-article h2 {
color: #2c3e50;
margin-top: 30px;
}
.calc-article ul {
margin-bottom: 20px;
}
@media (max-width: 600px) {
.roi-form-grid {
grid-template-columns: 1fr;
}
}
Rental Property Cash on Cash Return Calculator
function calculateROI() {
// Get Input Values
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var rehabCosts = parseFloat(document.getElementById('rehabCosts').value) || 0;
var downPaymentPercent = parseFloat(document.getElementById('downPaymentPercent').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var loanTerm = parseFloat(document.getElementById('loanTerm').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value) || 0;
var propertyTaxAnnual = parseFloat(document.getElementById('propertyTax').value) || 0;
var insuranceAnnual = parseFloat(document.getElementById('insurance').value) || 0;
var hoaMonthly = parseFloat(document.getElementById('hoa').value) || 0;
var maintenancePercent = parseFloat(document.getElementById('maintenance').value) || 0;
// 1. Calculate Mortgage
var downPaymentAmount = purchasePrice * (downPaymentPercent / 100);
var loanAmount = purchasePrice – downPaymentAmount;
var monthlyRate = (interestRate / 100) / 12;
var totalPayments = loanTerm * 12;
var monthlyMortgage = 0;
if (loanAmount > 0 && interestRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalPayments)) / (Math.pow(1 + monthlyRate, totalPayments) – 1);
} else if (loanAmount > 0 && interestRate === 0) {
monthlyMortgage = loanAmount / totalPayments;
}
// 2. Calculate Total Cash Invested
var totalInvested = downPaymentAmount + closingCosts + rehabCosts;
// 3. Calculate Monthly Expenses (Operating)
var monthlyTax = propertyTaxAnnual / 12;
var monthlyInsurance = insuranceAnnual / 12;
var vacancyCost = monthlyRent * (vacancyRate / 100);
var maintenanceCost = monthlyRent * (maintenancePercent / 100);
var totalOperatingExpenses = monthlyTax + monthlyInsurance + hoaMonthly + vacancyCost + maintenanceCost;
// 4. Calculate Net Operating Income (NOI) & Cash Flow
var effectiveGrossIncome = monthlyRent – vacancyCost; // Vacancy is usually subtracted from Gross
// Note: For cash flow purposes we subtract all expenses
var monthlyTotalExpenses = monthlyMortgage + monthlyTax + monthlyInsurance + hoaMonthly + maintenanceCost; // Exclude vacancy here as it's lost income, not a check written (or treat as expense, mathematically same for net)
// Let's stick to Cash Flow = (Rent – Vacancy) – (Operating Expenses + Mortgage)
var monthlyCashFlow = (monthlyRent – vacancyCost) – (monthlyTax + monthlyInsurance + hoaMonthly + maintenanceCost + monthlyMortgage);
var annualCashFlow = monthlyCashFlow * 12;
// 5. Calculate Cash on Cash Return
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
// Display Results
document.getElementById('resTotalInvested').innerText = formatCurrency(totalInvested);
document.getElementById('resMortgage').innerText = formatCurrency(monthlyMortgage);
var cfEl = document.getElementById('resMonthlyCashFlow');
cfEl.innerText = formatCurrency(monthlyCashFlow);
cfEl.className = monthlyCashFlow >= 0 ? " : 'roi-neg';
var annCfEl = document.getElementById('resAnnualCashFlow');
annCfEl.innerText = formatCurrency(annualCashFlow);
annCfEl.className = annualCashFlow >= 0 ? " : 'roi-neg';
var cocEl = document.getElementById('resCoC');
cocEl.innerText = cocReturn.toFixed(2) + "%";
cocEl.className = cocReturn >= 0 ? 'roi-highlight' : 'roi-highlight roi-neg';
document.getElementById('resultsArea').style.display = 'block';
}
function formatCurrency(num) {
return "$" + num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}
Understanding the Rental Property Cash on Cash Return Calculator
Real estate investing is a numbers game, and one of the most critical metrics for assessing the performance of a rental property is the Cash on Cash Return (CoC). Unlike generic ROI, which might look at total equity gains, CoC strictly measures the annual return you make on the actual cash you invested relative to the annual cash flow the property generates.
This calculator is specifically designed for landlords and real estate investors to analyze potential deals by accounting for mortgage costs, vacancies, repairs, and other operating expenses.
How is Cash on Cash Return Calculated?
The formula for Cash on Cash Return is relatively straightforward but requires accurate inputs to be useful:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) x 100%
- Annual Cash Flow: This is your Gross Rent minus Vacancy losses, Operating Expenses (taxes, insurance, HOA, maintenance), and Debt Service (mortgage payments).
- Total Cash Invested: This includes your Down Payment, Closing Costs, and any immediate Rehab or Repair costs required to get the property rented.
Example Calculation
Let's look at a realistic scenario for a single-family rental:
- Purchase Price: $200,000
- Down Payment (20%): $40,000
- Closing & Rehab Costs: $10,000
- Total Invested: $50,000
If the property generates $4,000 in positive cash flow per year after paying the mortgage and all expenses:
Calculation: ($4,000 / $50,000) = 0.08 or 8% Return.
What is a "Good" Cash on Cash Return?
While answers vary based on the investor's strategy and the local market, generally:
- 8-12%: Considered a solid return in most stable markets.
- 15%+: Excellent returns, often found in lower-cost markets or properties requiring significant "sweat equity" (rehab).
- Below 5%: Might be acceptable in high-appreciation markets (like California or NYC) where the long-term equity growth is the primary goal rather than immediate cash flow.
Why Use This Calculator?
Using a dedicated Rental Property Calculator ensures you don't overlook "silent killers" of cash flow like vacancy rates and maintenance reserves. Many novice investors make the mistake of only subtracting the mortgage from the rent, assuming the rest is profit. This tool forces you to account for long-term expenses like CapEx (Capital Expenditures) so you can make a safe, informed investment decision.