Percentage of time property sits empty (standard is 5-10%).
Capitalization Rate (Cap Rate)0.00%
Net Operating Income (NOI)$0.00
Effective Gross Income$0.00
Total Expenses$0.00
What is a Cap Rate Calculator?
A Cap Rate Calculator is an essential tool for real estate investors used to evaluate the profitability of an investment property. The Capitalization Rate (Cap Rate) measures the rate of return on a real estate investment property based on the income that the property is expected to generate.
Unlike other metrics like Cash-on-Cash Return, the Cap Rate focuses specifically on the property's natural ability to generate income, independent of how the purchase is financed. This makes it the industry standard for comparing different properties apples-to-apples.
How the Cap Rate Formula Works
The calculation is relatively straightforward but requires accurate inputs to be meaningful. The core formula is:
Cap Rate = Net Operating Income (NOI) / Current Market Value (or Purchase Price)
Key Components of the Calculation:
Gross Rental Income: The total income the property produces if fully rented for the entire year.
Vacancy Rate: An allowance for periods when units are empty. A standard conservative estimate is 5-10%.
Operating Expenses: These include property taxes, insurance, property management fees, maintenance, utilities paid by the owner, and landscaping. Note: Mortgage payments (principal and interest) are excluded from operating expenses when calculating NOI.
Net Operating Income (NOI): Calculated as (Gross Income – Vacancy Loss) – Operating Expenses.
What is a Good Cap Rate?
There is no single "good" Cap Rate, as it depends heavily on the market, the asset class, and the risk level. However, here are general guidelines for 2024:
4% – 6%: Common in high-demand, low-risk areas (Tier 1 cities). Properties here appreciate faster but yield lower immediate cash flow.
6% – 8%: Often considered a healthy balance between risk and return for residential multifamily properties.
8% – 12%+: Typical in riskier markets or rural areas where property appreciation is lower, but immediate cash flow is higher.
Why Use This Calculator?
Using our accurate Cap Rate Calculator helps you quickly screen properties. If a seller lists a property at $500,000 claiming it makes $50,000 a year, but fails to mention $20,000 in expenses, the true Cap Rate isn't 10%—it's 6%. This tool helps you uncover the real numbers before you make an offer.
function calculateCapRate() {
// 1. Get input values
var priceInput = document.getElementById("propertyPrice").value;
var incomeInput = document.getElementById("grossIncome").value;
var expenseInput = document.getElementById("operatingExpenses").value;
var vacancyInput = document.getElementById("vacancyRate").value;
// 2. Parse values to floats
var price = parseFloat(priceInput);
var grossIncome = parseFloat(incomeInput);
var expenses = parseFloat(expenseInput);
var vacancyRate = parseFloat(vacancyInput);
// 3. Validation
if (isNaN(price) || price <= 0) {
alert("Please enter a valid Property Purchase Price.");
return;
}
if (isNaN(grossIncome) || grossIncome < 0) {
alert("Please enter a valid Annual Gross Income.");
return;
}
if (isNaN(expenses) || expenses < 0) {
expenses = 0;
}
if (isNaN(vacancyRate) || vacancyRate < 0) {
vacancyRate = 0;
}
// 4. Perform Calculations
// Calculate Vacancy Loss
var vacancyLoss = grossIncome * (vacancyRate / 100);
// Effective Gross Income (Income after vacancy)
var effectiveIncome = grossIncome – vacancyLoss;
// Net Operating Income (NOI)
var noi = effectiveIncome – expenses;
// Cap Rate Formula: (NOI / Price) * 100
var capRate = (noi / price) * 100;
// 5. Update HTML Results
// Format currency helper function
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
document.getElementById("displayCapRate").innerHTML = capRate.toFixed(2) + "%";
document.getElementById("displayNOI").innerHTML = formatter.format(noi);
document.getElementById("displayGross").innerHTML = formatter.format(effectiveIncome);
document.getElementById("displayExpenses").innerHTML = formatter.format(expenses + vacancyLoss); // Showing total deductions (Expenses + Vacancy) helps clarity, or just expenses. Let's stick to just expenses in the row label implies OpEx? No, let's show OpEx.
// Actually, let's update the label logic for displayExpenses to just be OpEx for clarity based on standard definitions,
// or we can show OpEx in the text. Let's stick to the ID 'displayExpenses' showing the input expenses.
document.getElementById("displayExpenses").innerHTML = formatter.format(expenses);
// Show the results section
document.getElementById("resultsSection").style.display = "block";
}