Analyze potential real estate investments to determine cash flow, cap rate, and cash-on-cash return.
Purchase Information
Loan Details
Income & Expenses
(Taxes, Insurance, HOA, Maintenance, vacancy)
Please enter valid numeric values for all fields. Purchase price must be greater than 0.
Investment Analysis
Monthly Cash Flow
$0.00
Cash on Cash Return
0.00%
Cap Rate
0.00%
Net Operating Income (Yearly)
$0.00
Total Cash Needed
$0.00
Monthly Mortgage
$0.00
Understanding Rental Property ROI
Investing in real estate is one of the most popular ways to build wealth, but simply buying a property and renting it out doesn't guarantee a profit. To be a successful investor, you must accurately calculate your Return on Investment (ROI) and cash flow before signing the papers.
This Rental Property ROI Calculator helps investors analyze the potential profitability of a residential real estate deal by accounting for acquisition costs, financing structures, and operating expenses.
Key Metrics Explained
Cash Flow
Cash Flow = Monthly Rent – (Mortgage + All Expenses)
This is the profit you take home every month after paying the bank and all operating costs (taxes, insurance, maintenance, etc.). Positive cash flow is essential for long-term sustainability.
This is arguably the most important metric for rental investors. It measures how hard your actual cash is working for you. Unlike simple ROI, it looks at the return relative to the down payment and closing costs, not the total property value.
Cap Rate (Capitalization Rate)
Cap Rate = (Net Operating Income / Purchase Price) × 100
Cap Rate measures the natural rate of return of the property assuming you paid cash (no loan). It is useful for comparing the profitability of different properties regardless of how they are financed.
How to Use This Calculator
To get an accurate analysis, you need to gather specific data points about the property you are viewing:
Purchase Information: Enter the negotiated price, your planned down payment, closing costs (typically 2-5% of price), and immediate repair costs.
Loan Details: Input your mortgage interest rate and the loan term (usually 30 years).
Income & Expenses: Be realistic here. Enter the expected monthly rent. For expenses, ensure you include Property Taxes, Insurance, HOA fees, Maintenance reserves (usually 5-10% of rent), and Vacancy allowances.
Example Scenario
Imagine you are buying a single-family home for $200,000.
You put $40,000 (20%) down.
Closing costs and minor repairs total $5,000.
Total Cash Invested: $45,000.
Your mortgage is roughly $1,011/month (at 6.5%).
You rent it for $1,800/month.
Operating expenses (tax, insurance, repairs) are $400/month.
In this scenario, your total monthly cost is $1,411. Your Monthly Cash Flow is $389 ($1,800 – $1,411). Your Annual Cash Flow is $4,668. Your Cash on Cash Return would be 10.37% ($4,668 / $45,000).
Frequently Asked Questions
What is a "Good" Cash on Cash return?
While this varies by investor goals and risk tolerance, many real estate investors aim for a CoC return of 8% to 12%. Returns above 15% are generally considered excellent.
Should I include appreciation?
This calculator focuses on cash flow. While appreciation (the property value going up over time) is a major benefit of real estate, it is speculative. Experienced investors usually buy for cash flow and treat appreciation as a bonus.
function calculateROI() {
// 1. Get Elements
var priceInput = document.getElementById('prop_price');
var downInput = document.getElementById('prop_down');
var closingInput = document.getElementById('prop_closing');
var rehabInput = document.getElementById('prop_rehab');
var rateInput = document.getElementById('prop_rate');
var termInput = document.getElementById('prop_term');
var rentInput = document.getElementById('prop_rent');
var expenseInput = document.getElementById('prop_expenses');
var resultBox = document.getElementById('results_box');
var errorBox = document.getElementById('error_box');
// 2. Parse Values (default to 0 if empty)
var price = parseFloat(priceInput.value) || 0;
var down = parseFloat(downInput.value) || 0;
var closing = parseFloat(closingInput.value) || 0;
var rehab = parseFloat(rehabInput.value) || 0;
var rate = parseFloat(rateInput.value) || 0;
var term = parseFloat(termInput.value) || 0;
var rent = parseFloat(rentInput.value) || 0;
var monthlyExpenses = parseFloat(expenseInput.value) || 0;
// 3. Validation
if (price 0 && rate > 0 && term > 0) {
var monthlyRate = (rate / 100) / 12;
var numberOfPayments = term * 12;
// PMT Formula: P * r * (1+r)^n / ((1+r)^n – 1)
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
}
// Operational Metrics
var totalMonthlyOutflow = monthlyMortgage + monthlyExpenses;
var monthlyCashFlow = rent – totalMonthlyOutflow;
var annualCashFlow = monthlyCashFlow * 12;
// Net Operating Income (NOI) = (Revenue – Operating Expenses) * 12
// Note: Mortgage is NOT an operating expense for NOI, but 'monthlyExpenses' (taxes, insurance, maint) are.
var monthlyNOI = rent – monthlyExpenses;
var annualNOI = monthlyNOI * 12;
// Return Metrics
var cashOnCash = 0;
if (totalInitialInvestment > 0) {
cashOnCash = (annualCashFlow / totalInitialInvestment) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
// 5. Formatting Output
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
// 6. Display Results
document.getElementById('res_cashflow').innerHTML = formatter.format(monthlyCashFlow);
document.getElementById('res_coc').innerHTML = cashOnCash.toFixed(2) + '%';
document.getElementById('res_cap').innerHTML = capRate.toFixed(2) + '%';
document.getElementById('res_noi').innerHTML = formatter.format(annualNOI);
document.getElementById('res_investment').innerHTML = formatter.format(totalInitialInvestment);
document.getElementById('res_mortgage').innerHTML = formatter.format(monthlyMortgage);
// Change color of cashflow if negative
if (monthlyCashFlow < 0) {
document.getElementById('res_cashflow').style.color = '#dc3545';
} else {
document.getElementById('res_cashflow').style.color = '#2e7d32';
}
resultBox.style.display = 'block';
// Scroll to results on mobile
resultBox.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}