Analyze your real estate investment deal to determine monthly cash flow, Cap Rate, and ROI.
Estimated Monthly Cash Flow
$0.00
Monthly Mortgage (P&I):$0.00
Total Monthly Expenses:$0.00
Net Operating Income (Annual):$0.00
Cap Rate:0.00%
Cash on Cash Return:0.00%
How to Calculate Rental Property ROI
Investing in rental property is a powerful way to build wealth, but understanding the numbers is critical to avoiding bad deals. This Rental Property Cash Flow Calculator helps investors evaluate the profitability of a potential real estate purchase by breaking down income, expenses, and debt service.
Key Metrics Explained
When analyzing a deal, you shouldn't rely on just one number. Here is what the metrics above mean for your investment:
Monthly Cash Flow: This is your profit after all bills are paid. It is calculated as Monthly Rent – (Mortgage + Taxes + Insurance + Maintenance). Positive cash flow ensures the property pays for itself.
Cap Rate (Capitalization Rate): Measures the natural rate of return on the property independent of debt. It is calculated by dividing the Annual Net Operating Income (NOI) by the Purchase Price. A higher Cap Rate generally indicates a better return, though often with higher risk.
Cash on Cash Return (CoC): This is arguably the most important metric for investors using leverage. It measures the annual cash return on the actual money you invested (Down Payment). A CoC return of 8-12% is often considered a strong target for buy-and-hold investors.
The 1% Rule
A common rule of thumb in real estate is the "1% Rule," which states that the monthly rent should be at least 1% of the purchase price. While this calculator provides a more detailed analysis, the 1% rule serves as a quick filter. For example, a $200,000 home should rent for at least $2,000/month to likely be cash-flow positive.
Estimating Expenses
Many new investors underestimate expenses. Beyond the mortgage, ensure you account for vacancy (typically 5-8%), repairs (5-10%), and Capital Expenditures (replacing roofs, HVAC, etc.). This calculator includes a field for "Monthly Maint/HOA/CapEx" to help you factor these costs into your bottom line.
function calculateRentalROI() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value);
var down = parseFloat(document.getElementById('downPayment').value);
var rate = parseFloat(document.getElementById('interestRate').value);
var term = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var tax = parseFloat(document.getElementById('annualTax').value);
var insurance = parseFloat(document.getElementById('annualInsurance').value);
var otherCosts = parseFloat(document.getElementById('monthlyCosts').value);
// Validation
if (isNaN(price) || isNaN(down) || isNaN(rate) || isNaN(term) || isNaN(rent) || isNaN(tax) || isNaN(insurance) || isNaN(otherCosts)) {
alert("Please enter valid numbers in all fields.");
return;
}
// 2. Calculate Mortgage (P&I)
var loanAmount = price – down;
var monthlyRate = (rate / 100) / 12;
var numPayments = term * 12;
// Handle edge case of 0% interest
var mortgagePayment = 0;
if (rate === 0) {
mortgagePayment = loanAmount / numPayments;
} else {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
}
// 3. Calculate Monthly Expenses
var monthlyTax = tax / 12;
var monthlyIns = insurance / 12;
var totalMonthlyExpenses = mortgagePayment + monthlyTax + monthlyIns + otherCosts;
// 4. Calculate Key Metrics
var monthlyCashFlow = rent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// NOI = Annual Income – Operating Expenses (Excluding Debt Service)
// Operating Expenses = Tax + Insurance + Maintenance/HOA (otherCosts)
var annualOperatingExpenses = tax + insurance + (otherCosts * 12);
var annualNOI = (rent * 12) – annualOperatingExpenses;
var capRate = (annualNOI / price) * 100;
var cashOnCash = (annualCashFlow / down) * 100;
// 5. Update HTML
document.getElementById('resultMortgage').innerHTML = "$" + mortgagePayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resultExpenses').innerHTML = "$" + totalMonthlyExpenses.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
var cashFlowElement = document.getElementById('resultCashFlow');
cashFlowElement.innerHTML = "$" + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Color coding for Cash Flow
if (monthlyCashFlow >= 0) {
cashFlowElement.style.color = "#27ae60";
} else {
cashFlowElement.style.color = "#c0392b";
}
document.getElementById('resultNOI').innerHTML = "$" + annualNOI.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resultCapRate').innerHTML = capRate.toFixed(2) + "%";
document.getElementById('resultCoC').innerHTML = cashOnCash.toFixed(2) + "%";
// Show results div
document.getElementById('rpcResults').style.display = "block";
}