Please check your inputs. Ensure all fields contain valid numbers.
Monthly Breakdown
Principal & Interest:—
Total Monthly Expenses:—
Est. Monthly Cash Flow:—
Annual Performance
Net Operating Income (NOI):—
Cap Rate:—
Cash on Cash Return (CoC):—
Understanding Real Estate Investment Metrics
Investing in rental properties is one of the most effective ways to build long-term wealth, but success relies heavily on the numbers. This Rental Property Cash Flow Calculator is designed to help investors analyze deals quickly and accurately. Whether you are looking at a single-family home or a multi-unit property, understanding your metrics is crucial.
What is Cash Flow?
Cash flow is the profit you bring in each month after all operating expenses and mortgage payments have been made. It is calculated by taking your total monthly rental income and subtracting your total monthly expenses (mortgage, taxes, insurance, HOA, and maintenance reserves). A positive cash flow indicates a healthy investment that pays you to own it, while negative cash flow implies the property costs you money to hold.
Key Metrics Explained
NOI (Net Operating Income): This represents the annual profitability of the property before mortgage payments. It is calculated as Gross Income minus Operating Expenses. It is a pure measure of the property's ability to generate revenue.
Cap Rate (Capitalization Rate): This metric helps you compare the return of different properties regardless of financing. It is calculated by dividing the NOI by the purchase price. A higher cap rate generally indicates a better return, though often with higher risk.
Cash on Cash Return (CoC): This is arguably the most important metric for investors using leverage (loans). It measures the annual cash return on the actual cash invested (down payment + closing costs). For example, if you invest $50,000 cash and receive $5,000 in annual cash flow, your CoC return is 10%.
How to Use This Calculator
To get the most accurate results, ensure you research local property tax rates and realistic insurance premiums. Don't forget to account for "hidden" costs like vacancy rates (typically 5-8%) and maintenance reserves (usually 5-10% of rent) to ensure your cash flow projections hold up in the real world.
function calculateRental() {
// Get Inputs
var price = parseFloat(document.getElementById("purchasePrice").value);
var closing = parseFloat(document.getElementById("closingCosts").value) || 0;
var downPercent = parseFloat(document.getElementById("downPaymentPercent").value);
var interest = parseFloat(document.getElementById("interestRate").value);
var term = parseFloat(document.getElementById("loanTerm").value);
var rent = parseFloat(document.getElementById("monthlyRent").value);
var tax = parseFloat(document.getElementById("annualTaxes").value) || 0;
var insurance = parseFloat(document.getElementById("annualInsurance").value) || 0;
var hoa = parseFloat(document.getElementById("monthlyHOA").value) || 0;
var maint = parseFloat(document.getElementById("maintenance").value) || 0;
// Validation
if (isNaN(price) || isNaN(downPercent) || isNaN(interest) || isNaN(term) || isNaN(rent)) {
document.getElementById("errorMsg").style.display = "block";
document.getElementById("results").style.display = "none";
return;
} else {
document.getElementById("errorMsg").style.display = "none";
}
// Calculations
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var monthlyRate = (interest / 100) / 12;
var numPayments = term * 12;
// Mortgage P&I
var monthlyMortgage = 0;
if (interest === 0) {
monthlyMortgage = loanAmount / numPayments;
} else {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
}
// Monthly Expenses
var monthlyTax = tax / 12;
var monthlyIns = insurance / 12;
var totalMonthlyExpensesWithoutMortgage = monthlyTax + monthlyIns + hoa + maint;
var totalMonthlyOutflow = monthlyMortgage + totalMonthlyExpensesWithoutMortgage;
// Cash Flow
var monthlyCashFlow = rent – totalMonthlyOutflow;
var annualCashFlow = monthlyCashFlow * 12;
// NOI (Annual Income – Annual Expenses, excluding financing)
var annualExpensesWithoutMortgage = totalMonthlyExpensesWithoutMortgage * 12;
var annualNOI = (rent * 12) – annualExpensesWithoutMortgage;
// Cap Rate (NOI / Purchase Price)
var capRate = (annualNOI / price) * 100;
// Cash on Cash Return (Annual Cash Flow / Total Cash Invested)
var totalCashInvested = downPaymentAmount + closing;
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// Display Results
document.getElementById("results").style.display = "block";
document.getElementById("resMortgage").innerText = "$" + monthlyMortgage.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resExpenses").innerText = "$" + totalMonthlyExpensesWithoutMortgage.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}) + " + Mtg";
var cfElement = document.getElementById("resCashFlow");
cfElement.innerText = "$" + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
cfElement.style.color = monthlyCashFlow >= 0 ? "#27ae60" : "#c0392b";
document.getElementById("resNOI").innerText = "$" + annualNOI.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resCapRate").innerText = capRate.toFixed(2) + "%";
var cocElement = document.getElementById("resCoC");
cocElement.innerText = cocReturn.toFixed(2) + "%";
cocElement.style.color = cocReturn >= 0 ? "#27ae60" : "#c0392b";
}