Analyze the profitability of your potential real estate investment. This calculator helps investors estimate monthly cash flow, Cash on Cash (CoC) return, and Net Operating Income (NOI) by accounting for mortgages, vacancies, and operating expenses.
Purchase & Loan Details
Income & Expenses
Variable Expenses (Estimates)
Please fill out all fields with valid numbers.
Net Operating Income (Monthly):
Total Monthly Expenses:
Mortgage Payment (P&I):
Monthly Cash Flow:
Annual Cash Flow:
Cash on Cash Return:
Understanding Rental Property Cash Flow
Cash flow is the lifeblood of real estate investing. It represents the net amount of money moving in and out of a business, or in this case, a rental property. A positive cash flow means the property generates more income than it costs to own and operate, providing you with passive income.
Key Metrics Explained
NOI (Net Operating Income): This is your total income (rent) minus all operating expenses (taxes, insurance, repairs, vacancy), but excluding the mortgage payment. It measures the raw profitability of the asset itself.
Cash Flow: This is what ends up in your pocket. It is calculated by subtracting the debt service (mortgage payment) from the NOI.
Cash on Cash Return (CoC): This percentage shows the return on the actual cash you invested (Down Payment). A CoC of 8-12% is generally considered good in many markets, though this varies by strategy.
How to Estimate Expenses Accurately
One of the biggest mistakes new investors make is underestimating expenses. This calculator includes fields for:
Vacancy Rate: Properties won't be rented 365 days a year. A standard 5-8% deduction helps account for turnover time.
CapEx (Capital Expenditures): Big ticket items like roofs and HVAC systems eventually need replacing. Setting aside 5-10% of rent monthly ensures you have funds when these bills arrive.
Property Management: Even if you self-manage now, accounting for a 10% management fee ensures the deal still works if you decide to hire a professional later.
Why Cash Flow Matters
While appreciation (the property increasing in value) is a powerful wealth builder, it is speculative. Cash flow is immediate. Properties with strong positive cash flow provide financial stability, allowing you to weather market downturns without paying out of pocket to hold the asset.
function calculateRentalCashFlow() {
// Get inputs
var price = parseFloat(document.getElementById('rp_price').value);
var down = parseFloat(document.getElementById('rp_down').value);
var rate = parseFloat(document.getElementById('rp_rate').value);
var term = parseFloat(document.getElementById('rp_term').value);
var rent = parseFloat(document.getElementById('rp_rent').value);
var tax = parseFloat(document.getElementById('rp_tax').value);
var ins = parseFloat(document.getElementById('rp_ins').value);
var hoa = parseFloat(document.getElementById('rp_hoa').value);
var vacRate = parseFloat(document.getElementById('rp_vacancy').value);
var repRate = parseFloat(document.getElementById('rp_repairs').value);
var capexRate = parseFloat(document.getElementById('rp_capex').value);
var pmRate = parseFloat(document.getElementById('rp_pm').value);
// Validation
if (isNaN(price) || isNaN(down) || isNaN(rate) || isNaN(term) || isNaN(rent)) {
document.getElementById('rp_error').style.display = 'block';
document.getElementById('rp_results').style.display = 'none';
return;
}
document.getElementById('rp_error').style.display = 'none';
// Mortgage Calculation
var loanAmount = price – down;
var monthlyRate = (rate / 100) / 12;
var numPayments = term * 12;
var mortgage = 0;
if (rate === 0) {
mortgage = loanAmount / numPayments;
} else {
mortgage = (loanAmount * monthlyRate) / (1 – Math.pow(1 + monthlyRate, -numPayments));
}
// Expense Calculations
var monthlyTax = tax / 12;
var monthlyIns = ins / 12;
var vacancyCost = rent * (vacRate / 100);
var repairsCost = rent * (repRate / 100);
var capexCost = rent * (capexRate / 100);
var pmCost = rent * (pmRate / 100);
var totalOperatingExpenses = monthlyTax + monthlyIns + hoa + vacancyCost + repairsCost + capexCost + pmCost;
// Net Operating Income (NOI)
// Effective Gross Income = Rent – Vacancy
// NOI = Effective Gross Income – (Operating Expenses excluding Vacancy which was already deducted from Gross, or treat vacancy as expense)
// Standard approach: NOI = (Rent – Vacancy) – (Other Expenses)
// In my calc variable 'totalOperatingExpenses' includes vacancy cost, so:
// NOI = Rent – Total Operating Expenses.
var noi = rent – totalOperatingExpenses;
// Cash Flow
var monthlyCashFlow = noi – mortgage;
var annualCashFlow = monthlyCashFlow * 12;
// Cash on Cash Return
// Investment Basis = Down Payment (Simplified, ignores closing costs unless we add field)
var cashOnCash = 0;
if (down > 0) {
cashOnCash = (annualCashFlow / down) * 100;
}
// Formatting
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
// Update DOM
document.getElementById('res_noi').innerHTML = formatter.format(noi);
document.getElementById('res_expenses').innerHTML = formatter.format(totalOperatingExpenses);
document.getElementById('res_mortgage').innerHTML = formatter.format(mortgage);
var cfElement = document.getElementById('res_cashflow');
cfElement.innerHTML = formatter.format(monthlyCashFlow);
cfElement.style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#c0392b';
document.getElementById('res_annual_cf').innerHTML = formatter.format(annualCashFlow);
var cocElement = document.getElementById('res_coc');
cocElement.innerHTML = cashOnCash.toFixed(2) + "%";
cocElement.style.color = cashOnCash >= 0 ? '#27ae60' : '#c0392b';
document.getElementById('rp_results').style.display = 'block';
}