HVAC Equipment Sizing Calculator — Manual J Load Estimate

ANALife Services AuthorityNational Calculator Authority›HVAC Equipment Sizing Calculator — Manual J Load Estimate

.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; } }

HVAC Equipment Sizing Calculator — Manual J Load Estimate

Estimates residential heating and cooling loads using the Manual J simplified methodology to properly size HVAC equipment. Enter your home's characteristics to calculate BTU/hr requirements.

### Climate & Location

Outdoor Summer Design Temp (°F)

Outdoor Winter Design Temp (°F)

Indoor Summer Setpoint (°F)

Indoor Winter Setpoint (°F)

Outdoor Summer Humidity (% RH)

Climate Zone

Zone 1 (Hot-Humid) Zone 2 (Hot-Dry/Mixed-Humid) Zone 3 (Warm-Humid/Mixed-Dry) Zone 4 (Mixed-Humid/Marine) Zone 5 (Cool-Humid/Marine) Zone 6 (Cold) Zone 7 (Very Cold)

### Building Envelope

Conditioned Floor Area (sq ft)

Average Ceiling Height (ft)

Number of Stories

1 Story 2 Stories 3 Stories

Wall Insulation R-Value

R-11 (2×4 minimal) R-13 (2×4 standard) R-19 (2×6 standard) R-21 (2×6 high) R-25 (advanced)

Ceiling/Attic Insulation R-Value

R-19 (minimal) R-30 (standard) R-38 (recommended) R-49 (high performance) R-60 (super insulated)

Floor/Crawlspace Insulation R-Value

R-0 (slab on grade) R-11 (minimal) R-19 (standard) R-30 (high)

### Windows & Doors

Total Window Area (sq ft)

Window Type / U-Factor

Single Pane (U=1.1) Double Pane Clear (U=0.65) Double Pane Low-E (U=0.40) Triple Pane Low-E (U=0.30) High-Performance Triple (U=0.22)

Window SHGC (Solar Heat Gain Coefficient)

0.87 (single pane) 0.70 (clear double) 0.40 (low-e standard) 0.25 (low-e low gain) 0.20 (spectrally selective)

Dominant Window Orientation

North (minimal solar) East/West South (standard) Mixed/All directions

Exterior Door Area (sq ft)

Door Type / U-Factor

Wood Solid Core (U=0.60) Insulated Steel (U=0.40) Insulated Fiberglass (U=0.30) High-Performance (U=0.20)

### Infiltration & Internal Gains

Air Leakage / Infiltration Level

Tight (0.25 ACH) — New construction Average (0.50 ACH) — Typical Leaky (0.75 ACH) — Older home Very Leaky (1.0 ACH) — Pre-1980

Number of Occupants

Lighting Load (W/sq ft)

0.5 W/ft² (all LED) 1.0 W/ft² (mixed) 1.5 W/ft² (older fixtures) 2.0 W/ft² (incandescent)

Appliance/Equipment Load (BTU/hr)

Duct Location

Conditioned space (no loss) Sealed attic/crawlspace Unconditioned attic (standard) Unconditioned attic (leaky)

House Construction Type

Well-shaded / heavy mass Standard frame construction Open / light construction Mobile / manufactured home

Calculate HVAC Load

### Manual J Load Estimate Results

