Rental Property Cap Rate & Cash Flow Calculator
.rp-calculator-wrapper {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
max-width: 800px;
margin: 20px auto;
padding: 20px;
background: #f9f9f9;
border: 1px solid #e0e0e0;
border-radius: 8px;
}
.rp-calc-header {
text-align: center;
margin-bottom: 30px;
}
.rp-calc-header h2 {
color: #2c3e50;
margin: 0;
}
.rp-form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
@media (max-width: 600px) {
.rp-form-grid {
grid-template-columns: 1fr;
}
}
.rp-input-group {
margin-bottom: 15px;
}
.rp-input-group label {
display: block;
margin-bottom: 5px;
font-weight: 600;
color: #333;
font-size: 14px;
}
.rp-input-group input {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
}
.rp-input-group input:focus {
border-color: #3498db;
outline: none;
}
.rp-section-title {
grid-column: 1 / -1;
font-size: 18px;
color: #2980b9;
border-bottom: 2px solid #2980b9;
padding-bottom: 5px;
margin-top: 10px;
margin-bottom: 15px;
}
.rp-btn-container {
grid-column: 1 / -1;
text-align: center;
margin-top: 20px;
}
.rp-calc-btn {
background-color: #27ae60;
color: white;
border: none;
padding: 15px 30px;
font-size: 18px;
font-weight: bold;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}
.rp-calc-btn:hover {
background-color: #219150;
}
.rp-result-box {
margin-top: 30px;
background: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
display: none;
}
.rp-result-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 15px;
text-align: center;
}
@media (max-width: 600px) {
.rp-result-grid {
grid-template-columns: 1fr;
}
}
.rp-metric {
padding: 15px;
background: #f0f4f8;
border-radius: 6px;
}
.rp-metric-label {
font-size: 13px;
color: #7f8c8d;
text-transform: uppercase;
letter-spacing: 1px;
}
.rp-metric-value {
font-size: 24px;
font-weight: bold;
color: #2c3e50;
margin-top: 5px;
}
.rp-metric-value.positive { color: #27ae60; }
.rp-metric-value.negative { color: #c0392b; }
.rp-article {
max-width: 800px;
margin: 40px auto;
line-height: 1.6;
color: #333;
font-family: Georgia, 'Times New Roman', Times, serif;
}
.rp-article h2 { color: #2c3e50; font-family: -apple-system, BlinkMacSystemFont, sans-serif; margin-top: 30px;}
.rp-article h3 { color: #34495e; font-family: -apple-system, BlinkMacSystemFont, sans-serif; }
.rp-article p { margin-bottom: 15px; }
.rp-article ul { margin-bottom: 20px; }
.rp-article li { margin-bottom: 8px; }
.rp-formula-box {
background: #edf2f7;
padding: 15px;
border-left: 4px solid #2980b9;
margin: 20px 0;
font-family: monospace;
}
Investment Performance
Cash on Cash Return
0.00%
Breakdown:
Monthly NOI: $0.00
Monthly Mortgage Payment: $0.00
Total Initial Investment: $0.00
function calculateRentalMetrics() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('rp_price').value);
var closing = parseFloat(document.getElementById('rp_closing').value);
var downPercent = parseFloat(document.getElementById('rp_down').value);
var rate = parseFloat(document.getElementById('rp_rate').value);
var term = parseFloat(document.getElementById('rp_term').value);
var rent = parseFloat(document.getElementById('rp_rent').value);
var taxYearly = parseFloat(document.getElementById('rp_tax').value);
var insYearly = parseFloat(document.getElementById('rp_insurance').value);
var hoaMonthly = parseFloat(document.getElementById('rp_hoa').value);
var maintPercent = parseFloat(document.getElementById('rp_maint').value);
// Validation
if (isNaN(price) || isNaN(rent) || isNaN(rate) || isNaN(term)) {
alert("Please enter valid numbers for Price, Rent, Interest Rate, and Term.");
return;
}
// 2. Financial Calculations
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var totalInvestment = downPayment + closing;
// Mortgage Calculation (Monthly P&I)
var monthlyRate = (rate / 100) / 12;
var numPayments = term * 12;
var mortgagePayment = 0;
if (rate === 0) {
mortgagePayment = loanAmount / numPayments;
} else {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
}
// Operating Expenses
var monthlyTax = taxYearly / 12;
var monthlyIns = insYearly / 12;
var monthlyMaint = rent * (maintPercent / 100); // Combined vacancy/maintenance reserve
var totalMonthlyExpenses = monthlyTax + monthlyIns + hoaMonthly + monthlyMaint;
// Net Operating Income (NOI) = Income – Operating Expenses (excluding mortgage)
var monthlyNOI = rent – totalMonthlyExpenses;
var annualNOI = monthlyNOI * 12;
// Cash Flow = NOI – Mortgage
var monthlyCashFlow = monthlyNOI – mortgagePayment;
var annualCashFlow = monthlyCashFlow * 12;
// Metrics
var capRate = (annualNOI / price) * 100;
var cashOnCash = (annualCashFlow / totalInvestment) * 100;
// 3. Display Results
var cashFlowEl = document.getElementById('res_cashflow');
cashFlowEl.innerText = "$" + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if(monthlyCashFlow >= 0) {
cashFlowEl.classList.remove('negative');
cashFlowEl.classList.add('positive');
} else {
cashFlowEl.classList.remove('positive');
cashFlowEl.classList.add('negative');
}
document.getElementById('res_caprate').innerText = capRate.toFixed(2) + "%";
var cocEl = document.getElementById('res_coc');
cocEl.innerText = cashOnCash.toFixed(2) + "%";
if(cashOnCash >= 0) {
cocEl.classList.remove('negative');
cocEl.classList.add('positive');
} else {
cocEl.classList.remove('positive');
cocEl.classList.add('negative');
}
document.getElementById('res_noi').innerText = "$" + monthlyNOI.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_mortgage').innerText = "$" + mortgagePayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_investment').innerText = "$" + totalInvestment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Show result box
document.getElementById('rp_result').style.display = 'block';
}
Understanding Rental Property Metrics
Investing in real estate is one of the most reliable ways to build wealth, but simply buying a property doesn't guarantee a profit. To succeed, investors must understand the numbers behind the deal. This Rental Property Calculator helps you evaluate three critical metrics: Cash Flow, Cap Rate, and Cash on Cash Return.
1. What is Cash Flow?
Cash flow is the net amount of money moving into or out of your rental business after all expenses and mortgage payments are made. Positive cash flow means the property pays for itself and puts money in your pocket every month.
Cash Flow = Rental Income – (Operating Expenses + Mortgage Payments)
In our calculator, we deduct taxes, insurance, HOA fees, and a maintenance/vacancy reserve from the gross rent to find the Net Operating Income (NOI), and then subtract the mortgage payment to find the final cash flow.
2. Capitalization Rate (Cap Rate)
The Cap Rate measures the natural rate of return on the property, assuming it was bought entirely with cash (no loan). It allows you to compare the profitability of one property against another, regardless of how they are financed.
Cap Rate = (Net Operating Income / Purchase Price) * 100
Example: If you buy a house for $250,000 and it generates $15,000 in NOI per year, the Cap Rate is 6%. Generally, a higher Cap Rate indicates a better potential return, though it may also come with higher risk.
3. Cash on Cash Return (CoC)
This is arguably the most important metric for leveraged investors. It measures the return on the actual cash you invested (Down Payment + Closing Costs), rather than the total value of the property.
CoC Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) * 100
For example, if you put down $50,000 to buy a property and it generates $5,000 in annual cash flow, your Cash on Cash return is 10%. This allows you to compare real estate returns directly against other investments like stocks or bonds.
How to Interpret Your Results
- Negative Cash Flow: This is a red flag. Unless you are banking solely on appreciation (which is risky), you generally want to avoid properties that cost you money to hold.
- Low Cap Rate (< 4%): Often found in expensive, high-demand areas. These properties may appreciate well but offer low immediate income.
- High Cap Rate (> 8%): Often found in riskier neighborhoods or rural areas. They produce great income but may be harder to manage or sell later.
Use this calculator to run scenarios by changing the Purchase Price, Rent, or Interest Rate to see how they impact your bottom line.