Analyze the profitability of your potential real estate investment.
Purchase & Loan Details
Income & Expenses
Variable Expenses (Estimates)
Monthly Cash Flow
$0.00
Net Operating Income (NOI)$0.00 / mo
Total Monthly Expenses$0.00
Mortgage Payment (P&I)$0.00
Cash on Cash Return0.00%
Cap Rate0.00%
Total Cash Invested$0.00
Understanding Rental Property Cash Flow
Cash flow is the lifeblood of any rental property investment. It represents the net amount of cash moving into or out of your business after all expenses have been paid. A positive cash flow indicates that the property is generating income, while a negative cash flow means the property is costing you money to hold.
How to Interpret the Results
Net Operating Income (NOI): This is your total income minus operating expenses (taxes, insurance, maintenance, vacancy) but before the mortgage payment. It measures the property's potential profitability regardless of financing.
Cash on Cash Return (CoC): This is perhaps the most critical metric for investors. It measures the annual cash income earned on the cash you actually invested (Down Payment + Closing Costs). A CoC return of 8-12% is often considered good in many markets.
Cap Rate: The Capitalization Rate compares the NOI to the purchase price. It helps compare the profitability of properties regardless of how they are financed.
The 50% Rule and 1% Rule
Experienced investors often use "rule of thumb" metrics for quick screening. The 50% Rule suggests that operating expenses (excluding mortgage) will average about 50% of the gross rent over time. The 1% Rule suggests that the monthly rent should be at least 1% of the purchase price to be cash flow positive. While this calculator provides exact numbers based on your inputs, these rules can help in initial property selection.
Expenses to Watch Out For
Many new investors fail to account for "phantom" expenses like Vacancy and CapEx (Capital Expenditures like replacing a roof or HVAC). Even if your unit is occupied today, you must set aside a percentage of rent (typically 5-10%) for future vacancies and major repairs to ensure your long-term cash flow calculation is accurate.
function calculateCashFlow() {
// Get Input Values
var price = parseFloat(document.getElementById('rpc_price').value) || 0;
var closingCosts = parseFloat(document.getElementById('rpc_closing_costs').value) || 0;
var downPercent = parseFloat(document.getElementById('rpc_down_percent').value) || 0;
var interestRate = parseFloat(document.getElementById('rpc_interest').value) || 0;
var loanTerm = parseFloat(document.getElementById('rpc_term').value) || 0;
var monthlyRent = parseFloat(document.getElementById('rpc_rent').value) || 0;
var annualTax = parseFloat(document.getElementById('rpc_tax').value) || 0;
var annualInsurance = parseFloat(document.getElementById('rpc_insurance').value) || 0;
var monthlyHOA = parseFloat(document.getElementById('rpc_hoa').value) || 0;
var vacancyRate = parseFloat(document.getElementById('rpc_vacancy').value) || 0;
var repairsRate = parseFloat(document.getElementById('rpc_repairs').value) || 0;
var capexRate = parseFloat(document.getElementById('rpc_capex').value) || 0;
var mgmtRate = parseFloat(document.getElementById('rpc_mgmt').value) || 0;
// Calculate Loan Details
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var monthlyRate = (interestRate / 100) / 12;
var totalMonths = loanTerm * 12;
var monthlyMortgage = 0;
if (loanAmount > 0 && interestRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalMonths)) / (Math.pow(1 + monthlyRate, totalMonths) – 1);
} else if (loanAmount > 0 && interestRate === 0) {
monthlyMortgage = loanAmount / totalMonths;
}
// Calculate Monthly Expenses
var monthlyTax = annualTax / 12;
var monthlyInsurance = annualInsurance / 12;
var vacancyCost = monthlyRent * (vacancyRate / 100);
var repairsCost = monthlyRent * (repairsRate / 100);
var capexCost = monthlyRent * (capexRate / 100);
var mgmtCost = monthlyRent * (mgmtRate / 100);
var totalOperatingExpenses = monthlyTax + monthlyInsurance + monthlyHOA + vacancyCost + repairsCost + capexCost + mgmtCost;
var totalExpenses = totalOperatingExpenses + monthlyMortgage;
// Calculate Metrics
var noi = monthlyRent – totalOperatingExpenses;
var cashFlow = monthlyRent – totalExpenses;
var annualCashFlow = cashFlow * 12;
var totalInvested = downPaymentAmount + closingCosts;
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = ((noi * 12) / price) * 100;
}
// Formatting Function
function formatCurrency(num) {
return '$' + num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
// Display Results
document.getElementById('res_cash_flow').innerHTML = formatCurrency(cashFlow);
document.getElementById('res_cash_flow').style.color = cashFlow >= 0 ? '#27ae60' : '#c0392b';
document.getElementById('res_noi').innerHTML = formatCurrency(noi);
document.getElementById('res_total_expenses').innerHTML = formatCurrency(totalExpenses);
document.getElementById('res_mortgage').innerHTML = formatCurrency(monthlyMortgage);
document.getElementById('res_invested').innerHTML = formatCurrency(totalInvested);
document.getElementById('res_coc').innerHTML = cocReturn.toFixed(2) + '%';
document.getElementById('res_coc').style.color = cocReturn >= 0 ? '#27ae60' : '#c0392b';
document.getElementById('res_cap_rate').innerHTML = capRate.toFixed(2) + '%';
// Show Results Section
document.getElementById('rpc_results').style.display = 'block';
}