Investing in real estate is one of the most reliable ways to build wealth, but not every property is a good deal. To ensure your investment is sound, you need to look beyond the purchase price and analyze the potential return on investment (ROI). This Rental Property ROI Calculator helps investors determine the profitability of a potential rental unit by analyzing cash flow, Cap Rate, and Cash on Cash returns.
Key Metrics Explained
1. Cash on Cash Return
This is arguably the most important metric for rental property investors. It measures the annual pre-tax cash flow relative to the total amount of cash invested. Unlike standard ROI, which might look at total loan value, Cash on Cash tells you exactly how hard your actual dollars (down payment + closing costs) are working for you.
Formula: Annual Cash Flow / Total Cash Invested
2. Capitalization Rate (Cap Rate)
The Cap Rate measures the property's natural rate of return assuming it was bought entirely with cash. It is useful for comparing the profitability of similar properties regardless of financing. A higher Cap Rate generally indicates higher returns but may come with higher risk.
Formula: Net Operating Income (Annual) / Current Market Value
3. Net Operating Income (NOI)
NOI is the total income the property generates after all vacancy losses and operating expenses (taxes, insurance, maintenance) are deducted, but before the mortgage is paid. This figure is crucial for lenders when evaluating a property.
How to Use This Calculator
Purchase Price: The agreed-upon price of the home.
Closing Costs & Rehab: Don't forget to include inspection fees, title insurance, and immediate repairs needed to make the property rent-ready.
Vacancy Rate: No property is occupied 100% of the time. A standard conservative estimate is 5% to 8% (about 2-4 weeks per year).
Monthly Maintenance: Set aside funds for future repairs (roof, HVAC). A common rule of thumb is 1% of the property value per year, or 10% of monthly rent.
What is a "Good" ROI?
While targets vary by investor strategy and market location, many real estate investors aim for a Cash on Cash return of 8-12%. This often outperforms the stock market average while providing the added benefits of property appreciation and tax depreciation.
function calculateRentalROI() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('purchasePrice').value);
var downPay = parseFloat(document.getElementById('downPayment').value);
var closing = parseFloat(document.getElementById('closingCosts').value);
var interest = parseFloat(document.getElementById('interestRate').value);
var term = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var vacancyPct = parseFloat(document.getElementById('vacancyRate').value);
var taxYear = parseFloat(document.getElementById('propertyTax').value);
var insYear = parseFloat(document.getElementById('insurance').value);
var maintMonth = parseFloat(document.getElementById('monthlyMaint').value);
// Error Handling
var errorDiv = document.getElementById('roiError');
var resultsDiv = document.getElementById('roiResults');
if (isNaN(price) || isNaN(downPay) || isNaN(closing) || isNaN(interest) ||
isNaN(term) || isNaN(rent) || isNaN(vacancyPct) || isNaN(taxYear) ||
isNaN(insYear) || isNaN(maintMonth)) {
errorDiv.style.display = 'block';
resultsDiv.style.display = 'none';
return;
}
errorDiv.style.display = 'none';
// 2. Calculations
// Loan Amount
var loanAmount = price – downPay;
// Monthly Mortgage Payment (PI)
// Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
var monthlyRate = (interest / 100) / 12;
var numPayments = term * 12;
var mortgagePayment = 0;
if (monthlyRate > 0) {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
} else {
mortgagePayment = loanAmount / numPayments;
}
// Monthly Expenses Breakdown
var vacancyCost = rent * (vacancyPct / 100);
var taxMonth = taxYear / 12;
var insMonth = insYear / 12;
// Total Operating Expenses (Vac + Tax + Ins + Maint)
// Note: Mortgage is NOT an operating expense for NOI, but is for Cash Flow
var monthlyOpEx = vacancyCost + taxMonth + insMonth + maintMonth;
var totalMonthlyExpenses = monthlyOpEx + mortgagePayment;
// NOI (Net Operating Income)
var monthlyNOI = rent – monthlyOpEx;
var annualNOI = monthlyNOI * 12;
// Cash Flow
var monthlyCashFlow = monthlyNOI – mortgagePayment;
var annualCashFlow = monthlyCashFlow * 12;
// Investments
var totalCashInvested = downPay + closing;
// Returns
var capRate = (annualNOI / price) * 100;
var cashOnCash = 0;
if (totalCashInvested > 0) {
cashOnCash = (annualCashFlow / totalCashInvested) * 100;
}
// 3. Formatting Output
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('resInitialCash').innerHTML = formatter.format(totalCashInvested);
document.getElementById('resMortgage').innerHTML = formatter.format(mortgagePayment);
document.getElementById('resExpenses').innerHTML = formatter.format(totalMonthlyExpenses);
document.getElementById('resNOI').innerHTML = formatter.format(monthlyNOI);
// Color coding cash flow
var cfElem = document.getElementById('resCashFlow');
cfElem.innerHTML = formatter.format(monthlyCashFlow);
cfElem.style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#c0392b';
document.getElementById('resCapRate').innerHTML = capRate.toFixed(2) + "%";
var cocElem = document.getElementById('resCoC');
cocElem.innerHTML = cashOnCash.toFixed(2) + "%";
cocElem.style.color = cashOnCash >= 0 ? '#27ae60' : '#c0392b';
// Show Results
resultsDiv.style.display = 'block';
}