Rental Property Cash Flow Calculator
/* Calculator Styles */
.rpc-wrapper {
max-width: 800px;
margin: 0 auto;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
color: #333;
line-height: 1.6;
padding: 20px;
background: #fff;
border: 1px solid #e0e0e0;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
.rpc-header {
text-align: center;
margin-bottom: 30px;
background: #f8f9fa;
padding: 20px;
border-radius: 6px;
}
.rpc-header h2 {
margin: 0;
color: #2c3e50;
font-size: 24px;
}
.rpc-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
@media (max-width: 600px) {
.rpc-grid {
grid-template-columns: 1fr;
}
}
.rpc-input-group {
margin-bottom: 15px;
}
.rpc-input-group label {
display: block;
font-weight: 600;
margin-bottom: 5px;
font-size: 14px;
color: #555;
}
.rpc-input-group input, .rpc-input-group select {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
}
.rpc-input-group input:focus {
border-color: #3498db;
outline: none;
box-shadow: 0 0 0 2px rgba(52,152,219,0.2);
}
.rpc-section-title {
grid-column: 1 / -1;
font-size: 18px;
font-weight: bold;
color: #2c3e50;
margin-top: 10px;
padding-bottom: 10px;
border-bottom: 2px solid #eee;
}
.rpc-btn-container {
grid-column: 1 / -1;
text-align: center;
margin-top: 20px;
}
.rpc-calculate-btn {
background-color: #27ae60;
color: white;
border: none;
padding: 15px 30px;
font-size: 18px;
font-weight: bold;
border-radius: 6px;
cursor: pointer;
transition: background 0.3s;
width: 100%;
max-width: 300px;
}
.rpc-calculate-btn:hover {
background-color: #219150;
}
.rpc-results {
grid-column: 1 / -1;
background: #f0f7ff;
padding: 20px;
border-radius: 6px;
margin-top: 20px;
border: 1px solid #cce5ff;
display: none;
}
.rpc-results.active {
display: block;
}
.rpc-result-row {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: 1px solid #dfe6ed;
}
.rpc-result-row:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.rpc-result-label {
font-weight: 500;
}
.rpc-result-value {
font-weight: 700;
color: #2c3e50;
}
.rpc-result-highlight {
font-size: 20px;
color: #27ae60;
}
.rpc-content {
margin-top: 40px;
padding-top: 20px;
border-top: 2px solid #eee;
}
.rpc-content h3 {
color: #2c3e50;
font-size: 22px;
margin-top: 0;
}
.rpc-content h4 {
color: #34495e;
font-size: 18px;
margin-top: 20px;
}
.rpc-content p, .rpc-content li {
color: #555;
font-size: 16px;
}
.rpc-faq-item {
margin-bottom: 20px;
}
.rpc-faq-question {
font-weight: bold;
color: #2c3e50;
cursor: pointer;
}
.rpc-error {
color: #c0392b;
text-align: center;
grid-column: 1 / -1;
display: none;
}
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "What is Cash on Cash Return?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Cash on Cash Return is a metric used to calculate the annual return an investor makes 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."
}
}, {
"@type": "Question",
"name": "How do I calculate Net Operating Income (NOI)?",
"acceptedAnswer": {
"@type": "Answer",
"text": "NOI is calculated by subtracting all operating expenses from the total revenue generated by the property. Operating expenses include taxes, insurance, maintenance, and vacancy, but exclude principal and interest payments on loans."
}
}, {
"@type": "Question",
"name": "What is a good Cap Rate for a rental property?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A good Cap Rate generally falls between 4% and 10%, depending on the location and risk level. Higher cap rates typically indicate higher risk or lower-demand areas, while lower cap rates are common in stable, high-demand markets."
}
}]
}
Rental Property Cash Flow Calculator
Analyze your real estate investment deal instantly.
Purchase & Loan Details
30 Years
20 Years
15 Years
10 Years
Income & Expenses
Please check your input values.
Investment Analysis
Monthly Cash Flow:$0.00
Cash on Cash ROI:0.00%
Cap Rate:0.00%
Net Operating Income (NOI) / Yr:$0.00
Total Cash Needed to Buy:$0.00
Monthly Mortgage Payment:$0.00
Total Monthly Expenses:$0.00
Understanding Rental Property Investment Analysis
Investing in real estate is a powerful way to build wealth, but simply buying a property and renting it out doesn't guarantee a profit. To succeed, you need to understand the numbers. This Rental Property Cash Flow Calculator helps you determine if a potential deal is an asset or a liability.
Key Metrics Explained
Cash Flow: This is the net amount of money moving in or out of the investment each month. Positive cash flow means the rent covers all expenses (mortgage, taxes, insurance, repairs) with money left over.
Cash on Cash Return (CoC ROI): This measures the annual return on the actual cash you invested (down payment + closing costs). It's a critical metric for comparing real estate returns against other investment vehicles like stocks. A CoC return of 8-12% is generally considered solid.
Cap Rate (Capitalization Rate): This measures the property's natural rate of return assuming it was bought with all cash. It helps you compare the profitability of properties regardless of how they are financed.
Net Operating Income (NOI): This is your total income minus operating expenses. Note that NOI does not include mortgage payments. Lenders look at NOI to determine if the property generates enough income to cover the debt.
How to Estimate Expenses
One of the biggest mistakes new investors make is underestimating expenses. Always account for:
Vacancy: Properties won't be rented 365 days a year. A 5% to 8% vacancy rate is a standard conservative estimate.
Maintenance: Roofs leak and toilets break. Setting aside 5% to 10% of monthly rent for repairs is prudent.
Property Management: Even if you manage it yourself, account for your time. Professional managers typically charge 8-10% of the rent.
Use this calculator to adjust your offer price. If the cash flow is negative at the asking price, lower your offer until the numbers work for your investment goals.
function calculateRentalROI() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('rpc_price').value);
var downPercent = parseFloat(document.getElementById('rpc_down_percent').value);
var closingCosts = parseFloat(document.getElementById('rpc_closing_costs').value);
var interestRate = parseFloat(document.getElementById('rpc_interest').value);
var loanTermYears = parseFloat(document.getElementById('rpc_term').value);
var rent = parseFloat(document.getElementById('rpc_rent').value);
var taxYearly = parseFloat(document.getElementById('rpc_tax').value);
var insuranceYearly = parseFloat(document.getElementById('rpc_insurance').value);
var hoaMonthly = parseFloat(document.getElementById('rpc_hoa').value);
var maintPercent = parseFloat(document.getElementById('rpc_maint').value);
var vacancyPercent = parseFloat(document.getElementById('rpc_vacancy').value);
// Error Handling
if (isNaN(price) || isNaN(rent) || isNaN(interestRate)) {
document.getElementById('rpc_error_msg').style.display = 'block';
document.getElementById('rpc_result_box').classList.remove('active');
return;
}
document.getElementById('rpc_error_msg').style.display = 'none';
// 2. Calculate Mortgage
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var numPayments = loanTermYears * 12;
var mortgagePayment = 0;
if (interestRate === 0) {
mortgagePayment = loanAmount / numPayments;
} else {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
}
// 3. Calculate Monthly Expenses
var vacancyCost = rent * (vacancyPercent / 100);
var maintCost = rent * (maintPercent / 100);
var taxMonthly = taxYearly / 12;
var insuranceMonthly = insuranceYearly / 12;
var totalMonthlyOperatingExpenses = taxMonthly + insuranceMonthly + hoaMonthly + vacancyCost + maintCost;
var totalMonthlyExpenses = totalMonthlyOperatingExpenses + mortgagePayment;
// 4. Calculate Cash Flow & NOI
var monthlyCashFlow = rent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// NOI = Annual Income – Operating Expenses (excluding mortgage)
var annualOperatingExpenses = totalMonthlyOperatingExpenses * 12;
var annualIncome = rent * 12;
var noi = annualIncome – annualOperatingExpenses;
// 5. Calculate Returns
var totalCashInvested = downPayment + closingCosts;
var cocRoi = 0;
if (totalCashInvested > 0) {
cocRoi = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (noi / price) * 100;
}
// 6. Formatting Helper
var fmtCurrency = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
var fmtPercent = new Intl.NumberFormat('en-US', { style: 'decimal', minimumFractionDigits: 2, maximumFractionDigits: 2 });
// 7. Display Results
document.getElementById('res_cashflow').innerText = fmtCurrency.format(monthlyCashFlow);
document.getElementById('res_coc').innerText = fmtPercent.format(cocRoi) + "%";
document.getElementById('res_cap').innerText = fmtPercent.format(capRate) + "%";
document.getElementById('res_noi').innerText = fmtCurrency.format(noi);
document.getElementById('res_total_cash').innerText = fmtCurrency.format(totalCashInvested);
document.getElementById('res_mortgage').innerText = fmtCurrency.format(mortgagePayment);
document.getElementById('res_expenses').innerText = fmtCurrency.format(totalMonthlyExpenses);
// Color coding for cash flow
if (monthlyCashFlow >= 0) {
document.getElementById('res_cashflow').style.color = "#27ae60";
} else {
document.getElementById('res_cashflow').style.color = "#c0392b";
}
document.getElementById('rpc_result_box').classList.add('active');
}