Total Mortgage Cost Calculator

Rental Property ROI Calculator

Evaluate the profitability of your real estate investment by calculating cash flow, Cap Rate, and Cash-on-Cash return.

Investment Summary

Monthly Cash Flow $0.00
Cap Rate 0.00%
Cash on Cash Return 0.00%
Total Annual Income $0.00

Understanding Rental Property ROI

Investing in real estate is one of the most reliable ways to build wealth, but only if the numbers make sense. This ROI calculator helps you peel back the layers of a property deal to see if it actually generates profit or if it will become a "money pit."

Key Metrics Explained

  • Monthly Cash Flow: The amount of money left over every month after all expenses and the mortgage are paid. 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 divided by the Purchase Price.
  • Cash-on-Cash Return: This is the ratio of annual before-tax cash flow to the total amount of cash invested (down payment and closing costs). This is often the most important metric for investors using leverage.

Formula Used

NOI = (Annual Rent) – (Annual Taxes + Insurance + Maintenance)
Cap Rate = (NOI / Purchase Price) * 100
Cash-on-Cash = (Annual Cash Flow / Down Payment) * 100

Real Estate ROI Example

Imagine you buy a property for $250,000 with a 20% down payment ($50,000). If the monthly rent is $2,000 and your total monthly expenses (mortgage, tax, insurance, maintenance) equal $1,600, your monthly cash flow is $400. Annually, that is $4,800. Your Cash-on-Cash return would be $4,800 / $50,000 = 9.6%.

function calculateRentalROI() { var purchasePrice = parseFloat(document.getElementById('purchasePrice').value); var downPaymentPct = parseFloat(document.getElementById('downPaymentPercent').value); var interestRate = parseFloat(document.getElementById('interestRate').value); var loanTerm = parseFloat(document.getElementById('loanTerm').value); var monthlyRent = parseFloat(document.getElementById('monthlyRent').value); var annualTax = parseFloat(document.getElementById('annualTax').value); var annualIns = parseFloat(document.getElementById('annualInsurance').value); var monthlyMaint = parseFloat(document.getElementById('monthlyMaint').value); if (isNaN(purchasePrice) || isNaN(monthlyRent)) { alert("Please enter valid numbers for Price and Rent."); return; } var downPayment = purchasePrice * (downPaymentPct / 100); var loanAmount = purchasePrice – downPayment; // Mortgage Calculation (P&I) var monthlyInterest = (interestRate / 100) / 12; var numberOfPayments = loanTerm * 12; var monthlyMortgage = 0; if (interestRate > 0) { monthlyMortgage = loanAmount * (monthlyInterest * Math.pow(1 + monthlyInterest, numberOfPayments)) / (Math.pow(1 + monthlyInterest, numberOfPayments) – 1); } else { monthlyMortgage = loanAmount / numberOfPayments; } // Operating Expenses var monthlyTax = annualTax / 12; var monthlyIns = annualIns / 12; var totalMonthlyExpenses = monthlyMortgage + monthlyTax + monthlyIns + monthlyMaint; // ROI Metrics var monthlyCashFlow = monthlyRent – totalMonthlyExpenses; var annualCashFlow = monthlyCashFlow * 12; var netOperatingIncome = (monthlyRent * 12) – (annualTax + annualIns + (monthlyMaint * 12)); var capRate = (netOperatingIncome / purchasePrice) * 100; var cashOnCash = (annualCashFlow / downPayment) * 100; // Display results document.getElementById('results-box').style.display = 'block'; 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) + '%'; document.getElementById('resAnnualIncome').innerText = '$' + (monthlyRent * 12).toLocaleString(); // Scroll to results document.getElementById('results-box').scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment