Determine the appropriate storage capacity for your hot water tank.
Gallons
Liters
Gallons
Liters
fixtures
Gallons
Liters
Recommended Tank Size:
Understanding Hot Water Tank Sizing
Choosing the right size for your hot water tank is crucial for ensuring you have enough hot water for your household's needs without wasting energy on an oversized unit. This calculator helps you estimate the ideal tank capacity based on your peak usage demands and the recovery rate of your water heater.
How the Calculation Works:
The primary goal is to ensure the tank can meet the highest demand within a typical hour of use, while also considering how quickly the heater can replenish the hot water.
Peak Hour Demand: This is the total amount of hot water likely to be used during the busiest consecutive hour of the day (e.g., morning showers, dishwasher, laundry). You can estimate this by considering the flow rate of fixtures and how many might be used simultaneously.
Fixture Flow Rate: This is the rate at which a single fixture (like a showerhead or faucet) uses hot water. This is typically measured in gallons per minute (GPM) or liters per minute (LPM).
Number of Simultaneous Fixtures: This estimates how many hot water outlets could be running at the same time during your peak hour. For example, one person showering while another uses the sink.
Water Heater Recovery Rate: This is the rate at which the water heater can heat incoming cold water to the desired temperature. It's usually measured in gallons per hour (GPH) or liters per hour (LPH). A higher recovery rate means the tank can be replenished faster.
Calculation Steps:
Calculate Total Fixture Usage per Minute:Total Fixture Usage (per minute) = Number of Simultaneous Fixtures * Average Fixture Flow Rate
Calculate Total Fixture Usage per Hour:Total Fixture Usage (per hour) = Total Fixture Usage (per minute) * 60 minutes/hour
Determine Required Tank Size:
The calculator compares your estimated Peak Hour Demand against the Total Fixture Usage (per hour).
If your Peak Hour Demand is higher than the calculated Total Fixture Usage (per hour) based on simultaneous fixtures, the Peak Hour Demand will be the primary factor. Otherwise, the calculated fixture usage will guide the sizing.
A common rule of thumb is to have a tank size that is at least 60-80% of the calculated peak demand to provide a buffer, and also ensure the tank is sufficient to cover the peak hour usage. For simplicity, this calculator will suggest a size that can meet the higher of the two demands (your direct input or calculated fixture usage).
A more advanced consideration is adding a buffer or considering the first-hour rating (FHR) of the water heater, which combines tank size and recovery rate. This calculator provides a foundational estimate.
Note: The unit conversion is handled internally to ensure accuracy regardless of the units you select.
For precise sizing, especially in larger homes or commercial applications, consulting with a plumbing professional is recommended.
function calculateHotWaterSize() {
var peakHourDemand = parseFloat(document.getElementById("peakHourDemand").value);
var demandUnit = document.getElementById("demandUnit").value;
var recoveryRate = parseFloat(document.getElementById("recoveryRate").value);
var recoveryUnit = document.getElementById("recoveryUnit").value;
var simultaneousFixtures = parseFloat(document.getElementById("simultaneousFixtures").value);
var fixtureFlowRate = parseFloat(document.getElementById("fixtureFlowRate").value);
var flowRateUnit = document.getElementById("flowRateUnit").value;
var resultValueElement = document.getElementById("resultValue");
var resultUnitsElement = document.getElementById("resultUnits");
var resultContainer = document.getElementById("resultContainer");
// Input validation
if (isNaN(peakHourDemand) || isNaN(recoveryRate) || isNaN(simultaneousFixtures) || isNaN(fixtureFlowRate)) {
alert("Please enter valid numbers for all fields.");
return;
}
if (peakHourDemand <= 0 || recoveryRate <= 0 || simultaneousFixtures < 0 || fixtureFlowRate <= 0) {
alert("Please enter positive values for demand, recovery rate, and flow rate. Number of fixtures can be zero.");
return;
}
// — Unit Conversion Helper —
var LITERS_PER_GALLON = 3.78541;
function convertToGallons(value, unit) {
if (unit === "liters") {
return value / LITERS_PER_GALLON;
}
return value; // Already in gallons
}
function convertToLiters(value, unit) {
if (unit === "gallons") {
return value * LITERS_PER_GALLON;
}
return value; // Already in liters
}
// — Calculations —
// 1. Convert all inputs to a common base unit (e.g., Liters and Liters per Hour) for calculation
var peakHourDemandLiters = convertToLiters(peakHourDemand, demandUnit);
var recoveryRateLitersPerHour = convertToLiters(recoveryRate, recoveryUnit);
var fixtureFlowRateLitersPerMinute = convertToLiters(fixtureFlowRate, flowRateUnit);
// 2. Calculate estimated demand from fixtures
var totalFixtureDemandPerMinuteLiters = simultaneousFixtures * fixtureFlowRateLitersPerMinute;
var totalFixtureDemandPerHourLiters = totalFixtureDemandPerMinuteLiters * 60;
// 3. Determine the higher demand: User input peak demand vs. calculated fixture demand
// We aim for a tank size that can meet this peak demand.
var requiredSizeLiters = Math.max(peakHourDemandLiters, totalFixtureDemandPerHourLiters);
// Additional consideration: Ensure recovery rate is sufficient if tank is smaller than hourly demand.
// For simplicity in this calculator, we focus on meeting the peak demand.
// A common guideline is to have the tank size be at least 60-80% of the peak hour demand.
// Let's use the peak hour demand (user input or calculated fixture demand) as the minimum target tank size.
// Add a small buffer for practicality, e.g., 10% or a minimum of 5 gallons/20 liters.
var bufferSizeLiters = requiredSizeLiters * 0.10;
var finalRecommendedSizeLiters = requiredSizeLiters + bufferSizeLiters;
// Ensure a minimum practical size
var minPracticalSizeLiters = 75.7; // ~20 gallons
if (finalRecommendedSizeLiters < minPracticalSizeLiters) {
finalRecommendedSizeLiters = minPracticalSizeLiters;
}
// 4. Display result – convert back to the unit the user initially selected for peak demand if possible, or default to gallons.
var outputUnit = demandUnit; // Default to user's selected unit for demand
if (outputUnit === "liters") {
resultValueElement.innerText = finalRecommendedSizeLiters.toFixed(1);
resultUnitsElement.innerText = "Liters";
} else { // Default to gallons
resultValueElement.innerText = (finalRecommendedSizeLiters / LITERS_PER_GALLON).toFixed(1);
resultUnitsElement.innerText = "Gallons";
}
resultContainer.style.display = "block";
}