Analyze your real estate investment deals instantly. Calculate Monthly Cash Flow, Cash-on-Cash Return, and Cap Rate to make data-driven decisions.
Purchase & Loan Details
Income & Expenses
Variable Expenses (Estimates)
Standard is 5-8%
Percentage of rent set aside
Big ticket items (Roof, HVAC)
Typically 8-10% if professional
Analysis Results
Monthly Mortgage Payment (P&I):$0.00
Total Monthly Expenses:$0.00
Net Operating Income (NOI) / Mo:$0.00
Monthly Cash Flow:$0.00
Cash on Cash Return (CoC)
0.00%
Cap Rate
0.00%
Understanding Rental Property Cash Flow
In real estate investing, Cash Flow is king. It is the net amount of money left in your pocket at the end of every month after all operating expenses and mortgage payments have been made. A positive cash flow indicates a healthy investment that generates passive income, while negative cash flow means the property costs you money to hold.
How to Calculate Rental Cash Flow
The formula for calculating rental property cash flow is straightforward, yet many beginners overlook critical expense categories. The basic formula is:
Cash Flow = Gross Rental Income – Total Expenses
However, "Total Expenses" includes much more than just your mortgage. It must include:
P&I (Principal & Interest): The loan payment to the bank.
Taxes & Insurance: Annual property taxes and hazard insurance premiums.
Vacancy Rate: Properties are rarely occupied 365 days a year. A standard 5-8% deduction accounts for turnover time.
Repairs & CapEx: Budgeting for ongoing maintenance (leaky faucets) and Capital Expenditures (replacing a roof or water heater) is essential for long-term accuracy.
Property Management: Even if you self-manage, you should account for your time or the future cost of hiring a manager (typically 8-10% of rent).
Key Investment Metrics Explained
1. Cash on Cash Return (CoC)
This metric measures the return on the actual cash you invested, not the total loan amount. It tells you how hard your money is working.
Total Cash Invested includes your down payment, closing costs, and immediate rehab costs. A good CoC varies by market, but many investors aim for 8-12%.
2. Cap Rate (Capitalization Rate)
Cap rate measures the property's natural rate of return assuming it was bought with cash (no loan). It helps compare properties regardless of financing.
Cap Rate = (Net Operating Income / Purchase Price) × 100
Net Operating Income (NOI) is revenue minus operating expenses (excluding mortgage payments).
Why Use a Cash Flow Calculator?
Real estate is a numbers game. Emotions should not dictate purchase decisions. By using this calculator, you can stress-test your investment:
What happens if the vacancy rate rises to 10%?
Is the deal still profitable if interest rates go up by 1%?
Does the cash flow cover potential major repairs?
Always input conservative estimates to ensure your investment is safe even in a market downturn.
function calculateRental() {
// Get Inputs
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value);
var downPayment = parseFloat(document.getElementById('downPayment').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTerm = parseFloat(document.getElementById('loanTerm').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value);
var propertyTaxAnnual = parseFloat(document.getElementById('propertyTax').value);
var insuranceAnnual = parseFloat(document.getElementById('insurance').value);
var hoaFees = parseFloat(document.getElementById('hoaFees').value);
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value);
var repairRate = parseFloat(document.getElementById('repairs').value);
var capexRate = parseFloat(document.getElementById('capex').value);
var managementRate = parseFloat(document.getElementById('managementFee').value);
// Validation
if (isNaN(purchasePrice) || isNaN(downPayment) || isNaN(monthlyRent)) {
alert("Please ensure all monetary fields contain valid numbers.");
return;
}
// 1. Calculate Mortgage (Principal + Interest)
var loanAmount = purchasePrice – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var monthlyMortgage = 0;
if (interestRate > 0) {
// Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else {
monthlyMortgage = loanAmount / numberOfPayments;
}
// 2. Calculate Operating Expenses
var vacancyCost = monthlyRent * (vacancyRate / 100);
var repairCost = monthlyRent * (repairRate / 100);
var capexCost = monthlyRent * (capexRate / 100);
var managementCost = monthlyRent * (managementRate / 100);
var taxMonthly = propertyTaxAnnual / 12;
var insuranceMonthly = insuranceAnnual / 12;
var totalOperatingExpenses = taxMonthly + insuranceMonthly + hoaFees + vacancyCost + repairCost + capexCost + managementCost;
// 3. Calculate Totals
var totalMonthlyExpenses = totalOperatingExpenses + monthlyMortgage;
var cashFlow = monthlyRent – totalMonthlyExpenses;
var annualCashFlow = cashFlow * 12;
// NOI = Income – Operating Expenses (No Mortgage)
var noiMonthly = monthlyRent – totalOperatingExpenses;
var noiAnnual = noiMonthly * 12;
// 4. Calculate ROI Metrics
var totalCashInvested = downPayment + closingCosts;
var cashOnCash = 0;
if (totalCashInvested > 0) {
cashOnCash = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (purchasePrice > 0) {
capRate = (noiAnnual / purchasePrice) * 100;
}
// Display Results
document.getElementById('displayMortgage').innerText = formatCurrency(monthlyMortgage);
document.getElementById('displayExpenses').innerText = formatCurrency(totalMonthlyExpenses);
document.getElementById('displayNOI').innerText = formatCurrency(noiMonthly);
var cashFlowEl = document.getElementById('displayCashFlow');
cashFlowEl.innerText = formatCurrency(cashFlow);
if (cashFlow >= 0) {
cashFlowEl.style.color = "#27ae60";
cashFlowEl.classList.remove("negative");
} else {
cashFlowEl.style.color = "#e74c3c";
cashFlowEl.classList.add("negative");
}
document.getElementById('displayCoC').innerText = cashOnCash.toFixed(2) + "%";
document.getElementById('displayCapRate').innerText = capRate.toFixed(2) + "%";
// Show results div
document.getElementById('results').style.display = 'block';
}
function formatCurrency(num) {
return "$" + num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}