Project your long-term occupancy costs with compound annual increases.
Compound Annual
Fixed (Simple)
Total Rent Paid Over Term$0.00
Final Monthly Rent$0.00
Year
Monthly Rent
Annual Total
Increase
How Commercial Lease Escalations Work
Most commercial real estate leases include an "escalation clause." This provision allows the landlord to increase the rent periodically to account for inflation, rising property taxes, and operating expenses. For a business owner, understanding these costs is vital for long-term financial planning.
Compound vs. Fixed Escalations
There are two primary ways rent increases are structured:
Compound Annual Escalation: The most common type. The percentage increase is applied to the previous year's rent. For example, a 3% increase on a $5,000 rent becomes $5,150 in year two, and the year three increase is calculated based on $5,150, not the original $5,000.
Fixed (Simple) Escalation: The increase is based on the initial base rent throughout the entire term. This is generally more favorable for the tenant over a long period.
Example Calculation
If you start with a $3,000 monthly rent and a 3% annual compound escalation over 5 years:
Year 1: $3,000/mo ($36,000/yr)
Year 2: $3,090/mo ($37,080/yr) – 3% increase from Year 1
Year 3: $3,182.70/mo ($38,192.40/yr) – 3% increase from Year 2
By the end of a 10-year lease, a 3% compound increase results in a monthly rent that is roughly 30% higher than your starting point.
Important Lease Terms to Watch
Beyond the percentage, look for CPI Adjustments. Some leases tie increases to the Consumer Price Index (CPI). These can be unpredictable, so many tenants negotiate a "cap" (e.g., "CPI increase not to exceed 4%"). Always use a calculator to model the "worst-case" scenario before signing a long-term commercial agreement.
function calculateLease() {
var baseRent = parseFloat(document.getElementById('baseRent').value);
var escRate = parseFloat(document.getElementById('escRate').value) / 100;
var term = parseInt(document.getElementById('leaseTerm').value);
var type = document.getElementById('rentType').value;
if (isNaN(baseRent) || isNaN(escRate) || isNaN(term) || baseRent <= 0 || term <= 0) {
alert("Please enter valid positive numbers for all fields.");
return;
}
var tableBody = document.getElementById('tableBody');
tableBody.innerHTML = "";
var totalPaid = 0;
var currentMonthly = baseRent;
var initialMonthly = baseRent;
for (var i = 1; i <= term; i++) {
var annualTotal = currentMonthly * 12;
var increaseAmt = i === 1 ? 0 : (currentMonthly – (type === 'compound' ? prevMonthly : initialMonthly));
var row = tableBody.insertRow();
row.insertCell(0).innerHTML = "Year " + i;
row.insertCell(1).innerHTML = "$" + currentMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
row.insertCell(2).innerHTML = "$" + annualTotal.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
row.insertCell(3).innerHTML = i === 1 ? "-" : "+$" + (currentMonthly – prevMonthly).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
totalPaid += annualTotal;
var prevMonthly = currentMonthly;
// Calculate next year's rent
if (type === 'compound') {
currentMonthly = currentMonthly * (1 + escRate);
} else {
currentMonthly = initialMonthly * (1 + (escRate * i));
}
}
document.getElementById('totalRentPaid').innerHTML = "$" + totalPaid.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('finalMonthlyRent').innerHTML = "$" + prevMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resultsArea').style.display = 'block';
}