Mortgage Payment Amortization Calculator Extra Payment

Real Estate ROI & Cap Rate Calculator

Analyze your rental property profitability in seconds.

Property Details

(Tax, Ins, Maintenance, Vacancy)

Analysis Summary

Monthly Mortgage Payment: $0.00
Net Operating Income (NOI): $0.00
Monthly Cash Flow: $0.00
Cap Rate: 0.00%
Cash on Cash Return: 0.00%
Pro Tip: A "good" Cap Rate typically ranges between 4% and 10%, depending on the market and property type.

How to Use the Rental Property ROI Calculator

Investing in real estate requires more than just a gut feeling. To ensure a property is a sound investment, you need to crunch the numbers. This calculator helps you determine the most critical metrics used by professional real estate investors: Cap Rate and Cash-on-Cash Return.

Key Definitions

  • Cap Rate (Capitalization Rate): Calculated as Net Operating Income (NOI) divided by the Purchase Price. It represents the natural rate of return for a property without considering financing.
  • Cash-on-Cash Return: The ratio of annual before-tax cash flow to the total amount of cash invested. This is crucial for investors using leverage (mortgages).
  • Net Operating Income (NOI): Your total annual income minus all operating expenses. It does not include mortgage payments or taxes.
  • Monthly Cash Flow: The amount of profit left over after all bills, including the mortgage, have been paid each month.

Example Calculation

Imagine you buy a duplex for $300,000 with a 20% down payment ($60,000). Your monthly rent is $2,500 and your operating expenses (taxes, insurance, and repairs) average $700 per month.

1. Annual NOI: ($2,500 rent – $700 expenses) * 12 = $21,600.
2. Cap Rate: $21,600 / $300,000 = 7.2%.
3. Cash Flow: If your mortgage is $1,500/mo, your net cash flow is $2,500 – $700 – $1,500 = $300/month.

What is a Good ROI?

Most investors aim for a Cash-on-Cash return of 8-12% and a Cap Rate between 5-8% in stable markets. However, these targets can change based on location. In "Appreciation Markets" like San Francisco or NYC, Cap Rates might be lower (2-4%), while in "Cash Flow Markets" like the Midwest, you might see Cap Rates above 10%.

function calculateRentalROI() { var price = parseFloat(document.getElementById("purchasePrice").value); var down = parseFloat(document.getElementById("downPayment").value); var rate = parseFloat(document.getElementById("interestRate").value); var rent = parseFloat(document.getElementById("monthlyRent").value); var expenses = parseFloat(document.getElementById("monthlyExpenses").value); if (isNaN(price) || isNaN(down) || isNaN(rate) || isNaN(rent) || isNaN(expenses)) { alert("Please enter valid numeric values."); return; } // Mortgage Calculation (30 year fixed as standard) var loanAmount = price – down; var monthlyRate = (rate / 100) / 12; var numberOfPayments = 360; // 30 years var mortgagePayment = 0; if (loanAmount > 0) { mortgagePayment = (loanAmount * monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1); } // Net Operating Income (Annual) var annualGrossRent = rent * 12; var annualExpenses = expenses * 12; var annualNOI = annualGrossRent – annualExpenses; // Cap Rate var capRate = (annualNOI / price) * 100; // Monthly Cash Flow var monthlyCashFlow = rent – expenses – mortgagePayment; var annualCashFlow = monthlyCashFlow * 12; // Cash on Cash Return var cocReturn = 0; if (down > 0) { cocReturn = (annualCashFlow / down) * 100; } // Update UI document.getElementById("resMortgage").innerText = "$" + mortgagePayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById("resNOI").innerText = "$" + (annualNOI / 12).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}) + " /mo"; document.getElementById("resCashFlow").innerText = "$" + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById("resCapRate").innerText = capRate.toFixed(2) + "%"; document.getElementById("resCOC").innerText = cocReturn.toFixed(2) + "%"; } // Run calculation on load window.onload = function() { calculateRentalROI(); };

Leave a Comment