Analyze the potential profitability of your real estate investment.
Purchase Info
Income & Expenses
Investment Analysis
Monthly Principal & Interest:–
Total Monthly Expenses:–
Net Operating Income (Monthly):–
Monthly Cash Flow:–
Cash on Cash Return (ROI):–
Cap Rate:–
Understanding Rental Property Cash Flow
Success in real estate investing depends heavily on the numbers. Unlike buying a personal home, where emotion plays a role, buying a rental property is a business decision. The Rental Property Cash Flow Calculator helps investors determine if a property will generate a profit (positive cash flow) or cost money to hold (negative cash flow) on a monthly basis.
How to Calculate Rental Cash Flow
Cash flow is the net amount of money moving into and out of a business. In real estate, it is calculated as follows:
Gross Income: Total rent collected plus any other income (laundry, parking).
Operating Expenses: Costs required to run the property, such as taxes, insurance, maintenance, vacancy reserves, and HOA fees.
Debt Service: The monthly mortgage payment (Principal and Interest).
The formula is simple: Cash Flow = Gross Income – (Operating Expenses + Debt Service).
Key Metrics Explained
Cash on Cash Return (CoC)
This metric measures the annual return the investor made on the property in relation to the amount of mortgage paid during the same year. It is calculated by dividing the annual pre-tax cash flow by the total cash invested (Down payment + Closing costs + Rehab costs). A CoC return of 8-12% is generally considered good by many investors.
Cap Rate (Capitalization Rate)
Cap Rate indicates the rate of return that is expected to be generated on a real estate investment property. It is calculated by dividing the Net Operating Income (NOI) by the property asset value. Importantly, Cap Rate excludes mortgage costs, allowing you to compare the profitability of properties regardless of how they are financed.
Why Use a Vacancy and Maintenance Buffer?
Novice investors often make the mistake of assuming 100% occupancy and zero repairs. This calculator includes inputs for Vacancy Rate and Maintenance. Setting aside 5-10% of monthly rent for each ensures you have funds available when a tenant leaves or a water heater breaks, preventing cash flow shock.
function calculateRental() {
// 1. Get Input Values
var price = parseFloat(document.getElementById("purchasePrice").value);
var downPercent = parseFloat(document.getElementById("downPayment").value);
var interestRate = parseFloat(document.getElementById("interestRate").value);
var term = parseFloat(document.getElementById("loanTerm").value);
var closingCosts = parseFloat(document.getElementById("closingCosts").value);
var rent = parseFloat(document.getElementById("rentalIncome").value);
var taxYearly = parseFloat(document.getElementById("propertyTax").value);
var insuranceYearly = parseFloat(document.getElementById("insurance").value);
var hoa = parseFloat(document.getElementById("hoaFees").value);
var maintPercent = parseFloat(document.getElementById("maintenance").value);
var vacancyPercent = parseFloat(document.getElementById("vacancy").value);
// Validation
if (isNaN(price) || isNaN(rent) || isNaN(interestRate)) {
alert("Please enter valid numbers for Price, Rent, and Interest Rate.");
return;
}
// 2. Loan Calculations
var downAmount = price * (downPercent / 100);
var loanAmount = price – downAmount;
var monthlyRate = (interestRate / 100) / 12;
var numPayments = term * 12;
// Mortgage P&I Formula
var monthlyPI = 0;
if (interestRate === 0) {
monthlyPI = loanAmount / numPayments;
} else {
monthlyPI = (loanAmount * monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
}
// 3. Expenses Calculation
var taxMonthly = taxYearly / 12;
var insMonthly = insuranceYearly / 12;
var maintMonthly = rent * (maintPercent / 100);
var vacancyMonthly = rent * (vacancyPercent / 100);
// Total Operating Expenses (Without Mortgage)
var operatingExpenses = taxMonthly + insMonthly + hoa + maintMonthly + vacancyMonthly;
// Total Expenses (With Mortgage)
var totalExpenses = operatingExpenses + monthlyPI;
// 4. Returns Calculation
var monthlyCashFlow = rent – totalExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// NOI (Net Operating Income) = Income – Operating Expenses (excludes mortgage)
var monthlyNOI = rent – operatingExpenses;
var annualNOI = monthlyNOI * 12;
var totalCashInvested = downAmount + closingCosts;
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = (annualNOI / price) * 100;
// 5. Display Results
document.getElementById("results").style.display = "block";
document.getElementById("displayMortgage").innerText = "$" + monthlyPI.toFixed(2);
document.getElementById("displayExpenses").innerText = "$" + totalExpenses.toFixed(2);
document.getElementById("displayNOI").innerText = "$" + monthlyNOI.toFixed(2);
var cfElement = document.getElementById("displayCashFlow");
var cfBox = document.getElementById("cashFlowBox");
cfElement.innerText = "$" + monthlyCashFlow.toFixed(2);
// Styling for positive/negative cash flow
if (monthlyCashFlow >= 0) {
cfBox.classList.remove("negative-flow");
cfBox.classList.add("highlight-result");
cfElement.style.color = "#27ae60";
} else {
cfBox.classList.add("negative-flow");
cfElement.style.color = "#c0392b";
}
document.getElementById("displayCoC").innerText = cocReturn.toFixed(2) + "%";
document.getElementById("displayCapRate").innerText = capRate.toFixed(2) + "%";
}