Calculate Cap Rate, Cash on Cash Return, and Monthly Cash Flow.
Purchase Information
Loan Details
Income & Expenses
Investment Performance
Cash on Cash Return0.00%
Cap Rate0.00%
Monthly Cash Flow$0.00
Net Operating Income (NOI)$0.00
Monthly Mortgage$0.00
Total Cash Invested$0.00
Understanding Your Rental Property ROI
Investing in real estate requires precise calculations to ensure a property will generate profit. This Rental Property ROI Calculator helps investors determine the viability of a potential purchase by analyzing key performance metrics.
Key Metrics Explained
Cash on Cash Return (CoC): This is perhaps the most important metric for investors. It measures the annual cash income earned on the cash you actually invested (Down Payment + Closing Costs). A CoC of 8-12% is generally considered good in many markets.
Cap Rate (Capitalization Rate): This measures the property's natural rate of return assuming it was bought with all cash. It helps compare properties regardless of financing. Calculated as Net Operating Income / Purchase Price.
Net Operating Income (NOI): This is your total annual revenue minus all necessary operating expenses (property taxes, insurance, management, maintenance), but before mortgage payments.
Cash Flow: The money left in your pocket after paying all operating expenses and the mortgage. Positive cash flow is essential for sustainable investing.
How to Improve Your ROI
If the numbers above aren't looking favorable, consider these strategies:
Negotiate Purchase Price: Lowering your entry cost immediately boosts Cap Rate and CoC return.
Increase Rent: Look for value-add opportunities like cosmetic renovations to justify higher monthly rent.
Reduce Operating Expenses: Shop for cheaper insurance or self-manage the property to save on management fees.
Refinance: If interest rates drop, refinancing can lower your monthly mortgage payment, directly increasing cash flow.
function calculateRentalROI() {
// 1. Get Input Values
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var downPercent = 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 annualExpenses = parseFloat(document.getElementById('annualExpenses').value);
// Validation to prevent NaN errors
if (isNaN(purchasePrice) || isNaN(monthlyRent)) {
alert("Please enter valid numbers for Price and Rent.");
return;
}
// 2. Perform Calculations
// Loan Calculations
var downPaymentAmount = purchasePrice * (downPercent / 100);
var loanAmount = purchasePrice – downPaymentAmount;
var totalCashInvested = downPaymentAmount + closingCosts;
// Mortgage Payment Calculation (Principal & Interest)
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var monthlyMortgage = 0;
if (interestRate === 0) {
monthlyMortgage = loanAmount / numberOfPayments;
} else {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
}
// Annual Calculations
var annualGrossIncome = monthlyRent * 12;
var annualMortgagePayment = monthlyMortgage * 12;
// NOI (Net Operating Income) = Income – Operating Expenses (Excluding Mortgage)
var noi = annualGrossIncome – annualExpenses;
// Cash Flow = NOI – Mortgage
var annualCashFlow = noi – annualMortgagePayment;
var monthlyCashFlow = annualCashFlow / 12;
// Cap Rate = (NOI / Purchase Price) * 100
var capRate = (noi / purchasePrice) * 100;
// Cash on Cash Return = (Annual Cash Flow / Total Cash Invested) * 100
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// 3. Update UI
// Helper function for currency formatting
var fmtMoney = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
document.getElementById('resCoC').innerText = cocReturn.toFixed(2) + "%";
document.getElementById('resCoC').style.color = cocReturn >= 0 ? "#2b6cb0" : "#e53e3e"; // Red if negative
document.getElementById('resCapRate').innerText = capRate.toFixed(2) + "%";
document.getElementById('resMonthlyFlow').innerText = fmtMoney.format(monthlyCashFlow);
document.getElementById('resMonthlyFlow').style.color = monthlyCashFlow >= 0 ? "#2d3748" : "#e53e3e";
document.getElementById('resNOI').innerText = fmtMoney.format(noi);
document.getElementById('resMortgage').innerText = fmtMoney.format(monthlyMortgage);
document.getElementById('resInvested').innerText = fmtMoney.format(totalCashInvested);
// Show results section
var resultsDiv = document.getElementById('roiResults');
resultsDiv.classList.add('active');
// Scroll to results
resultsDiv.scrollIntoView({behavior: "smooth", block: "nearest"});
}