Water heater sizing calculator
A household of four with a 70-gallon morning peak on an electric heater needs a 50-gallon tank. Enter how many people live at home, the busiest-hour demand if you know it and the fuel, then compare the standard size with product labels. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Occupants
- 4 gal
- Peak hour demand
- 70
- Fuel
- Electric
- Recovery factor
- 0.7 gal
- Peak hour demand gal
- 70
- Peak hour demand liters
- 264.97882488
- Occupant baseline gal
- 50
Choosing a storage water heater tank that is too small leaves the last showers cold during the morning rush; choosing one that is far too large wastes purchase cost, floor space, and standby heat. Homeowners, landlords, and remodel planners need a transparent number they can compare to the first-hour rating printed on a unit label. This water heater sizing calculator takes the number of people in the household and the optional peak-hour hot water demand, combines an occupant baseline table with a fuel-type recovery factor, and rounds up to common commercial tank sizes in US gallons and liters. When you omit peak demand, the tool estimates a morning-style peak from occupants so you still get a usable recommendation.
How occupants and peak-hour demand set tank size
Residential storage water heaters are sized for the busiest hour of the day, not only for average daily use. Manufacturers publish a first-hour rating that estimates how many gallons of hot water the unit can deliver in sixty minutes when starting full and recovering heat during that hour. Your peak-hour demand should be at or below that rating.
This calculator builds a conservative storage recommendation in two layers. First it applies a household-size baseline used widely as a rule of thumb: about thirty gallons for one person, forty for two, fifty for three or four, sixty for five, eighty for six, then ten more gallons per additional person up to a practical one-hundred-twenty-gallon ceiling for common retail tanks.
The recommended raw size is the maximum of the occupant baseline and the tank-from-peak value, then rounded up to the next standard commercial size such as forty, fifty, sixty, or eighty gallons.
What you can do with it
Home remodel and replacement quotes
Enter household size and an estimated morning peak to recommend a forty-, fifty-, or eighty-gallon tank before comparing first-hour ratings on product labels.
FAQ
How does the water heater sizing calculator choose tank size?
It takes the maximum of an occupant baseline table and peak-hour demand times a fuel recovery factor, then rounds up to a common commercial tank size in US gallons (also returned in liters).
Why does fuel type change the recommendation?
Gas recovers heat faster than electric storage, so a smaller tank can still meet the same first-hour demand. Heat-pump units use a higher stored-water share than gas.
What size water heater does a family of four need?
With a 70-gallon peak hour on an electric heater, a 50-gallon tank. The household table alone gives 50 gallons for three or four people, and the peak only takes over when it calls for a bigger tank.
What if I don't know my peak-hour hot water demand?
Leave it blank. The calculator then estimates a morning-style peak from the number of occupants, 8 gallons plus 12 per person, and still gives you a usable tank size and a first-hour rating to look for.
How do I use the first-hour rating printed on the label?
It is how many gallons a full heater delivers in sixty minutes while it reheats. Choose a model whose rating meets or exceeds your peak-hour demand; the result shows that target next to the recommended tank.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/home/water-heater-sizing \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"occupants":4}'const res = await fetch("https://api.kit.forhosting.com/home/water-heater-sizing", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"occupants": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/water-heater-sizing",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"occupants": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/water-heater-sizing", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"occupants":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"occupants":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/water-heater-sizing", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"occupants": 4
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.water_heater_sizing",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
How occupants and peak-hour demand set tank size
Second it converts peak-hour demand into a tank-from-peak figure by multiplying demand by a recovery factor that depends on fuel: electric units recover more slowly so a larger share of the hour must come from stored water; gas recovers faster; heat-pump hybrids sit between electric storage behavior and high recovery.
Input fields, units, fuel, and response shape
POST a JSON body with occupants as a required whole number from one to thirty people living in the home. Optionally send peak_hour_demand as a non-negative volume of hot water needed in the busiest hour, using unit gal for US gallons (default) or L for liters. Optionally set fuel to electric (default), gas, or heat_pump so the recovery factor matches the heater type you plan to install. Aliases such as people, household_size, peak_demand, and natural_gas are accepted so forms and spreadsheets can map without renaming every column. Missing occupants, non-integer people counts, negative demand, or unknown fuel strings fail with invalid_input and are not billed. On success the body echoes occupants, unit, and fuel; reports whether peak demand was estimated; returns peak demand, occupant baseline, tank-from-peak, and raw size in both US gallons and liters; gives recommended_tank_gal and recommended_tank_liters after standard-size round-up; includes recommended_first_hour_rating fields matching the peak target; and adds matched_standard, method, formula, message, and step strings for display.
Where a water heater sizing API earns its keep
Home-improvement sites and SEO landings that rank for water heater sizing calculator need a live tool whose free browser path matches the paid automation path on the same pure module. Property managers batch-size replacements across units by posting occupants and a measured or assumed peak hour from laundry and shower schedules. Failed validation does not consume balance. HVAC and plumbing estimators embed the call in quote forms so customers see a tank gallon suggestion next to first-hour rating language before a site visit. Spreadsheet plugins and home-audit apps call the API to fill a recommended_tank_gal column without shipping opaque vendor tables.
Integration use cases
Property management batch sizing
POST occupants and peak-hour demand for each unit type to fill recommended_tank_gal columns in replacement schedules and purchase orders.
SEO widgets and contractor lead forms
Embed the free browser path on a water heater sizing page so visitors get the same gallon recommendation your API later uses in automation.
Technical questions
What if I do not know peak-hour demand?
Omit peak_hour_demand. The calculator estimates peak gallons as 8 + 12 × occupants and sets peak_estimated to true so you can refine later with a fixture audit.
What units does the API accept?
occupants is a whole number of people. peak_hour_demand uses unit gal (US gallons, default) or L (liters). Results always include both gallons and liters.
What does the water heater sizing calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.