function hvaCalc() { // --- Inputs --- const tSummerOut = parseFloat(document.getElementById('hva-outdoor-summer').value); const tWinterOut = parseFloat(document.getElementById('hva-outdoor-winter').value); const tSummerIn = parseFloat(document.getElementById('hva-indoor-summer').value); const tWinterIn = parseFloat(document.getElementById('hva-indoor-winter').value); const humidity = parseFloat(document.getElementById('hva-humidity').value); const climateZone = parseInt(document.getElementById('hva-climate-zone').value);

const floorArea = parseFloat(document.getElementById('hva-floor-area').value); const ceilHeight = parseFloat(document.getElementById('hva-ceiling-height').value); const stories = parseInt(document.getElementById('hva-stories').value); const rWall = parseFloat(document.getElementById('hva-wall-insulation').value); const rCeiling = parseFloat(document.getElementById('hva-ceiling-insulation').value); const rFloor = parseFloat(document.getElementById('hva-floor-insulation').value);

const windowArea = parseFloat(document.getElementById('hva-window-area').value); const uWindow = parseFloat(document.getElementById('hva-window-type').value); const shgc = parseFloat(document.getElementById('hva-shgc').value); const winOrient = parseFloat(document.getElementById('hva-window-orientation').value); const doorArea = parseFloat(document.getElementById('hva-door-area').value); const uDoor = parseFloat(document.getElementById('hva-door-type').value);

const ach = parseFloat(document.getElementById('hva-infiltration').value); const occupants = parseInt(document.getElementById('hva-occupants').value); const lightingWpf = parseFloat(document.getElementById('hva-lighting').value); const applianceBtu= parseFloat(document.getElementById('hva-appliances').value); const ductFactor = parseFloat(document.getElementById('hva-duct-location').value); const houseType = parseFloat(document.getElementById('hva-house-type').value);

// --- Validation --- const errors = []; if (isNaN(tSummerOut) || tSummerOut 120) errors.push("Outdoor summer temp must be 70–120°F."); if (isNaN(tWinterOut) || tWinterOut 50) errors.push("Outdoor winter temp must be -30 to 50°F."); if (tSummerIn >= tSummerOut) errors.push("Indoor summer setpoint must be less than outdoor summer temp."); if (tWinterIn floorArea * 0.5) errors.push("Window area seems too large (>50% of floor area)."); if (isNaN(occupants) || occupants 0) { document.getElementById('hva-result').style.display = 'block'; document.getElementById('hva-result-content').innerHTML = 'Input Errors:' + errors.join('') + '

'; return; }

// ============================================================ // MANUAL J SIMPLIFIED LOAD CALCULATIONS // Reference: ACCA Manual J 8th Edition (Simplified Method) // ============================================================

// --- Derived geometry --- const volume = floorArea * ceilHeight; // ft³ const perimeter = 4 * Math.sqrt(floorArea / stories); // approx perimeter ft const wallArea = perimeter * ceilHeight * stories; // gross wall area ft² const netWallArea = wallArea - windowArea - doorArea; // net opaque wall ft² const ceilingArea = floorArea / stories; // top floor ceiling ft² const floorAreaBot = floorArea / stories; // bottom floor ft²

// --- Design temperature differences --- const dtCoolSens = tSummerOut - tSummerIn; // °F cooling sensible ΔT const dtHeat = tWinterIn - tWinterOut; // °F heating ΔT

// --- U-values for opaque assemblies (U = 1/R) --- // Wall: R-value includes framing factor (~0.85 cavity fill efficiency) + sheathing/drywall (~R-4) const uWall = 1 / (rWall + 4.0); const uCeiling = 1 / (rCeiling + 2.0); // +R-2 for drywall/framing const uFloor = rFloor > 0 ? 1 / (rFloor + 2.0) : 0.10; // slab ~U-0.10 effective

// ============================================================ // HEATING LOAD (BTU/hr) // Q_heat = U × A × ΔT for each component // ============================================================

const heatWall = uWall * netWallArea * dtHeat; const heatCeiling = uCeiling * ceilingArea * dtHeat; const heatFloor = uFloor * floorAreaBot * dtHeat; const heatWindow = uWindow * windowArea * dtHeat; const heatDoor = uDoor * doorArea * dtHeat;

// Infiltration heating load: // Q_inf = 1.1 × CFM × ΔT where CFM = ACH × Volume / 60 const cfm = ach * volume / 60; const heatInfilt = 1.1 * cfm * dtHeat;

const heatSubtotal = heatWall + heatCeiling + heatFloor + heatWindow + heatDoor + heatInfilt; const heatTotal = heatSubtotal * ductFactor * houseType;

// ============================================================ // COOLING LOAD — SENSIBLE (BTU/hr) // ============================================================

// Conduction gains (envelope) const coolWall = uWall * netWallArea * dtCoolSens; const coolCeiling = uCeiling * ceilingArea * dtCoolSens; const coolFloor = uFloor * floorAreaBot * dtCoolSens * 0.5; // floor gain reduced const coolWindow = uWindow * windowArea * dtCoolSens; const coolDoor = uDoor * doorArea * dtCoolSens;

// Solar gain through windows: // Q_solar = SHGC × A × Peak Solar Intensity × Orientation Factor // Peak solar intensity ~250 BTU/hr·ft² (ASHRAE standard peak) const peakSolar = 250; // BTU/hr·ft² const coolSolar = shgc * windowArea * peakSolar * winOrient;

// Internal gains — sensible // Occupants: 250 BTU/hr sensible per person (ASHRAE 62.1 seated light activity) const coolOccSens = occupants * 250; // Lighting: 1 W = 3.412 BTU/hr, assume 100% to space const coolLighting = lightingWpf * floorArea * 3.412; // Appliances const coolAppliance = applianceBtu;

// Infiltration cooling sensible const coolInfiltSens = 1.1 * cfm * dtCoolSens;

const coolSensSubtotal = coolWall + coolCeiling + coolFloor + coolWindow + coolDoor + coolSolar + coolOccSens + coolLighting + coolAppliance + coolInfiltSens; const coolSensTotal = coolSensSubtotal * ductFactor * houseType;

// ============================================================ // COOLING LOAD — LATENT (BTU/hr) // ============================================================ // Latent from infiltration: // Q_lat_inf = 0.68 × CFM × ΔW where ΔW = humidity ratio difference (gr/lb) // Approximate ΔW from RH: outdoor grains - indoor grains // At 95°F outdoor, humidity ratio ≈ RH/100 × 0.0283 × 7000 gr/lb (simplified) // Indoor at 75°F, 50% RH ≈ 65.7 gr/lb const outdoorGrains = (humidity / 100) * (0.0283 * 7000) * (tSummerOut / 95); const indoorGrains = 65.7; // standard indoor 75°F / 50% RH const deltaW = Math.max(0, outdoorGrains - indoorGrains); const coolLatInfilt = 0.68 * cfm * deltaW;

// Latent from occupants: 200 BTU/hr latent per person const coolLatOcc = occupants * 200;

// Latent from infiltration through envelope (simplified) const coolLatTotal = (coolLatInfilt + coolLatOcc) * ductFactor;

// ============================================================ // TOTAL COOLING LOAD // ============================================================ const coolTotalBtu = coolSensTotal + coolLatTotal; const coolTons = coolTotalBtu / 12000;

// ============================================================ // EQUIPMENT SIZING (Manual J recommends 100–115% of calculated load) // ============================================================ const heatEquipBtu = Math.ceil(heatTotal / 5000) * 5000; // round up to nearest 5,000 BTU const coolEquipBtu = Math.ceil(coolTotalBtu / 6000) * 6000; // round up to nearest 6,000 BTU (0.5 ton) const coolEquipTons = coolEquipBtu / 12000;

// Sensible Heat Ratio const shr = coolSensTotal / coolTotalBtu;

// BTU per sq ft benchmarks const heatBtuPerSqft = heatTotal / floorArea; const coolBtuPerSqft = coolTotalBtu / floorArea;

// ============================================================ // OUTPUT // ============================================================ const fmt = (n, d=0) => n.toLocaleString('en-US', {minimumFractionDigits:d, maximumFractionDigits:d}); const fmtBtu = (n) => fmt(Math.round(n));

const resultHTML = `

#### 🔥 Heating Load

Walls${fmtBtu(heatWall)} BTU/hr Ceiling/Roof${fmtBtu(heatCeiling)} BTU/hr Floor${fmtBtu(heatFloor)} BTU/hr Windows${fmtBtu(heatWindow)} BTU/hr Doors${fmtBtu(heatDoor)} BTU/hr Infiltration${fmtBtu(heatInfilt)} BTU/hr

Subtotal${fmtBtu(heatSubtotal)} BTU/hr

Duct & Construction Factor×${(ductFactor*houseType).toFixed(2)}

Total Heating Load${fmtBtu(heatTotal)} BTU/hr

Recommended Heating Equipment: ${fmtBtu(heatEquipBtu)} BTU/hr (${fmt(heatEquipBtu/1000,0)}k BTU/hr | ${fmt(heatEquipBtu/3412,1)} kW equivalent)

#### ❄️ Cooling Load

Sensible Gains: Walls + Ceiling + Floor${fmtBtu(coolWall+coolCeiling+coolFloor)} BTU/hr Windows (conduction)${fmtBtu(coolWindow)} BTU/hr Solar Gain (windows)${fmtBtu(coolSolar)} BTU/hr Doors${fmtBtu(coolDoor)} BTU/hr Occupants (sensible)${fmtBtu(coolOccSens)} BTU/hr Lighting${fmtBtu(coolLighting)} BTU/hr Appliances${fmtBtu(coolAppliance)} BTU/hr Infiltration (sensible)${fmtBtu(coolInfiltSens)} BTU/hr

Total Sensible${fmtBtu(coolSensTotal)} BTU/hr

Latent Gains: Infiltration (latent)${fmtBtu(coolLatInfilt)} BTU/hr Occupants (latent)${fmtBtu(coolLatOcc)} BTU/hr

Total Latent${fmtBtu(coolLatTotal)} BTU/hr

Total Cooling Load${fmtBtu(coolTotalBtu)} BTU/hr

Sensible Heat Ratio (SHR)${fmt(shr,2)}

Recommended Cooling Equipment: ${fmt(coolEquipTons,1)} Tons (${fmtBtu(coolEquipBtu)} BTU/hr) Calculated: ${fmt(coolTons,2)} tons → Size to ${fmt(coolEquipTons,1)} tons

#### 📊 Summary & Benchmarks

${fmtBtu(heatTotal)} BTU/hr Heating

${fmt(coolTons,2)} Tons Cooling

${fmt(heatBtuPerSqft,1)} BTU/hr·ft² Heat

${fmt(coolBtuPerSqft,1)} BTU/hr·ft² Cool

Typical benchmarks: Heating 20–50 BTU/hr·ft² | Cooling 15–40 BTU/hr·ft² depending on climate zone and construction quality. Your values are ${heatBtuPerSqft

⚠️ Important: This is a simplified Manual J estimate for preliminary sizing only. A full Manual J calculation by a certified HVAC professional is required for permit applications and final equipment selection. Actual loads depend on detailed construction drawings, local weather data, and site-specific conditions.

`;

document.getElementById('hva-result').style.display = 'block'; document.getElementById('hva-result-content').innerHTML = resultHTML; }

#### Formulas Used (Manual J Simplified)

Heating Load (each component): Qheat = U × A × ΔTwinter where U = 1/R (BTU/hr·ft²·°F), A = area (ft²), ΔT = Tindoor − Toutdoor design

Infiltration Heating: Qinf,heat = 1.1 × CFM × ΔT CFM = ACH × Volume(ft³) / 60

Cooling Sensible Load: Qcool,sens = Σ(U × A × ΔTsummer) + Qsolar + Qinternal + Qinf,sens Qsolar = SHGC × Awindow × 250 BTU/hr·ft² × Orientation Factor

Cooling Latent Load: Qlat,inf = 0.68 × CFM × ΔW (gr/lb) Qlat,occ = Occupants × 200 BTU/hr

Total Cooling: Qtotal = Qsensible + Qlatent Tons: Tons = Qtotal / 12,000 BTU/hr per ton Duct Loss Factor applied to all loads (1.0–1.3×)

#### Assumptions & References

More Calculators

Read Next

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

References