Investing in real estate is one of the most reliable ways to build wealth, but simply buying a property doesn't guarantee a profit. To succeed, investors must rigorously analyze the numbers. This Rental Property Cash Flow Calculator helps you determine the viability of a potential investment by calculating key metrics like monthly cash flow, Cap Rate, and Cash-on-Cash Return.
Key Metrics Explained
Cash Flow: This is the profit you pocket every month after all expenses (mortgage, taxes, insurance, repairs) are paid. Positive cash flow is essential for a sustainable long-term investment.
Cap Rate (Capitalization Rate): Cap Rate measures the natural rate of return on the property independent of financing. It is calculated as Net Operating Income (NOI) / Purchase Price. A higher Cap Rate generally indicates a better return, though it may come with higher risk.
Cash-on-Cash Return: This metric calculates the cash income earned on the cash invested. It is calculated as Annual Pre-Tax Cash Flow / Total Cash Invested. This is arguably the most important metric for investors using leverage (mortgages).
How to Use This Calculator
To get the most accurate results, ensure you are inputting realistic data:
Maintenance & Vacancy: Always budget for repairs and empty months. A common rule of thumb is to set aside 10-15% of the monthly rent for these costs.
Closing Costs: Don't forget the upfront costs of buying the property, such as inspection fees, title insurance, and loan origination fees, which typically range from 2% to 5% of the purchase price.
Property Taxes: Tax rates vary significantly by location. Verify local tax rates on the county assessor's website.
Why Cash Flow Matters
While appreciation (the property increasing in value) is a nice bonus, cash flow ensures you can hold the property during market downturns. Properties with negative cash flow are liabilities that drain your savings month over month. Successful investors prioritize positive cash flow to mitigate risk and fund future investments.
function calculateRentalROI() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var termYears = parseFloat(document.getElementById('loanTerm').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var annualTax = parseFloat(document.getElementById('propertyTax').value) || 0;
var annualInsurance = parseFloat(document.getElementById('insurance').value) || 0;
var monthlyHOA = parseFloat(document.getElementById('hoa').value) || 0;
var maintenancePercent = parseFloat(document.getElementById('maintenance').value) || 0;
// 2. Calculate Mortgage
var loanAmount = price – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var numPayments = termYears * 12;
var monthlyMortgage = 0;
if (loanAmount > 0 && interestRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
} else if (loanAmount > 0 && interestRate === 0) {
monthlyMortgage = loanAmount / numPayments;
}
// 3. Calculate Expenses
var monthlyTax = annualTax / 12;
var monthlyInsurance = annualInsurance / 12;
var monthlyMaintenance = monthlyRent * (maintenancePercent / 100);
// Total Operating Expenses (excluding mortgage) – Used for NOI
var monthlyOperatingExpenses = monthlyTax + monthlyInsurance + monthlyHOA + monthlyMaintenance;
// Total Expenses (including mortgage)
var totalMonthlyExpenses = monthlyOperatingExpenses + monthlyMortgage;
// 4. Calculate Returns
var monthlyCashFlow = monthlyRent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// Net Operating Income (NOI) = Annual Income – Annual Operating Expenses
var annualNOI = (monthlyRent * 12) – (monthlyOperatingExpenses * 12);
// Cap Rate = NOI / Price
var capRate = (price > 0) ? (annualNOI / price) * 100 : 0;
// Cash on Cash Return = Annual Cash Flow / Total Cash Invested
var totalCashInvested = downPayment + closingCosts;
var cashOnCash = (totalCashInvested > 0) ? (annualCashFlow / totalCashInvested) * 100 : 0;
// 5. Display Results
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('res-mortgage').innerText = formatter.format(monthlyMortgage);
document.getElementById('res-expenses').innerText = formatter.format(totalMonthlyExpenses);
var cfElement = document.getElementById('res-cashflow');
cfElement.innerText = formatter.format(monthlyCashFlow);
if(monthlyCashFlow >= 0) {
cfElement.className = "result-value highlight-positive";
} else {
cfElement.className = "result-value highlight-negative";
}
document.getElementById('res-noi').innerText = formatter.format(annualNOI);
document.getElementById('res-caprate').innerText = capRate.toFixed(2) + "%";
var cocElement = document.getElementById('res-coc');
cocElement.innerText = cashOnCash.toFixed(2) + "%";
if(cashOnCash >= 0) {
cocElement.className = "result-value highlight-positive";
} else {
cocElement.className = "result-value highlight-negative";
}
// Show results section
document.getElementById('calc-results').style.display = 'block';
}