.calculator-wrapper {
font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
background: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}
.calc-container {
display: flex;
flex-wrap: wrap;
gap: 30px;
margin-bottom: 40px;
background: #f9f9f9;
padding: 25px;
border-radius: 8px;
border: 1px solid #e0e0e0;
}
.calc-inputs, .calc-results {
flex: 1 1 300px;
}
.input-group {
margin-bottom: 15px;
}
.input-group label {
display: block;
margin-bottom: 5px;
font-weight: 600;
color: #333;
font-size: 14px;
}
.input-group input {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
}
.input-group input:focus {
border-color: #2c3e50;
outline: none;
}
.calc-btn {
background-color: #27ae60;
color: white;
border: none;
padding: 12px 20px;
font-size: 16px;
font-weight: bold;
border-radius: 4px;
cursor: pointer;
width: 100%;
transition: background 0.3s;
margin-top: 10px;
}
.calc-btn:hover {
background-color: #219150;
}
.result-box {
background: #fff;
padding: 20px;
border-radius: 6px;
border: 1px solid #ddd;
height: 100%;
}
.result-box h3 {
margin-top: 0;
color: #2c3e50;
border-bottom: 2px solid #27ae60;
padding-bottom: 10px;
margin-bottom: 20px;
}
.result-row {
display: flex;
justify-content: space-between;
margin-bottom: 12px;
font-size: 15px;
padding-bottom: 8px;
border-bottom: 1px dashed #eee;
}
.result-row.highlight {
font-weight: 800;
color: #27ae60;
font-size: 18px;
border-top: 2px solid #eee;
border-bottom: none;
padding-top: 15px;
margin-top: 10px;
}
.result-value {
font-weight: 600;
}
.calc-content {
line-height: 1.6;
color: #444;
}
.calc-content h2 {
color: #2c3e50;
margin-top: 30px;
}
.calc-content ul {
margin-bottom: 20px;
}
@media (max-width: 600px) {
.calc-container {
flex-direction: column;
}
}
What is Cash on Cash Return?
Cash on Cash Return (CoC) is a primary metric used by real estate investors to calculate the annual return they earn on the actual cash invested in a property. Unlike a standard Return on Investment (ROI) calculation which might look at the total value of the asset, CoC specifically focuses on the money that left your pocket (down payment, closing costs, and rehab costs) versus the cash flow the property generates.
It is expressed as a percentage and allows investors to compare the profitability of rental properties against other investment vehicles like stocks or bonds.
How to Calculate Rental Property ROI
To use this Rental Property ROI Calculator effectively, you need to understand the underlying formula:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) x 100%
- Annual Cash Flow: This is your gross rental income minus all expenses, including the mortgage payment, taxes, insurance, repairs, and vacancy reserves.
- Total Cash Invested: This is the sum of your down payment, closing costs, inspection fees, and initial renovation or repair costs.
Example Calculation
Let's look at a realistic scenario for a single-family rental:
- Purchase Price: $250,000
- Down Payment (20%): $50,000
- Closing/Rehab Costs: $5,000
- Total Invested: $55,000
- Monthly Cash Flow: $300 (after paying mortgage and expenses)
- Annual Cash Flow: $3,600
In this scenario, the calculation would be: ($3,600 / $55,000) = 0.0654, or a 6.54% Cash on Cash Return.
What is a Good Cash on Cash Return?
A "good" return varies by market and investor strategy. Generally:
- 8-12%: Often considered a strong return in stable markets.
- 15%+: Considered excellent, though often found in riskier neighborhoods or properties requiring significant sweat equity.
- Below 5%: Might be acceptable in high-appreciation markets (like coastal cities) where the primary goal is long-term value growth rather than immediate cash flow.
Use this calculator to analyze potential deals quickly and ensure your rental property meets your specific financial goals.
function calculateRentalROI() {
// Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value);
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value);
var closing = parseFloat(document.getElementById('closingCosts').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var years = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var otherExp = parseFloat(document.getElementById('monthlyExpenses').value);
// Validation
if (isNaN(price) || isNaN(downPercent) || isNaN(rent)) {
alert("Please enter valid numbers for Price, Down Payment, and Rent.");
return;
}
// Calculations
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var totalInvested = downPaymentAmount + closing;
// Mortgage Calculation (P&I)
var monthlyMortgage = 0;
if (loanAmount > 0) {
var r = (interestRate / 100) / 12;
var n = years * 12;
if (r === 0) {
monthlyMortgage = loanAmount / n;
} else {
monthlyMortgage = loanAmount * (r * Math.pow((1 + r), n)) / (Math.pow((1 + r), n) – 1);
}
}
var totalMonthlyExpenses = monthlyMortgage + otherExp;
var monthlyCashFlow = rent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// Cash on Cash Return
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
// Cap Rate Calculation (Net Operating Income / Price)
// NOI = Annual Income – Annual Operating Expenses (Excluding Mortgage)
var noi = (rent – otherExp) * 12;
var capRate = 0;
if (price > 0) {
capRate = (noi / price) * 100;
}
// Formatting Helper
function formatMoney(num) {
return '$' + num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
// Display Results
document.getElementById('resDownPayment').innerHTML = formatMoney(downPaymentAmount);
document.getElementById('resLoanAmount').innerHTML = formatMoney(loanAmount);
document.getElementById('resTotalInvested').innerHTML = formatMoney(totalInvested);
document.getElementById('resMortgage').innerHTML = formatMoney(monthlyMortgage);
document.getElementById('resTotalCost').innerHTML = formatMoney(totalMonthlyExpenses);
// Handle negative cash flow color
var cashFlowElem = document.getElementById('resMonthlyCashflow');
cashFlowElem.innerHTML = formatMoney(monthlyCashFlow);
cashFlowElem.style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#c0392b';
var annualFlowElem = document.getElementById('resAnnualCashflow');
annualFlowElem.innerHTML = formatMoney(annualCashFlow);
annualFlowElem.style.color = annualCashFlow >= 0 ? '#27ae60' : '#c0392b';
document.getElementById('resCoC').innerHTML = cocReturn.toFixed(2) + '%';
document.getElementById('resCapRate').innerHTML = capRate.toFixed(2) + '%';
}