Analyze the profitability of your potential real estate investment.
Purchase & Loan Details
Income & Expenses
Investment Analysis
Monthly Income:$0.00
Monthly Expenses (Non-Mortgage):$0.00
Monthly Mortgage (P&I):$0.00
Net Monthly Cash Flow:$0.00
Cash on Cash Return:0.00%
Understanding Rental Property Cash Flow
Cash flow is the lifeblood of any rental property investment. It represents the net amount of money left in your pocket after all expenses are paid. A positive cash flow ensures your investment is self-sustaining, while negative cash flow means the property is costing you money every month to hold.
Pro Tip: Experienced investors often look for "Cash on Cash Return" (CoC) rather than just raw dollar amounts. This metric compares your annual cash flow to the actual cash you invested (down payment + closing costs), giving you a true percentage return on your money.
How the Calculation Works
This calculator breaks down your investment into three core components:
Gross Income: The total rent collected plus any other income (like parking fees or laundry).
Operating Expenses: Costs required to run the property. This includes property taxes, insurance, HOA fees, repairs, maintenance reserves, and vacancy allowances.
Debt Service: The principal and interest payments on your mortgage.
Key Metrics Explained
Net Monthly Cash Flow: Calculated as Income – (Operating Expenses + Mortgage). A healthy target for beginners is often $100-$200 per door per month, though this varies by market.
Maintenance & Vacancy: It is critical to set aside a percentage of rent for future repairs and months where the property sits empty. A common rule of thumb is to budget 5-10% of monthly rent for maintenance and another 5% for vacancy.
Why Cash on Cash Return Matters
If you invest $50,000 (down payment + repairs) to buy a property that generates $3,000 in positive cash flow per year, your Cash on Cash return is:
$3,000 / $50,000 = 6%
This allows you to compare real estate returns directly against other investment vehicles like stocks or bonds.
function calculateRental() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPercent = parseFloat(document.getElementById('downPayment').value) || 0;
var rate = parseFloat(document.getElementById('interestRate').value) || 0;
var years = parseFloat(document.getElementById('loanTerm').value) || 0;
var rent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var taxAnnual = parseFloat(document.getElementById('propertyTax').value) || 0;
var insuranceAnnual = parseFloat(document.getElementById('insurance').value) || 0;
var hoa = parseFloat(document.getElementById('hoaFees').value) || 0;
var maintPercent = parseFloat(document.getElementById('maintenance').value) || 0;
var other = parseFloat(document.getElementById('otherCosts').value) || 0;
// 2. Calculate Mortgage (P&I)
var loanAmount = price – (price * (downPercent / 100));
var monthlyRate = rate / 100 / 12;
var numberOfPayments = years * 12;
var mortgagePayment = 0;
if (rate > 0 && years > 0) {
// Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else if (rate === 0 && years > 0) {
mortgagePayment = loanAmount / numberOfPayments;
}
// 3. Calculate Monthly Expenses
var monthlyTax = taxAnnual / 12;
var monthlyIns = insuranceAnnual / 12;
var maintenanceCost = rent * (maintPercent / 100);
var totalOperatingExpenses = monthlyTax + monthlyIns + hoa + maintenanceCost + other;
// 4. Calculate Cash Flow
var totalExpenses = totalOperatingExpenses + mortgagePayment;
var cashFlow = rent – totalExpenses;
// 5. Calculate Cash on Cash Return
// Initial Investment = Down Payment (Assumes closing costs are roughly negligible or included for simplicity in this specific calc logic, or user adds to price)
// CoC = (Annual Cash Flow / Total Cash Invested) * 100
var downPaymentAmount = price * (downPercent / 100);
var annualCashFlow = cashFlow * 12;
var cocReturn = 0;
if (downPaymentAmount > 0) {
cocReturn = (annualCashFlow / downPaymentAmount) * 100;
}
// 6. Display Results
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('resIncome').innerText = formatter.format(rent);
document.getElementById('resOpExp').innerText = formatter.format(totalOperatingExpenses);
document.getElementById('resMortgage').innerText = formatter.format(mortgagePayment);
var flowElem = document.getElementById('resCashFlow');
flowElem.innerText = formatter.format(cashFlow);
// Color coding for positive/negative cash flow
if (cashFlow >= 0) {
flowElem.style.color = "#27ae60";
} else {
flowElem.style.color = "#c0392b";
}
document.getElementById('resCoc').innerText = cocReturn.toFixed(2) + "%";
// Show results div
document.getElementById('results-area').style.display = "block";
}