Real Estate Cap Rate Calculator
:root {
–primary-color: #2c3e50;
–secondary-color: #27ae60;
–accent-color: #3498db;
–bg-light: #f8f9fa;
–border-color: #ddd;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333;
margin: 0;
padding: 20px;
}
.calculator-container {
max-width: 800px;
margin: 0 auto;
background: #fff;
border: 1px solid var(–border-color);
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0,0,0,0.05);
padding: 25px;
}
.calc-header {
text-align: center;
margin-bottom: 30px;
border-bottom: 2px solid var(–bg-light);
padding-bottom: 15px;
}
.calc-header h2 {
color: var(–primary-color);
margin: 0 0 10px 0;
}
.input-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
@media (max-width: 600px) {
.input-grid {
grid-template-columns: 1fr;
}
}
.form-group {
margin-bottom: 15px;
}
.form-group label {
display: block;
margin-bottom: 5px;
font-weight: 600;
color: var(–primary-color);
}
.form-group input {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
}
.form-group input:focus {
border-color: var(–accent-color);
outline: none;
}
.section-title {
grid-column: 1 / -1;
font-size: 1.1em;
font-weight: bold;
color: var(–secondary-color);
margin-top: 10px;
border-bottom: 1px solid #eee;
padding-bottom: 5px;
}
.calc-btn {
grid-column: 1 / -1;
background: var(–primary-color);
color: #fff;
border: none;
padding: 15px;
font-size: 18px;
border-radius: 4px;
cursor: pointer;
width: 100%;
margin-top: 10px;
transition: background 0.3s;
}
.calc-btn:hover {
background: #34495e;
}
#results-area {
margin-top: 30px;
background: var(–bg-light);
padding: 20px;
border-radius: 8px;
display: none;
}
.result-card {
text-align: center;
margin-bottom: 20px;
}
.result-value {
font-size: 2.5em;
font-weight: bold;
color: var(–secondary-color);
}
.result-label {
font-size: 0.9em;
text-transform: uppercase;
letter-spacing: 1px;
color: #666;
}
.breakdown-row {
display: flex;
justify-content: space-between;
padding: 8px 0;
border-bottom: 1px solid #e9ecef;
}
.breakdown-row:last-child {
border-bottom: none;
font-weight: bold;
color: var(–primary-color);
}
.article-content {
max-width: 800px;
margin: 40px auto;
padding: 0 20px;
}
.article-content h2 {
color: var(–primary-color);
margin-top: 30px;
}
.article-content ul {
padding-left: 20px;
}
.article-content li {
margin-bottom: 10px;
}
Capitalization Rate (Cap Rate)
0.00%
Gross Income
$0.00
– Vacancy Loss
$0.00
= Effective Gross Income
$0.00
– Total Operating Expenses
$0.00
= Net Operating Income (NOI)
$0.00
What is Cap Rate in Real Estate?
The Capitalization Rate, or "Cap Rate," is one of the most fundamental metrics used in real estate investing to evaluate the profitability of an investment property. It represents the ratio between the Net Operating Income (NOI) produced by the asset and its original capital cost (or current market value).
Essentially, the Cap Rate indicates the potential annual return on investment if the property were purchased with all cash, excluding financing costs.
How to Calculate Cap Rate
The formula for Cap Rate is straightforward but requires accurate data regarding income and expenses. The formula is:
Cap Rate = (Net Operating Income / Property Value) × 100
Steps to Calculate:
- Step 1: Calculate Gross Income. This includes all rental income and other potential income sources (laundry, parking, etc.).
- Step 2: Subtract Vacancy. Properties are rarely 100% occupied. Deduct a percentage (usually 5-10%) for vacancy losses.
- Step 3: Calculate Operating Expenses. Sum up taxes, insurance, management fees, maintenance, utilities, and landscaping. Note: Do not include mortgage payments in NOI.
- Step 4: Determine Net Operating Income (NOI). Subtract operating expenses from the effective gross income.
- Step 5: Divide by Purchase Price. Divide the NOI by the current property value or purchase price to get the decimal rate, then multiply by 100 for the percentage.
What is a Good Cap Rate?
There is no single "good" Cap Rate as it varies heavily by location, property type, and the current economic environment. Generally:
- 4% to 5%: Common in high-demand, low-risk areas (e.g., NYC, San Francisco). These properties usually appreciate faster.
- 6% to 8%: Often considered a healthy balance between risk and return in stabilized suburban markets.
- 10%+: Found in riskier markets or older properties requiring significant maintenance. Higher return often implies higher risk.
Why Net Operating Income (NOI) Matters
Using our calculator above, you'll see a breakdown focusing on NOI. NOI is critical because it reveals the raw earning power of the property before debt service (mortgage). Lenders look closely at NOI to determine if the property generates enough cash to cover the loan payments (Debt Service Coverage Ratio).
function calculateCapRate() {
// 1. Get Values
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value) || 0;
var grossIncome = parseFloat(document.getElementById('grossIncome').value) || 0;
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value) || 0;
// Expenses
var propTax = parseFloat(document.getElementById('propTax').value) || 0;
var insurance = parseFloat(document.getElementById('insurance').value) || 0;
var management = parseFloat(document.getElementById('management').value) || 0;
var maintenance = parseFloat(document.getElementById('maintenance').value) || 0;
var utilities = parseFloat(document.getElementById('utilities').value) || 0;
// Validation to prevent division by zero or negative logic
if (purchasePrice <= 0) {
alert("Please enter a valid Purchase Price greater than 0.");
return;
}
// 2. Logic Calculations
// Calculate Vacancy Loss
var vacancyLoss = grossIncome * (vacancyRate / 100);
// Effective Gross Income
var effectiveGrossIncome = grossIncome – vacancyLoss;
// Total Operating Expenses
var totalExpenses = propTax + insurance + management + maintenance + utilities;
// Net Operating Income (NOI)
var noi = effectiveGrossIncome – totalExpenses;
// Cap Rate Calculation
var capRateDecimal = noi / purchasePrice;
var capRatePercent = capRateDecimal * 100;
// 3. Update DOM with Results
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
document.getElementById('displayCapRate').innerText = capRatePercent.toFixed(2) + "%";
document.getElementById('displayGross').innerText = formatter.format(grossIncome);
document.getElementById('displayVacancy').innerText = "-" + formatter.format(vacancyLoss);
document.getElementById('displayEffective').innerText = formatter.format(effectiveGrossIncome);
document.getElementById('displayExpenses').innerText = "-" + formatter.format(totalExpenses);
document.getElementById('displayNOI').innerText = formatter.format(noi);
// Show the results section
document.getElementById('results-area').style.display = 'block';
// Optional: Change color based on ROI health
var capDisplay = document.getElementById('displayCapRate');
if (capRatePercent 8) {
capDisplay.style.color = "#27ae60"; // Green for high
} else {
capDisplay.style.color = "#e67e22"; // Orange for mid
}
}