The Capitalization Rate, commonly known as the Cap Rate, is one of the most fundamental metrics used in commercial real estate (CRE) to evaluate the profitability and return potential of an investment property. Unlike ROI (Return on Investment), which considers mortgage financing, the Cap Rate measures the property's natural rate of return based solely on the income it generates relative to its market value, assuming an all-cash purchase.
The Cap Rate Formula
Calculating the Cap Rate requires two primary figures: the Net Operating Income (NOI) and the current market value (or purchase price) of the property. The formula is:
Cap Rate = (Net Operating Income / Current Market Value) × 100
Step-by-Step Calculation
Calculate Gross Potential Income: Sum all rental income and additional revenue sources (like parking fees, laundry machines, or storage units).
Deduct Vacancy & Credit Losses: Subtract the estimated revenue lost due to vacant units or uncollected rent. This gives you the Effective Gross Income.
Subtract Operating Expenses: Deduct all costs required to run the property (property management, taxes, insurance, maintenance, utilities). Note: Do not include mortgage payments or capital expenditures in this step. This results in the Net Operating Income (NOI).
Divide by Property Value: Divide the NOI by the purchase price or current market value and multiply by 100 to get the percentage.
Example Scenario
Imagine you are analyzing a small apartment complex listed for $1,500,000.
Using the calculator above, the math would be: $83,500 / $1,500,000 = 0.0556, or a 5.56% Cap Rate.
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% – 5%: Often found in high-demand, low-risk areas (Tier 1 cities like NYC or San Francisco). These properties usually appreciate in value but offer lower immediate cash flow.
6% – 8%: Typical for stable assets in secondary markets. A balanced mix of risk and return.
8% – 10%+: Common in riskier markets, older buildings requiring renovation, or rural areas. These offer higher cash flow to compensate for higher risk.
Why Use This Calculator?
Investors use this tool to quickly compare multiple properties against one another. If Property A offers a 4% Cap Rate and Property B offers a 7% Cap Rate, Property B generates more income relative to its price. However, a higher Cap Rate often signals higher risk. Use this calculator as a preliminary screening tool before diving deeper into cash-on-cash return and internal rate of return (IRR) analysis.
function calculateCREMetrics() {
// 1. Get Input Values
var grossIncomeInput = document.getElementById('gross_income').value;
var otherIncomeInput = document.getElementById('other_income').value;
var vacancyRateInput = document.getElementById('vacancy_rate').value;
var expensesInput = document.getElementById('expenses').value;
var marketValueInput = document.getElementById('market_value').value;
// 2. Parse Floats and Handle Defaults
var grossIncome = parseFloat(grossIncomeInput) || 0;
var otherIncome = parseFloat(otherIncomeInput) || 0;
var vacancyRate = parseFloat(vacancyRateInput) || 0;
var expenses = parseFloat(expensesInput) || 0;
var marketValue = parseFloat(marketValueInput) || 0;
// 3. Validation
if (marketValue <= 0) {
alert("Please enter a valid Property Market Value greater than zero.");
return;
}
// 4. Perform Calculations
// Gross Potential Income
var grossPotentialIncome = grossIncome + otherIncome;
// Vacancy Loss
var vacancyLoss = grossPotentialIncome * (vacancyRate / 100);
// Effective Gross Income
var effectiveGrossIncome = grossPotentialIncome – vacancyLoss;
// Net Operating Income (NOI)
var noi = effectiveGrossIncome – expenses;
// Cap Rate
var capRate = (noi / marketValue) * 100;
// 5. Formatter for Currency
var currencyFormatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0
});
// 6. Update DOM
document.getElementById('res_gpi').innerText = currencyFormatter.format(grossPotentialIncome);
document.getElementById('res_egi').innerText = currencyFormatter.format(effectiveGrossIncome);
document.getElementById('res_noi').innerText = currencyFormatter.format(noi);
document.getElementById('res_caprate').innerText = capRate.toFixed(2) + "%";
// Show result area
document.getElementById('result_display').style.display = 'block';
}