Building Code Compliance Checklist Calculator
ANA›Life Services Authority›National 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
- Occupancy Load (IBC 1004.5): OL = ⌈Gross Floor Area ÷ Load Factor⌉ — Load factors: Assembly 15, Business 100, Educational 20, Mercantile 60, Storage 300 sq ft/person.
- Required Egress Width (IBC 1005.1): Wrequired = OL × 0.2 in/person (doors). Minimum individual door width = 32 in clear (IBC 1010.1.1).
- Minimum Exits (IBC 1006.3.3): OL ≤ 500 → 2 exits; 501–1000 → 3 exits; > 1000 → 4 exits.
- Plumbing Fixtures (IBC Table 2902.1): Min WC = ⌈OL ÷ ratio⌉; Min Lav = ⌈OL ÷ ratio⌉. Ratios vary by occupancy.
- Fire Separation Distance (IBC 705.5 / Table 602): < 5 ft → 1-hr rated wall; 5–10 ft → 1-hr (or 0-hr with sprinklers); ≥ 10 ft → 0-hr.
- Allowable Height/Area (IBC 504/506): Based on construction type table values. Sprinkler bonus: +1 story, +20% area (IBC 504.2 / 506.3).
#### Assumptions & References
- Based on IBC 2021 (International Building Code). Local amendments may apply.
More Calculators
- Dog & Cat Healthy Weight Range Calculator
- Commercial Zoning Setback and Lot Coverage Calculator
- Commercial Construction Cost Per Square Foot Estimator
- EV Home Charging Cost Calculator (Arizona APS/SRP Rate Plans)
- Pipe Flow Rate Calculator
- Pet Vaccination Schedule Calculator
- Arizona EV Charger Installation Cost Estimator
- VO2 Max Estimator
- Sports Calorie Burn Calculator
- Cloud Hosting Cost Estimator
- Website Performance Impact Calculator
- Software Development Cost Estimator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...