Subfloor Load Capacity Calculator
ANA›Life Services Authority›National Calculator Authority›Subfloor Load Capacity 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; } }
Subfloor Load Capacity Calculator
Calculate the allowable uniform load capacity of a subfloor system based on joist dimensions, spacing, span length, and lumber grade properties. Results include total load capacity, dead load allowance, and live load capacity.
Joist Span (ft)
Clear distance between supports
Joist Spacing (in)
On-center spacing between joists (typically 12, 16, or 24 in)
Joist Width (in) — b
Actual (dressed) width of joist (e.g. 1.5 in for a 2× member)
Joist Depth (in) — d
Actual (dressed) depth of joist (e.g. 9.25 in for a 2×10)
Allowable Bending Stress F'b (psi)
Adjusted allowable bending stress for lumber grade/species (see NDS tables)
Modulus of Elasticity E (psi)
Modulus of elasticity for lumber (e.g. 1,600,000 psi for Douglas Fir-Larch No.2)
Dead Load (psf)
Estimated dead load (subfloor sheathing + flooring + joists, typically 10–15 psf)
Deflection Limit
L/360 (live load, typical residential) L/240 (total load) L/480 (sensitive finishes)
Maximum allowable deflection ratio per IBC/IRC
Calculate
function subCalc() { const resultDiv = document.getElementById('sub-result'); resultDiv.style.display = 'block';
// --- Gather inputs --- const L_ft = parseFloat(document.getElementById('sub-span').value); const s_in = parseFloat(document.getElementById('sub-spacing').value); const b = parseFloat(document.getElementById('sub-width').value); const d = parseFloat(document.getElementById('sub-depth').value); const Fb = parseFloat(document.getElementById('sub-fb').value); const E = parseFloat(document.getElementById('sub-e').value); const DL = parseFloat(document.getElementById('sub-dl').value); const deflLim = parseFloat(document.getElementById('sub-defl-limit').value);
// --- Validation --- const errors = []; if (isNaN(L_ft) || L_ft 40) errors.push("Span exceeds 40 ft — verify inputs."); if (s_in > 48) errors.push("Spacing exceeds 48 in — verify inputs."); if (b > d) errors.push("Joist Width (b) should not exceed Joist Depth (d).");
if (errors.length > 0) { resultDiv.innerHTML = 'Please fix the following:' + errors.map(e => '').join('') + ''; return; }
// --- Unit conversions --- const L_in = L_ft * 12; // span in inches const s_ft = s_in / 12; // spacing in feet (tributary width per joist)
// --- Section properties --- // Section modulus S = b * d² / 6 (in³) const S = (b * d * d) / 6;
// Moment of inertia I = b * d³ / 12 (in⁴) const I = (b * Math.pow(d, 3)) / 12;
// --- Bending capacity (uniform load, simple span) --- // M_allow = F'b × S (lb·in) // For a simply supported beam with uniform load w (lb/in): // M_max = w × L² / 8 // Solving for w: w_allow = 8 × F'b × S / L² (lb/in) const M_allow_lb_in = Fb * S; // lb·in const w_bend_lb_in = (8 * M_allow_lb_in) / (L_in * L_in); // lb/in (per joist)
// Convert to psf (load per unit area): // w_psf = w_lb_in × (12 in/ft) / s_ft // = w_lb_in × 12 / s_ft const w_bend_psf = (w_bend_lb_in * 12) / s_ft;
// --- Deflection capacity (uniform load, simple span) --- // δ_max = 5 × w × L⁴ / (384 × E × I) // Allowable δ = L / deflLim // Solving for w: w_defl = (384 × E × I × δ_allow) / (5 × L⁴) const delta_allow = L_in / deflLim; // inches const w_defl_lb_in = (384 * E * I * delta_allow) / (5 * Math.pow(L_in, 4)); // lb/in const w_defl_psf = (w_defl_lb_in * 12) / s_ft;
// --- Governing total load capacity --- const w_total_psf = Math.min(w_bend_psf, w_defl_psf); const governs = (w_bend_psf ${statusMsg}
ParameterValue Section Modulus (S)${S.toFixed(3)} in³ Moment of Inertia (I)${I.toFixed(3)} in⁴ Allowable Bending Moment (M')${(M_allow_lb_in/12).toFixed(1)} ft·lb Allowable Deflection (L/${deflLim})${delta_allow.toFixed(3)} in Capacity — Bending Governs${w_bend_psf.toFixed(1)} psf (total) Capacity — Deflection Governs${w_defl_psf.toFixed(1)} psf (total) Governing Total Load Capacity${w_total_psf.toFixed(1)} psf (${governs}) Dead Load (input)${DL.toFixed(1)} psf Allowable Live Load Capacity${LL_capacity.toFixed(1)} psf
`; }
#### Formulas Used
Section Modulus: S = b·d² / 6
Moment of Inertia: I = b·d³ / 12
Bending Capacity (uniform load, simple span): Mallow = F'b × S | wbend = 8·F'b·S / L² (lb/in per joist) Converted to psf: wpsf = wlb/in × 12 / sft
Deflection Capacity (uniform load, simple span): δallow = L / Limit | wdefl = 384·E·I·δallow / (5·L⁴) (lb/in per joist)
Governing Total Load: wtotal = min(wbend, wdefl)
Live Load Capacity: LL = wtotal − Dead Load
#### Assumptions & References
- F'b is the adjusted allowable bending stress (already includes all NDS adjustment factors: CD, CM, CF, Cr, etc.).
More Calculators
- Florida Impact Fee Estimator
- Concrete Mix Ratio and Strength Calculator
- Foundation Repair Cost Estimator
- Foundation Settlement Differential Calculator
- Garage Floor Epoxy Coverage Calculator
- Foundation Waterproofing Drainage Calculator
- Soil Bearing Capacity Calculator
- Banquet Room Capacity and Pricing Calculator
- Restaurant Profit Margin Calculator
- Event Venue Capacity Planner
- Denver Hotel Occupancy Rate Calculator
- Denver Event Venue Capacity & Revenue Calculator
Read Next
Event Venue Capacity Planner ANA › Life Services Authority › National Calculator Authority › Event Venue Capacity Planner .calc-container { max-width:...
Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...