Water Heater Efficiency (EF/UEF) Calculator

ANALife Services AuthorityNational 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

More Calculators

Read Next

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

References