Analyze your potential real estate investment returns instantly.
Purchase Information
Income & Expenses
Monthly Net Cash Flow:$0.00
Monthly Mortgage Payment (P&I):$0.00
Total Monthly Expenses (w/o Mortgage):$0.00
Net Operating Income (NOI) / Year:$0.00
Cash on Cash Return:0.00%
Cap Rate:0.00%
Understanding Your Rental Property Numbers
Successful real estate investing relies on accurate math, not just intuition. This Rental Property Cash Flow Calculator breaks down the essential metrics needed to evaluate a potential deal.
How to Read the Results
Monthly Net Cash Flow: This is your "take-home" profit after all expenses and mortgage payments are made. Positive cash flow means the property pays for itself and generates income. Negative cash flow implies you will need to contribute money monthly to keep the property running.
Net Operating Income (NOI): A critical metric for valuation. It represents the total income minus operating expenses, excluding mortgage payments. This number shows the profitability of the property itself, regardless of financing.
Cash on Cash Return: This percentage shows the return on the actual cash you invested (down payment). For example, if you put down $50,000 and make $5,000 a year in cash flow, your Cash on Cash return is 10%.
Cap Rate (Capitalization Rate): Calculated by dividing the NOI by the property's purchase price. It allows you to compare the profitability of different properties irrespective of how they were financed.
Common "Hidden" Expenses
Many new investors fail to account for non-fixed costs. This calculator includes inputs for Maintenance (saving for future repairs like a new roof or water heater) and Vacancy (money lost when the property sits empty between tenants). A standard rule of thumb is to allocate 5-10% of rent for each.
function calculateCashFlow() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('rpc_price').value);
var downPct = parseFloat(document.getElementById('rpc_down').value);
var rate = parseFloat(document.getElementById('rpc_rate').value);
var term = parseFloat(document.getElementById('rpc_term').value);
var rent = parseFloat(document.getElementById('rpc_rent').value);
var taxYear = parseFloat(document.getElementById('rpc_tax').value);
var insYear = parseFloat(document.getElementById('rpc_ins').value);
var hoaMonth = parseFloat(document.getElementById('rpc_hoa').value);
var maintPct = parseFloat(document.getElementById('rpc_maint').value);
var vacPct = parseFloat(document.getElementById('rpc_vacancy').value);
// Validation
if (isNaN(price) || isNaN(downPct) || isNaN(rate) || isNaN(term) || isNaN(rent)) {
alert("Please enter valid numbers in all fields.");
return;
}
// 2. Calculations
// Mortgage Math
var downAmount = price * (downPct / 100);
var loanAmount = price – downAmount;
var monthlyRate = (rate / 100) / 12;
var totalPayments = term * 12;
var mortgagePayment = 0;
if (rate > 0) {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalPayments)) / (Math.pow(1 + monthlyRate, totalPayments) – 1);
} else {
mortgagePayment = loanAmount / totalPayments;
}
// Operating Expenses
var monthlyTax = taxYear / 12;
var monthlyIns = insYear / 12;
var monthlyMaint = rent * (maintPct / 100);
var monthlyVac = rent * (vacPct / 100);
var totalOperatingExpenses = monthlyTax + monthlyIns + hoaMonth + monthlyMaint + monthlyVac;
// Key Metrics
var netOperatingIncomeMonthly = rent – totalOperatingExpenses;
var cashFlowMonthly = netOperatingIncomeMonthly – mortgagePayment;
var annualCashFlow = cashFlowMonthly * 12;
var annualNOI = netOperatingIncomeMonthly * 12;
// ROI Metrics
var totalCashInvested = downAmount; // Simplified (could add closing costs)
var cashOnCash = 0;
if (totalCashInvested > 0) {
cashOnCash = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
// 3. Display Results
var flowEl = document.getElementById('rpc_res_flow');
flowEl.innerHTML = formatMoney(cashFlowMonthly);
// Style positive/negative cash flow
if (cashFlowMonthly >= 0) {
flowEl.className = 'rpc-result-value rpc-highlight';
} else {
flowEl.className = 'rpc-result-value rpc-highlight-neg';
}
document.getElementById('rpc_res_mortgage').innerHTML = formatMoney(mortgagePayment);
document.getElementById('rpc_res_expenses').innerHTML = formatMoney(totalOperatingExpenses);
document.getElementById('rpc_res_noi').innerHTML = formatMoney(annualNOI);
document.getElementById('rpc_res_coc').innerHTML = cashOnCash.toFixed(2) + "%";
document.getElementById('rpc_res_cap').innerHTML = capRate.toFixed(2) + "%";
// Show result box
document.getElementById('rpc_result_box').style.display = 'block';
}
function formatMoney(num) {
return '$' + num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}