Building Code Compliance Checklist Calculator

ANALife Services AuthorityNational Calculator Authority›Building Code Compliance Checklist Calculator

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Building Code Compliance Checklist Calculator

Evaluate key building code compliance metrics including occupancy load, egress width, minimum plumbing fixtures, and fire separation distance based on IBC 2021 standards.

Occupancy Type

Assembly (A) – 15 sq ft/person Business (B) – 100 sq ft/person Educational (E) – 20 sq ft/person Mercantile (M) – 60 sq ft/person Storage (S) – 300 sq ft/person

Gross Floor Area (sq ft)

Number of Stories

Construction Type

Type I-A (Non-combustible, 3-hr) Type I-B (Non-combustible, 2-hr) Type II-A (Non-combustible, 1-hr) Type II-B (Non-combustible, 0-hr) Type III-A (Combustible exterior, 1-hr) Type III-B (Combustible exterior, 0-hr) Type V-A (Wood frame, 1-hr) Type V-B (Wood frame, 0-hr)

Sprinkler System Installed?

Yes – NFPA 13 Compliant No

Number of Exit Doors

Width of Each Exit Door (inches)

Fire Separation Distance (feet) – lot line to exterior wall

Calculate Compliance

function buiCalc() { const resultDiv = document.getElementById('bui-result');

// --- Inputs --- const occupancyType = document.getElementById('bui-occupancy-type').value; const floorArea = parseFloat(document.getElementById('bui-floor-area').value); const stories = parseInt(document.getElementById('bui-stories').value); const constructType = document.getElementById('bui-construction-type').value; const sprinklered = document.getElementById('bui-sprinklered').value; const exitDoors = parseInt(document.getElementById('bui-exit-doors').value); const doorWidth = parseFloat(document.getElementById('bui-door-width').value); const sepDist = parseFloat(document.getElementById('bui-separation-distance').value);

// --- Validation --- if (isNaN(floorArea) || floorArea ⚠ Please enter a valid gross floor area.'; return; } if (isNaN(stories) || stories ⚠ Please enter a valid number of stories (≥ 1).'; return; } if (isNaN(exitDoors) || exitDoors ⚠ Please enter a valid number of exit doors (≥ 1).'; return; } if (isNaN(doorWidth) || doorWidth ⚠ Door width must be at least 28 inches (IBC 1005.1).'; return; } if (isNaN(sepDist) || sepDist ⚠ Please enter a valid fire separation distance (≥ 0 ft).'; return; }

// ============================================================ // 1. OCCUPANCY LOAD (IBC Table 1004.5) // ============================================================ const loadFactors = { assembly: 15, business: 100, educational: 20, mercantile: 60, storage: 300 }; const loadFactor = loadFactors[occupancyType]; const occupancyLoad = Math.ceil(floorArea / loadFactor);

// ============================================================ // 2. REQUIRED EGRESS WIDTH (IBC 1005.1) // 0.2 in/person for doors (sprinklered) or 0.2 in/person (non-sprinklered same for doors) // Minimum door width: 32 in clear (≈ 36 in nominal) // ============================================================ const widthFactor = 0.2; // inches per person (doors) const requiredTotalWidth = occupancyLoad * widthFactor; // total egress width (inches) const providedTotalWidth = exitDoors * doorWidth; const minDoorWidth = 32; // inches clear (IBC 1010.1.1) const egressPass = (providedTotalWidth >= requiredTotalWidth) && (doorWidth >= minDoorWidth);

// Minimum number of exits (IBC 1006.3.3) let minExits = 2; if (occupancyLoad > 500 && occupancyLoad 1000) minExits = 4; const exitsPass = exitDoors >= minExits;

// ============================================================ // 3. PLUMBING FIXTURES (IBC Table 2902.1 – simplified) // Water closets: 1 per 25 occupants (assembly), 1 per 50 (business/mercantile) // Lavatories: 1 per 40 (assembly), 1 per 80 (business) // ============================================================ let wcRatio, lavRatio; if (occupancyType === 'assembly') { wcRatio = 25; lavRatio = 40; } else if (occupancyType === 'educational') { wcRatio = 30; lavRatio = 40; } else { wcRatio = 50; lavRatio = 80; } const minWC = Math.ceil(occupancyLoad / wcRatio); const minLav = Math.ceil(occupancyLoad / lavRatio);

// ============================================================
// 4. FIRE SEPARATION DISTANCE & EXTERIOR WALL RATING
// (IBC Table 602 / 705.5)
// 10 ft → 0-hr
// ============================================================
let requiredWallRating;
if (sepDist ✔ PASS'
'✘ FAIL'; }

const overallColor = allPass ? '#27ae60' : '#e74c3c'; const overallText = allPass ? '✔ OVERALL: COMPLIANT' : '✘ OVERALL: NON-COMPLIANT – Review flagged items';

resultDiv.innerHTML = ` ### ${overallText}

Check Calculated Required Status

Occupancy Load (IBC 1004.5) ${occupancyLoad} persons 1 per ${loadFactor} sq ft ℹ️ Info

Egress Width (IBC 1005.1) ${providedTotalWidth.toFixed(1)} in (${exitDoors} doors × ${doorWidth} in) ≥ ${requiredTotalWidth.toFixed(1)} in total; ≥ ${minDoorWidth} in/door ${badge(egressPass)}

Number of Exits (IBC 1006.3) ${exitDoors} exits provided ≥ ${minExits} exits required ${badge(exitsPass)}

Min. Water Closets (IBC 2902.1) — ≥ ${minWC} WC (1 per ${wcRatio} persons) ℹ️ Verify

Min. Lavatories (IBC 2902.1) — ≥ ${minLav} lav (1 per ${lavRatio} persons) ℹ️ Verify

Exterior Wall Rating (IBC 602/705) Sep. dist. = ${sepDist} ft ${requiredWallRating} ℹ️ Verify

Opening Protection (IBC 705.8) Sep. dist. = ${sepDist} ft ${openingProtection} ℹ️ Verify

Allowable Stories (IBC 504) ${stories} stories ≤ ${allowedStories === 999 ? 'Unlimited' : allowedStories} stories (Type ${constructType}${sprinklered === 'yes' ? ' + sprinkler' : ''}) ${badge(storiesPass)}

Allowable Floor Area (IBC 506) ${floorArea.toLocaleString()} sq ft ≤ ${allowedArea === 999999 ? 'Unlimited' : allowedArea.toLocaleString()} sq ft (Type ${constructType}${sprinklered === 'yes' ? ' + sprinkler' : ''}) ${badge(areaPass)}

Note: This tool provides a preliminary screening only. Always consult the adopted local building code and a licensed design professional for official compliance determination.

`; }

#### Formulas Used

#### Assumptions & References

More Calculators

Read Next

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References