Water Heater Efficiency (EF/UEF) Calculator
ANA›Life Services Authority›National Calculator Authority›Water Heater Efficiency (EF/UEF) 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; } }
Water Heater Efficiency (EF/UEF) Calculator
Calculate your water heater's Energy Factor (EF) or Uniform Energy Factor (UEF), estimate annual operating costs, and compare savings between models.
Water Heater Type
Gas / Propane (Storage) Electric Resistance (Storage) Heat Pump Water Heater (HPWH) Tankless Gas / Propane Tankless Electric Solar Water Heater
UEF / EF Rating (0.50 – 0.70 typical for gas storage)
Draw Pattern / Usage Profile
Very Small (10 gal/day) Low (38 gal/day) Medium (55 gal/day) High (84 gal/day)
Fuel / Energy Rate
$/kWh (electricity)
Tank Size (gallons) (0 for tankless)
Compare with a Second Model (optional)
Comparison UEF / EF
Comparison Model Price ($)
Current Model Price ($)
Expected Lifespan (years)
Calculate
(function(){
/ ── fuel defaults ── / const FUEL_DEFAULTS = { gas: { rate: 1.20, unit: "$/therm", btu_per_unit: 100000, label: "Natural Gas" }, electric: { rate: 0.13, unit: "$/kWh", btu_per_unit: 3412, label: "Electricity" }, hpwh: { rate: 0.13, unit: "$/kWh", btu_per_unit: 3412, label: "Electricity" }, tankless_gas: { rate: 1.20, unit: "$/therm", btu_per_unit: 100000, label: "Natural Gas" }, tankless_elec: { rate: 0.13, unit: "$/kWh", btu_per_unit: 3412, label: "Electricity" }, solar: { rate: 0.13, unit: "$/kWh", btu_per_unit: 3412, label: "Electricity (backup)" } };
/ ── UEF hint ranges (DOE 10 CFR Part 430) ── / const UEF_HINTS = { gas: "0.50 – 0.70 typical; ≥0.67 ENERGY STAR", electric: "0.90 – 0.95 typical; ≥0.93 ENERGY STAR", hpwh: "2.00 – 4.00 typical; ≥2.20 ENERGY STAR", tankless_gas: "0.82 – 0.96 typical; ≥0.87 ENERGY STAR", tankless_elec: "0.96 – 0.99 typical", solar: "1.00 – 3.00 typical (combined system)" };
/ ── DOE annual energy (Btu) by draw pattern (10 CFR Part 430 Appendix E) ── / / Q_annual = (64.3 * draw_gal * 8.33 * ΔT) / UEF where ΔT=67°F, but DOE uses fixed reference Btu loads per draw bin: Very Small=3078, Low=12266, Medium=18719, High=28518 (in kBtu/yr) / const DRAW_BTU = { very_small: 3078000, low: 12266000, medium: 18719000, high: 28518000 }; const DRAW_LABELS = { very_small: "Very Small (10 gal/day)", low: "Low (38 gal/day)", medium: "Medium (55 gal/day)", high: "High (84 gal/day)" };
function watUpdateFields(){ const type = document.getElementById('wat_type').value; const fd = FUEL_DEFAULTS[type]; document.getElementById('wat_fuel_rate').value = fd.rate; document.getElementById('wat_fuel_unit').textContent = fd.unit; document.getElementById('wat_uef_hint').textContent = UEF_HINTS[type]; }
window.watUpdateFields = watUpdateFields;
/ initialise / watUpdateFields();
function fmt(n, dec=2){ return n.toLocaleString('en-US',{minimumFractionDigits:dec,maximumFractionDigits:dec}); } function fmtD(n){ return '$'+fmt(n,2); }
window.watCalc = function(){ const res = document.getElementById('wat_result'); const type = document.getElementById('wat_type').value; const fd = FUEL_DEFAULTS[type];
/ ── inputs ── / const uef = parseFloat(document.getElementById('wat_uef').value); const draw = document.getElementById('wat_draw').value; const fuelRate = parseFloat(document.getElementById('wat_fuel_rate').value); const tankSize = parseFloat(document.getElementById('wat_tank_size').value) || 0; const lifespan = parseFloat(document.getElementById('wat_lifespan').value) || 13; const uef2 = parseFloat(document.getElementById('wat_uef2').value); const cost1 = parseFloat(document.getElementById('wat_cost1').value); const cost2 = parseFloat(document.getElementById('wat_cost2').value);
/ ── validation ── / const errs = []; if(isNaN(uef) || uef 5) errs.push("UEF/EF must be between 0.01 and 5.00."); if(isNaN(fuelRate) || fuelRate 30) errs.push("Lifespan must be 1–30 years."); if(!isNaN(uef2) && (uef2 5)) errs.push("Comparison UEF must be between 0.01 and 5.00.");
if(errs.length){ res.innerHTML = 'Please fix:' + errs.map(e=>'').join('') + ''; return; }
/ ── core calculation ── / / DOE formula: Annual Energy Consumption (AEC) in fuel units AEC = Q_ref / (UEF × BTU_per_fuel_unit) Annual Cost = AEC × fuel_rate / const Q_ref = DRAW_BTU[draw]; // Btu/yr const aec1 = Q_ref / (uef * fd.btu_per_unit); // fuel units/yr const annCost1 = aec1 * fuelRate; // $/yr const lifeCost1 = annCost1 * lifespan;
/ standby loss estimate for storage tanks (ASHRAE): Standby_loss_Btu/hr ≈ 0.84 × tank_vol(gal) × 0.645 (simplified) We derive it from UEF vs. EF relationship instead: For storage: UEF ≈ EF − 0.0005 × tank_vol (DOE approximation) / let efEquiv = uef; if((type==='gas'||type==='electric') && tankSize > 0){ efEquiv = uef + 0.0005 * tankSize; // approximate EF from UEF }
/ standby heat loss fraction: (1 - UEF) portion is losses / const standbyFrac = Math.max(0, 1 - uef / efEquiv);
/ ── ENERGY STAR threshold check ── / const ES_THRESHOLDS = { gas: 0.67, electric: 0.93, hpwh: 2.20, tankless_gas: 0.87, tankless_elec: 0.96, solar: 1.80 }; const esPass = uef >= (ES_THRESHOLDS[type] || 0);
/ ── comparison model ── / let compHTML = ''; if(!isNaN(uef2) && uef2 > 0){ const aec2 = Q_ref / (uef2 * fd.btu_per_unit); const annCost2 = aec2 * fuelRate; const lifeCost2 = annCost2 * lifespan; const annSave = annCost1 - annCost2; // positive = model2 saves money const lifeSave = lifeCost1 - lifeCost2;
let paybackHTML = '';
if(!isNaN(cost1) && !isNaN(cost2) && annSave !== 0){
const extraCost = cost2 - cost1;
if(annSave > 0 && extraCost > 0){
const payback = extraCost / annSave;
paybackHTML = Payback Period**${fmt(payback,1)} years**;
} else if(annSave > 0 && extraCost Payback PeriodImmediate (lower upfront cost);
} else {
paybackHTML =Payback PeriodComparison model costs more to operate`;
}
}
compHTML = ` ### Model Comparison
Metric Current (UEF ${fmt(uef,2)}) Comparison (UEF ${fmt(uef2,2)})
Annual Energy Use ${fmt(aec1,1)} ${fd.unit.replace('$/','')}s ${fmt(aec2,1)} ${fd.unit.replace('$/','')}s Annual Operating Cost ${fmtD(annCost1)} ${fmtD(annCost2)} Lifetime Cost (${lifespan} yr) ${fmtD(lifeCost1)} ${fmtD(lifeCost2)} Annual Savings (vs current) — ${annSave>=0?'+':'-'}${fmtD(Math.abs(annSave))} Lifetime Savings — ${lifeSave>=0?'+':'-'}${fmtD(Math.abs(lifeSave))} ${paybackHTML}
`; }
/ ── efficiency rating label ── / let effLabel = ''; if(uef ⚠ Below Average'; else if(uef ◑ Average'; else if(uef ✓ Good'; else effLabel = '★ Excellent';
res.innerHTML = ` ### Results
${fd.label} ${type.includes('tankless')?'Tankless':'Storage'} Water Heater
- UEF / EF Rating
- ${fmt(uef,2)} — ${effLabel}
- ENERGY STAR Qualified
- ${esPass
- ? '✓ Yes'
- '✗ No (threshold: '+fmt(ES_THRESHOLDS[type]||0,2)+')'}
Draw Pattern
${DRAW_LABELS[draw]}
Reference Heat Load
${fmt(Q_ref/1000,0)} kBtu/yr
Annual Energy Consumption
${fmt(aec1,2)} ${fd.unit.replace('$/','')}s/yr
(${fmt(aec1 * fd.btu_per_unit / 1000000, 2)} MMBtu/yr)
Annual Operating Cost
${fmtD(annCost1)}/yr
@ ${fd.unit} = ${fmtD(fuelRate)}
Monthly Operating Cost
${fmtD(annCost1/12)}/mo
Lifetime Cost (${lifespan} yr)
${fmtD(lifeCost1)}
${(type==='gas'||type==='electric') && tankSize>0 ?
Approx. EF (from UEF) ${fmt(efEquiv,3)}: ''}
${compHTML}`; };
})();
#### Formulas Used
Annual Energy Consumption (AEC):
AEC (fuel units/yr) = Q_ref / (UEF × BTU_per_fuel_unit)
Annual Cost ($) = AEC × fuel_rate
Lifetime Cost ($) = Annual Cost × lifespan_years
Annual Savings = Annual_Cost_Model_A − Annual_Cost_Model_B
Payback Period (yr) = (Cost_B − Cost_A) / Annual_Savings
EF ≈ UEF + 0.0005 × tank_volume_gal [storage tanks, DOE approximation]
Reference Heat Loads (Q_ref) per DOE 10 CFR Part 430 Appendix E:
Fuel Energy Content: Natural Gas = 100,000 Btu/therm; Electricity = 3,412 Btu/kWh
#### Assumptions & References
- Reference heat loads and draw patterns follow DOE 10 CFR Part 430, Subpart B, Appendix E (2017 test procedure).
- ENERGY STAR thresholds per ENERGY STAR Version 4.0 specification: Gas storage ≥0.67, Electric storage ≥0.93, HPWH ≥2.20, Tankless gas ≥0.87.
More Calculators
- Window Glass Replacement Cost Estimator
- Spirit Aging Evaporation Loss Calculator
- Historical Age Calculator
- Job Hazard Analysis Risk Score Calculator
- Georgia EV Tax Credit and Incentive Savings Calculator
- Glass Thickness Load Calculator
- Fire Load Density Calculator
- Phoenix Cooling Load Calculator (Manual J Estimate)
- Ventilation Rate Calculator (ASHRAE 62.2)
- Seattle Heat Pump Sizing Calculator
- Humidity and Dew Point Calculator for Seattle Climate
- HVAC Equipment Lifespan and Replacement Cost Estimator
Read Next
Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...