Window Draft & Air Leakage Savings Calculator
ANA›Life Services Authority›National Calculator Authority›Window Draft & Air Leakage Savings 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; } }
Window Draft & Air Leakage Savings Calculator
Estimate your annual heating and cooling cost savings by sealing window drafts and air leaks using the infiltration heat loss method.
Number of Leaky Windows
Average Crack / Gap Length per Window (inches)
Total perimeter of gaps around sash, frame, and sill per window.
Air Leakage Rate (CFM per linear foot of crack)
Poor seal – single-pane, no weatherstrip (0.5 CFM/ft) Average – older double-pane, worn strip (0.3 CFM/ft) Moderate – some weatherstripping present (0.1 CFM/ft)
ASHRAE 90.1 / NFRC typical infiltration rates for residential windows.
Heating Degree Days (HDD, base 65°F)
Find your city's HDD at degreedays.net.
Cooling Degree Days (CDD, base 65°F)
Heating Fuel Type
Natural Gas Electricity Heating Oil Propane
Heating Fuel Cost
$/kWh for electricity; $/therm for gas; $/gallon for oil/propane
Heating System Efficiency (AFUE or COP, as decimal or ratio)
Electricity Cost for Cooling ($/kWh)
Cooling System SEER Rating
Estimated Sealing / Weatherstripping Cost ($)
Calculate Savings
function winCalc() { // --- Gather inputs --- var numWindows = parseFloat(document.getElementById('win-num-windows').value); var crackIn = parseFloat(document.getElementById('win-crack-length').value); var leakRate = parseFloat(document.getElementById('win-leakage-rate').value); var hdd = parseFloat(document.getElementById('win-hdd').value); var cdd = parseFloat(document.getElementById('win-cdd').value); var heatFuel = document.getElementById('win-heat-fuel').value; var heatCost = parseFloat(document.getElementById('win-heat-cost').value); var heatEff = parseFloat(document.getElementById('win-heat-eff').value); var coolCost = parseFloat(document.getElementById('win-cool-cost').value); var seer = parseFloat(document.getElementById('win-seer').value); var sealCost = parseFloat(document.getElementById('win-seal-cost').value);
// --- Validation --- var errors = []; if (isNaN(numWindows) || numWindows 0) { resultDiv.style.display = 'block'; resultDiv.innerHTML = 'Please fix the following:' + errors.map(function(e){ return ''; }).join('') + ''; return; }
// --------------------------------------------------------------- // CORE FORMULA // // 1. Total infiltration airflow (CFM) when all windows are leaking: // Q_cfm = numWindows × (crackIn / 12) × leakRate // (convert crack length from inches to feet) // // 2. Sensible heat loss/gain rate per °F temperature difference: // Q_Btu_per_hr_per_degF = Q_cfm × 1.08 // (standard air: 0.018 BTU/ft³·°F × 60 min/hr = 1.08) // // 3. Annual heating energy lost through infiltration (BTU): // HeatLoss_BTU = Q_Btu_per_hr_per_degF × HDD × 24 // (HDD × 24 converts degree-days to degree-hours) // // 4. Annual cooling energy gained through infiltration (BTU): // CoolGain_BTU = Q_Btu_per_hr_per_degF × CDD × 24 // // 5. Convert to fuel units and apply system efficiency: // Fuel-specific heating cost: // Natural gas : HeatLoss_BTU / 100000 / heatEff × cost_per_therm // Electricity : HeatLoss_BTU / 3412 / heatEff × cost_per_kWh // Oil : HeatLoss_BTU / 138500 / heatEff × cost_per_gallon // Propane : HeatLoss_BTU / 91500 / heatEff × cost_per_gallon // // Cooling cost: // COP_cool = SEER / 3.412 (converts BTU/hr·W to dimensionless) // CoolEnergy_kWh = CoolGain_BTU / 3412 / COP_cool // CoolCost_$ = CoolEnergy_kWh × cost_per_kWh // // 6. Total annual savings = HeatingCost + CoolingCost // 7. Simple payback = sealCost / totalSavings // ---------------------------------------------------------------
var crackFt = crackIn / 12; var Q_cfm = numWindows * crackFt * leakRate; var Q_btu_dh = Q_cfm * 1.08; // BTU/hr per °F delta-T
var heatLoss_btu = Q_btu_dh * hdd * 24; // annual BTU lost to heating var coolGain_btu = Q_btu_dh * cdd * 24; // annual BTU gained (cooling load)
// Heating cost var heatSavings = 0; var heatEnergyLabel = ''; if (heatFuel === 'natural_gas') { var therms = heatLoss_btu / 100000 / heatEff; heatSavings = therms * heatCost; heatEnergyLabel = therms.toFixed(1) + ' therms'; } else if (heatFuel === 'electricity') { var kwhHeat = heatLoss_btu / 3412 / heatEff; heatSavings = kwhHeat * heatCost; heatEnergyLabel = kwhHeat.toFixed(1) + ' kWh'; } else if (heatFuel === 'oil') { var gallonsOil = heatLoss_btu / 138500 / heatEff; heatSavings = gallonsOil * heatCost; heatEnergyLabel = gallonsOil.toFixed(2) + ' gallons'; } else if (heatFuel === 'propane') { var gallonsProp = heatLoss_btu / 91500 / heatEff; heatSavings = gallonsProp * heatCost; heatEnergyLabel = gallonsProp.toFixed(2) + ' gallons'; }
// Cooling cost var cop_cool = seer / 3.412; var kwhCool = (coolGain_btu / 3412) / cop_cool; var coolSavings = kwhCool * coolCost;
var totalSavings = heatSavings + coolSavings; var payback = (sealCost > 0 && totalSavings > 0) ? sealCost / totalSavings : 0; var roi10 = (sealCost > 0) ? ((totalSavings * 10 - sealCost) / sealCost * 100) : 0;
// CO₂ avoided (lbs): electricity 0.386 kg/kWh → 0.851 lb/kWh; gas 11.7 lb/therm; oil 22.4 lb/gal; propane 12.7 lb/gal var co2Lbs = 0; if (heatFuel === 'natural_gas') { co2Lbs += (heatLoss_btu / 100000 / heatEff) * 11.7; } else if (heatFuel === 'electricity') { co2Lbs += (heatLoss_btu / 3412 / heatEff) * 0.851; } else if (heatFuel === 'oil') { co2Lbs += (heatLoss_btu / 138500 / heatEff) * 22.4; } else if (heatFuel === 'propane') { co2Lbs += (heatLoss_btu / 91500 / heatEff) * 12.7; } co2Lbs += kwhCool * 0.851;
// Format helpers function fmt(n, d) { return n.toLocaleString('en-US', {minimumFractionDigits: d, maximumFractionDigits: d}); } function fmtUSD(n) { return '$' + fmt(n, 2); }
- var paybackStr = (totalSavings > 0 && sealCost > 0)
- ? fmt(payback, 1) + ' years'
- (sealCost === 0 ? 'N/A (no cost entered)' : 'N/A (no savings)');
resultDiv.style.display = 'block'; resultDiv.innerHTML = '### Results ' + '' + 'Total Infiltration Airflow' + fmt(Q_cfm, 1) + ' CFM' + 'Annual Heating Energy Lost' + fmt(heatLoss_btu / 1e6, 2) + ' MMBtu (' + heatEnergyLabel + ')' + 'Annual Cooling Load Added' + fmt(coolGain_btu / 1e6, 2) + ' MMBtu (' + fmt(kwhCool, 1) + ' kWh)' + 'Annual Heating Cost Savings' + fmtUSD(heatSavings) + '' + 'Annual Cooling Cost Savings' + fmtUSD(coolSavings) + '' + 'Total Annual Savings' + fmtUSD(totalSavings) + '' + 'Sealing / Weatherstrip Cost' + fmtUSD(sealCost) + '' + 'Simple Payback Period' + paybackStr + '' + '10-Year Net ROI' + fmt(roi10, 1) + '%' + 'CO₂ Emissions Avoided' + fmt(co2Lbs, 0) + ' lbs/year (' + fmt(co2Lbs / 2204.6, 2) + ' metric tons)' + ''; }
// Update fuel cost label dynamically document.getElementById('win-heat-fuel').addEventListener('change', function() { var labels = { natural_gas: '$/therm (1 therm = 100,000 BTU)', electricity: '$/kWh', oil: '$/gallon (heating oil)', propane: '$/gallon (propane)' }; var defaults = { natural_gas: '1.20', electricity: '0.13', oil: '4.00', propane: '2.80' }; document.getElementById('win-heat-unit-label').textContent = labels[this.value]; document.getElementById('win-heat-cost').value = defaults[this.value]; });
#### Formulas Used
1. Total infiltration airflow: Q (CFM) = Nwindows × (CrackLengthin / 12) × LeakRateCFM/ft
2. Sensible heat transfer rate: Q̇ (BTU/hr·°F) = QCFM × 1.08 (1.08 = specific heat of air 0.018 BTU/ft³·°F × 60 min/hr)
3. Annual heating energy lost: HeatLoss (BTU) = Q̇ × HDD × 24
4. Annual cooling energy gained: CoolGain (BTU) = Q̇ × CDD × 24
5. Heating cost savings: Gas: HeatLoss / 100,000 / AFUE × $/therm Electric: HeatLoss / 3,412 / COP × $/kWh Oil: HeatLoss / 138,500 / AFUE × $/gal Propane: HeatLoss / 91,500 / AFUE × $/gal
6. Cooling cost savings: COPcool = SEER / 3.412 kWhcool = (CoolGain / 3,412) / COPcool CoolSavings = kWhcool × $/kWh
7. Simple payback: SealingCost / TotalAnnualSavings
#### Assumptions & References
- Air infiltration rates (0.1–0.5 CFM/linear ft of crack) are based on ASHRAE Standard 90.1 and NFRC 400 window air-leakage classifications.
- Sensible heat factor of 1.08 BTU/hr·CFM·°F assumes standard air density at sea level (ASHRAE Fundamentals Handbook, Chapter 18).
- Degree-day method (HDD/CDD base 65°F) per ASHRAE 90.1 Appendix D and DOE EnergyPlus documentation.
- Fuel energy content: Natural gas 100,000 BTU/therm; Electricity 3,412 BTU/kWh; Heating oil 138,500 BTU/gal; Propane 91,500 BTU/gal (EIA).
- CO₂ emission factors: Electricity 0.386 kg CO₂/kWh (US average, EPA eGRID 2022); Natural gas 11.7 lb/therm; Oil 22.4 lb/gal; Propane 12.7 lb/gal (EPA GHG equivalencies).
- SEER to COP conversion: COP = SEER / 3.412 (per AHRI Standard 210/240).
More Calculators
- Maryland EV Tax Credit & Incentive Savings Calculator
- MTG Mana Curve Calculator
- Expert Witness Cost Estimator
- Recurring Cleaning Discount Calculator
- Lost Earnings / Damages Calculator
- House Cleaning Time Estimator
- Humidity and Ventilation Load Calculator — Account for WV's variable humidity levels in HVAC system sizing
- Insulation R-Value Calculator
- Insurance Premium Estimator
- Deductible vs Premium Calculator
- Insurance Coverage Needs Estimator
Read Next
Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...