*Do not include mortgage payments (principal & interest)
Please enter valid positive numbers for Price and Income.
Gross Potential Income:$0.00
Vacancy Loss:-$0.00
Effective Gross Income:$0.00
Operating Expenses:-$0.00
Net Operating Income (NOI)
$0.00
Cap Rate
0.00%
What is a Cap Rate Calculator?
The Capitalization Rate, or "Cap Rate," is one of the most fundamental metrics in commercial and investment real estate. It represents the rate of return on a real estate investment property based on the income that the property is expected to generate. This specific calculator helps investors determine the potential profitability of an asset before factoring in financing costs.
Unlike a Cash-on-Cash return calculator, the Cap Rate focuses purely on the property's performance, ignoring the mortgage structure. This makes it an excellent tool for comparing the intrinsic value of different properties against one another.
The Cap Rate Formula
The math behind the capitalization rate is straightforward but requires accurate data inputs. The formula is:
Cap Rate = Net Operating Income (NOI) / Current Market Value (Purchase Price)
Step-by-Step Calculation Logic
Gross Potential Income: The total rental income plus any other income (like coin-operated laundry or parking fees) assuming the property is 100% occupied.
Vacancy Loss: A deduction to account for periods where units are empty. A standard conservative estimate is often 5% to 8%.
Effective Gross Income: The gross income minus the vacancy loss.
Operating Expenses: All costs to run the building (taxes, insurance, utilities, property management, repairs). Crucially, this does NOT include mortgage payments.
Net Operating Income (NOI): Effective Gross Income minus Operating Expenses.
What is a "Good" Cap Rate?
There is no single number that defines a "good" cap rate, as it varies heavily by location, asset class, and interest rates. However, here are general guidelines:
4% – 6%: Common in high-demand "Class A" areas (e.g., downtown New York or San Francisco). Lower risk, lower return.
6% – 8%: Often seen in suburban areas or stabilized assets in secondary markets. A balanced risk/reward profile.
8% – 10%+: Found in riskier markets, older buildings ("Class C"), or rural areas. Higher potential return comes with higher management intensity and risk.
Example Calculation
Let's assume you are looking at a 4-plex apartment building:
First, we calculate the NOI: $60,000 – $3,000 – $20,000 = $37,000.
Next, we divide NOI by the Price: $37,000 / $500,000 = 0.074.
This results in a 7.4% Cap Rate.
function calculateCapRate() {
// 1. Get Input Values
var price = document.getElementById('propertyPrice').value;
var grossRent = document.getElementById('annualGrossIncome').value;
var otherIncome = document.getElementById('otherIncome').value;
var vacancyRate = document.getElementById('vacancyRate').value;
var expenses = document.getElementById('operatingExpenses').value;
// 2. Validate Inputs
// We use parseFloat to ensure we are doing math, not string concatenation
var priceVal = parseFloat(price);
var grossRentVal = parseFloat(grossRent);
var otherIncomeVal = parseFloat(otherIncome);
var vacancyRateVal = parseFloat(vacancyRate);
var expensesVal = parseFloat(expenses);
// Handle empty or invalid inputs
if (isNaN(priceVal) || priceVal 0) {
capRate = (noi / priceVal) * 100;
}
// 4. Update the DOM with Results
// Helper for formatting currency
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('displayGrossIncome').innerHTML = formatter.format(grossPotentialIncome);
document.getElementById('displayVacancyLoss').innerHTML = "-" + formatter.format(vacancyLoss);
document.getElementById('displayEffectiveIncome').innerHTML = formatter.format(effectiveGrossIncome);
document.getElementById('displayExpenses').innerHTML = "-" + formatter.format(expensesVal);
document.getElementById('displayNOI').innerHTML = formatter.format(noi);
// Format Cap Rate to 2 decimal places
document.getElementById('displayCapRate').innerHTML = capRate.toFixed(2) + "%";
// Show the results area
document.getElementById('resultsArea').style.display = 'block';
}