Analyze the profitability of your real estate investment
Purchase Details
Monthly Income & Expenses
Monthly Mortgage
$0.00
Monthly Cash Flow
$0.00
Cap Rate
0.00%
Cash on Cash Return
0.00%
Understanding Rental Property ROI
Investing in real estate requires a thorough understanding of the numbers. To determine if a property is a "good deal," you need to look beyond just the monthly rent. This calculator helps you evaluate the most critical metrics for rental success.
Key Metrics Explained
Cash Flow: This is the net amount of money moving in and out of your business each month. It is calculated as Gross Rent – (Mortgage + Taxes + Insurance + Maintenance). Positive cash flow is essential for long-term sustainability.
Cap Rate (Capitalization Rate): This measures the property's natural rate of return without considering financing. It is calculated as Net Operating Income (NOI) / Purchase Price. It allows you to compare different properties on an apples-to-apples basis.
Cash on Cash Return: This is the ratio of annual before-tax cash flow to the total amount of cash invested. It is the most realistic measure of your actual "out of pocket" return.
Example Calculation
If you buy a home for $200,000 with 20% down ($40,000) and it rents for $1,800, your expenses might look like this:
Expense Item
Amount
Mortgage (P&I)
$1,011
Taxes & Insurance
$300
Maintenance Reserve
$150
Net Monthly Cash Flow
$339
function calculateROI() {
// Get Inputs
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var propertyTaxes = parseFloat(document.getElementById('propertyTaxes').value) || 0;
var insurance = parseFloat(document.getElementById('insurance').value) || 0;
var maintenance = parseFloat(document.getElementById('maintenance').value) || 0;
// Calculations
var downPaymentAmount = purchasePrice * (downPercent / 100);
var loanAmount = purchasePrice – downPaymentAmount;
var totalCashInvested = downPaymentAmount + closingCosts;
// Monthly Mortgage (P&I)
var monthlyInterest = (interestRate / 100) / 12;
var numberOfPayments = 30 * 12; // Standard 30 year
var monthlyMortgage = 0;
if (interestRate > 0) {
monthlyMortgage = loanAmount * (monthlyInterest * Math.pow(1 + monthlyInterest, numberOfPayments)) / (Math.pow(1 + monthlyInterest, numberOfPayments) – 1);
} else {
monthlyMortgage = loanAmount / numberOfPayments;
}
// Monthly Cash Flow
var totalExpenses = monthlyMortgage + propertyTaxes + insurance + maintenance;
var monthlyCashFlow = monthlyRent – totalExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// Cap Rate (NOI / Purchase Price)
// NOI = Annual Income – Operating Expenses (Excluding Mortgage)
var annualOperatingExpenses = (propertyTaxes + insurance + maintenance) * 12;
var netOperatingIncome = (monthlyRent * 12) – annualOperatingExpenses;
var capRate = (netOperatingIncome / purchasePrice) * 100;
// Cash on Cash Return (Annual Cash Flow / Total Cash Invested)
var cashOnCash = (annualCashFlow / totalCashInvested) * 100;
// Display Results
document.getElementById('resultsArea').style.display = 'block';
document.getElementById('resMortgage').innerText = '$' + monthlyMortgage.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCashFlow').innerText = '$' + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCapRate').innerText = capRate.toFixed(2) + '%';
document.getElementById('resCoC').innerText = cashOnCash.toFixed(2) + '%';
// Color coding for cash flow
if (monthlyCashFlow < 0) {
document.getElementById('resCashFlow').style.color = '#e74c3c';
} else {
document.getElementById('resCashFlow').style.color = '#27ae60';
}
}