Analyze your real estate investment returns, cap rate, and monthly cash flow.
Purchase Information
Loan Details
Rental Income & Expenses
Monthly Cash Flow
Cash on Cash Return
Cap Rate
Net Operating Income (NOI)
Total Monthly Expenses
Monthly Mortgage P&I
Understanding Rental Property Cash Flow Analysis
Investing in real estate is one of the most reliable ways to build wealth, but success hinges on the numbers. Our Rental Property Cash Flow Calculator helps investors determine the profitability of a potential purchase by analyzing income, operating expenses, and financing costs.
Key Metrics Explained
1. Monthly Cash Flow
Cash flow is the net amount of money moving in or out of the rental property business. It is calculated by subtracting total monthly expenses (mortgage, taxes, insurance, HOA, maintenance, vacancy reserves) from the gross monthly rent.
Formula:Cash Flow = Gross Rent – Total Monthly Expenses
Positive cash flow means the property pays for itself and generates profit. Negative cash flow implies you are losing money every month to hold the asset.
2. Cash on Cash Return (CoC)
This metric measures the annual return on the actual cash you invested (down payment + closing costs), expressed as a percentage. It is crucial for comparing the performance of a rental property against other investments like stocks or bonds.
Cap Rate measures the property's natural rate of return assuming it was bought with all cash (no loan). It helps compare the profitability of different properties regardless of financing methods.
Purchase Price: The listing price or offer price for the property.
Down Payment: The percentage of the price you pay upfront. Typically 20-25% for investment properties.
Vacancy & Maintenance: Always budget for these. A standard safe estimate is 5-10% of rent for each category to cover empty months and repairs.
Net Operating Income (NOI): This calculator automatically derives NOI, which is total income minus operating expenses (excluding mortgage payments).
Why is Positive Cash Flow Important?
Positive cash flow provides a safety buffer against market downturns. If property values decrease, a cash-flowing property still generates income and pays down the loan principal. Investors often seek a "Cash on Cash" return of 8-12% or higher, depending on the risk profile of the neighborhood.
function calculateRentalProperty() {
// 1. Get Input Values
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPaymentPercent = parseFloat(document.getElementById('downPaymentPercent').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var loanTerm = parseFloat(document.getElementById('loanTerm').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var annualTaxes = parseFloat(document.getElementById('annualTaxes').value) || 0;
var annualInsurance = parseFloat(document.getElementById('annualInsurance').value) || 0;
var monthlyHOA = parseFloat(document.getElementById('monthlyHOA').value) || 0;
var maintenancePercent = parseFloat(document.getElementById('maintenance').value) || 0;
var vacancyPercent = parseFloat(document.getElementById('vacancy').value) || 0;
// 2. Initial Checks
if (purchasePrice <= 0 || loanTerm 0) {
cashOnCash = (annualCashFlow / totalCashInvested) * 100;
}
// Cap Rate
var capRate = 0;
if (purchasePrice > 0) {
capRate = (annualNOI / purchasePrice) * 100;
}
// 6. Formatting Functions
function formatMoney(num) {
return "$" + num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
function formatPercent(num) {
return num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}) + "%";
}
// 7. Update HTML DOM
var resCashFlow = document.getElementById('resMonthlyCashFlow');
resCashFlow.innerHTML = formatMoney(monthlyCashFlow);
// Color coding for cash flow
if (monthlyCashFlow >= 0) {
resCashFlow.className = "result-value positive";
} else {
resCashFlow.className = "result-value negative";
}
document.getElementById('resCoC').innerHTML = formatPercent(cashOnCash);
document.getElementById('resCapRate').innerHTML = formatPercent(capRate);
document.getElementById('resNOI').innerHTML = formatMoney(annualNOI / 12) + " / mo";
document.getElementById('resTotalExpenses').innerHTML = formatMoney(totalMonthlyExpenses);
document.getElementById('resMortgage').innerHTML = formatMoney(monthlyMortgage);
// Show results section
document.getElementById('results').style.display = "block";
}