Analyze your potential real estate investment deals instantly.
Purchase Info
Income & Expenses
Monthly Cash Flow
$0.00
Cash on Cash ROI
0.00%
Cap Rate
0.00%
Gross Monthly Rent:$0.00
– Vacancy & CapEx:$0.00
– Operating Expenses (Tax/Ins/Maint):$0.00
= Net Operating Income (NOI):$0.00
– Mortgage Payment (P&I):$0.00
= Net Monthly Cash Flow:$0.00
Understanding Rental Property Analysis
Successful real estate investing relies on accurate math, not just intuition. This Rental Property Cash Flow Calculator helps investors determine the profitability of a potential purchase by analyzing income, expenses, and financing costs.
Key Metrics Explained
Cash Flow: The net profit realized after all expenses and mortgage payments are made. Positive cash flow is essential for long-term sustainability.
Net Operating Income (NOI): A calculation used to analyze the profitability of income-generating real estate investments. NOI equals all revenue from the property, minus all reasonably necessary operating expenses. NOI excludes mortgage payments.
Cap Rate (Capitalization Rate): Calculated by dividing the NOI by the property asset value. It represents the rate of return on a real estate investment property based on the income that the property is expected to generate, assuming the property was bought with cash.
Cash on Cash Return: A rate of return ratio that calculates the cash income earned on the cash invested in a property. It measures the annual return the investor made on the property in relation to the amount of mortgage paid during the same year.
How to Calculate Rental ROI
To manually calculate your Cash on Cash return, use the following formula:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100%
Where Total Cash Invested includes your down payment, closing costs, and immediate repair costs. A generally accepted "good" Cash on Cash return is often cited between 8% and 12%, though this varies heavily by market strategy.
Estimating Expenses
Many new investors underestimate expenses. Remember to account for:
Vacancy: Properties are rarely occupied 365 days a year. A 5-8% vacancy rate is a standard conservative estimate.
CapEx (Capital Expenditures): Put money aside monthly for big-ticket items like roof replacement or HVAC repairs.
Property Management: Even if you self-manage, it is wise to calculate a 10% management fee to ensure the deal works if you decide to hire a manager later.
function calculateRentalROI() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('rp_price').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 taxYear = parseFloat(document.getElementById('rp_tax').value);
var insuranceYear = parseFloat(document.getElementById('rp_insurance').value);
var maintMonth = parseFloat(document.getElementById('rp_maintenance').value);
var vacancyPercent = parseFloat(document.getElementById('rp_vacancy').value);
var capexPercent = parseFloat(document.getElementById('rp_capex').value);
// 2. Validation
if (isNaN(price) || isNaN(rent) || isNaN(downPercent)) {
alert("Please enter valid numbers for Price, Down Payment, and Rent.");
return;
}
// 3. Loan Calculations
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var monthlyRate = (rate / 100) / 12;
var numPayments = term * 12;
var mortgage = 0;
if (rate > 0) {
mortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
} else {
mortgage = loanAmount / numPayments;
}
// 4. Expense Calculations
var vacancyCost = rent * (vacancyPercent / 100);
var capexCost = rent * (capexPercent / 100);
var monthlyTax = taxYear / 12;
var monthlyIns = insuranceYear / 12;
var totalOperatingExpenses = monthlyTax + monthlyIns + maintMonth + vacancyCost + capexCost;
var totalExpenses = totalOperatingExpenses + mortgage;
// 5. Profit Metrics
var noiMonthly = rent – totalOperatingExpenses;
var noiAnnual = noiMonthly * 12;
var cashFlowMonthly = rent – totalExpenses;
var cashFlowAnnual = cashFlowMonthly * 12;
// 6. ROI Metrics
var capRate = (noiAnnual / price) * 100;
// Assuming closing costs roughly 2% of price for simple estimation in total cash invested
var closingCosts = price * 0.02;
var totalCashInvested = downPayment + closingCosts;
var cashOnCash = (cashFlowAnnual / totalCashInvested) * 100;
// 7. Display Results
document.getElementById('res_gross_rent').innerText = formatMoney(rent);
document.getElementById('res_vacancy_capex').innerText = formatMoney(vacancyCost + capexCost);
document.getElementById('res_opex').innerText = formatMoney(monthlyTax + monthlyIns + maintMonth);
document.getElementById('res_noi').innerText = formatMoney(noiMonthly);
document.getElementById('res_mortgage').innerText = formatMoney(mortgage);
var finalCfElem = document.getElementById('res_final_cf');
finalCfElem.innerText = formatMoney(cashFlowMonthly);
// Color coding for cash flow
if(cashFlowMonthly >= 0) {
finalCfElem.style.color = "#27ae60";
document.getElementById('res_cashflow').style.color = "#27ae60";
} else {
finalCfElem.style.color = "#c0392b";
document.getElementById('res_cashflow').style.color = "#c0392b";
}
document.getElementById('res_cashflow').innerText = formatMoney(cashFlowMonthly);
document.getElementById('res_coc').innerText = cashOnCash.toFixed(2) + "%";
document.getElementById('res_cap').innerText = capRate.toFixed(2) + "%";
// Show result container
document.getElementById('rp_result').style.display = "block";
}
function formatMoney(num) {
return "$" + num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}