Generator sizing calculator
A fridge, sump pump, LED lights and router draw 1,180 running watts; add the fridge's 1,000-watt start and the peak is 2,180 W, so with headroom you need 2,725 W, a 3,000 W unit. List your appliances to size a portable or standby generator. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Runs in your browser. Free, unlimited — your data never leaves this page.
Buying a backup generator by guessing either leaves the fridge and sump pump offline during an outage or wastes money on a unit far larger than your essential circuit list. This generator sizing calculator turns a plain list of appliances—each with continuous running watts and optional starting surge watts—into a deterministic peak load, a recommended wattage with headroom, and an equivalent kVA figure for comparing nameplates. The classic residential method adds every running watt, then adds only the largest motor start extra (starting minus running for the hungriest starter), multiplies by a safety factor (one point two five by default), and ceilings to whole watts so purchase capacity is never understated. Use the free browser tool when planning a transfer switch shortlist, then call the same pure function from scripts when you generate contractor quotes, product filters, or preparedness checklists.
Where generator sizing shows up in real work
Home improvement retailers and online listings need a quick wattage band so customers pick portable generators that can actually start a fridge and a well pump together instead of returning underpowered two-thousand-watt frames. Electricians and remodelers estimate essential-load transfer lists before ordering standby units and automatic transfer switches, using running-plus-largest-start as a transparent first pass before a full NEC load calculation. Property managers and preparedness planners size temporary backup for server closets, sump circuits, and medical equipment lists before storm season.
Energy coaches teach the difference between continuous and surge so homeowners stop adding every motor’s locked-rotor amps as if they all restart in the same second. If you later need solar panel counts from monthly kilowatt-hours, baseboard heater length from room area, general branch-circuit counts from square footage, or full service-entrance load calculations, treat those as separate search intents and landings rather than overloading this generator sizing calculator page.
What you can do with it
Portable generator shopping
Convert a fridge, pump, lights, and electronics list into recommended continuous watts and the next common retail nameplate so shoppers buy a unit that can start the largest motor.
Standby essential-load shortlists
Give electricians and remodelers a transparent running-plus-largest-start peak and headroom before investing in a full transfer-switch design package.
Preparedness checklists and product filters
Bulk-map appliance tables into wattage recommendations for storm kits, chatbots, and generator product filters that must match the public calculator.
FAQ
Why only the largest starting load, not every surge?
Residential sizing usually assumes one motor starts at a time while other loads run. Adding every locked-rotor surge as if simultaneous overstates need.
What if I only know running watts?
For motors, look up starting or surge watts on the nameplate or manufacturer chart when you can.
Is this a full electrical code load calculation?
No. It is the classic running-plus-largest-start rule of thumb for quick backup generator sizing. Full NEC service and transfer design needs demand factors, continuous-load rules, and a licensed electrician.
What does it cost?
The browser tool is free and runs locally.
What is the safety factor for?
It adds headroom on top of the peak, 1.25 by default, to cover nameplate uncertainty, slightly high voltage drop and modest future growth. The result is then rounded up to whole watts so the capacity is never understated.
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/generator-sizing \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"appliances":[{"name":"Refrigerator","running_watts":200,"starting_watts":1200},{"name":"Sumppump","running_watts":800,"starting_watts":1300},{"name":"LED lights","running_watts":150,"starting_watts":150},{"name":"Modem/router","running_watts":30,"starting_watts":30}]}'const res = await fetch("https://api.kit.forhosting.com/home/generator-sizing", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"appliances": [
{
"name": "Refrigerator",
"running_watts": 200,
"starting_watts": 1200
},
{
"name": "Sumppump",
"running_watts": 800,
"starting_watts": 1300
},
{
"name": "LED lights",
"running_watts": 150,
"starting_watts": 150
},
{
"name": "Modem/router",
"running_watts": 30,
"starting_watts": 30
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/generator-sizing",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"appliances": [
{
"name": "Refrigerator",
"running_watts": 200,
"starting_watts": 1200
},
{
"name": "Sumppump",
"running_watts": 800,
"starting_watts": 1300
},
{
"name": "LED lights",
"running_watts": 150,
"starting_watts": 150
},
{
"name": "Modem/router",
"running_watts": 30,
"starting_watts": 30
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/generator-sizing", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"appliances":[{"name":"Refrigerator","running_watts":200,"starting_watts":1200},{"name":"Sumppump","running_watts":800,"starting_watts":1300},{"name":"LED lights","running_watts":150,"starting_watts":150},{"name":"Modem/router","running_watts":30,"starting_watts":30}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"appliances":[{"name":"Refrigerator","running_watts":200,"starting_watts":1200},{"name":"Sumppump","running_watts":800,"starting_watts":1300},{"name":"LED lights","running_watts":150,"starting_watts":150},{"name":"Modem/router","running_watts":30,"starting_watts":30}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/generator-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
{
"appliances": [
{
"name": "Refrigerator",
"running_watts": 200,
"starting_watts": 1200
},
{
"name": "Sumppump",
"running_watts": 800,
"starting_watts": 1300
},
{
"name": "LED lights",
"running_watts": 150,
"starting_watts": 150
},
{
"name": "Modem/router",
"running_watts": 30,
"starting_watts": 30
}
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.generator_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 generator wattage is estimated from running and starting loads
Portable and standby generators are sold by continuous watts and often also by surge or starting watts. A practical first-pass estimate for a residential essential-load list is to assume every listed appliance may run at the same time, but only one motor starts at a given moment—the usual practice when you avoid simultaneous compressor restarts. Peak watts equal total running plus that single largest start extra. If a listed starting value is below running, running is used for sizing so a data entry slip cannot shrink capacity. This calculator sums all running_watts for total continuous draw, then finds the maximum start extra where start extra equals starting_watts minus running_watts for each row. Optional safety_factor (default one point two five) multiplies the peak before ceiling to recommended_watts, covering nameplate uncertainty, slightly high voltage drop, and modest future growth. Optional power_factor (default zero point eight) converts recommended watts into recommended_kva so you can compare manufacturers who label units in kilovolt-amperes. When starting_watts is omitted, it defaults to running_watts so resistive loads like heaters and lights do not invent a surge. The response also suggests next_standard_watts from a built-in table of common retail nameplates when one is large enough. Every step is deterministic floating-point arithmetic with stable rounding: identical inputs always produce identical JSON. Missing lists, empty arrays, non-positive running watts, out-of-range safety or power factors, and non-finite numbers fail early with invalid_input and are not charged.
What you send and what you get back
Classic check: refrigerator two hundred running and one thousand two hundred starting, sump pump eight hundred and one thousand three hundred, lights one hundred fifty, modem thirty, default margin—total running one thousand one hundred eighty, max start extra one thousand, peak two thousand one hundred eighty, recommended two thousand seven hundred twenty-five watts after one point two five headroom. Validation failures name the offending field so forms can highlight an empty list or a zero running watt row. Wire the free browser form for homeowners and retail floor staff, then call the identical contract from your backend for bulk job lists. Send one required field and two optional fields. appliances is a non-empty array of objects; each object needs positive running_watts and may include starting_watts and an optional name label. Aliases loads, items, list, and devices are accepted for the array. safety_factor is optional and defaults to one point two five when omitted; when provided it must lie between one and three inclusive. power_factor is optional and defaults to zero point eight; when provided it must be greater than zero and at most one. Numeric strings are accepted the same as JSON numbers. On success the response returns appliance_count, a loads array echoing cleaned name, running_watts, starting_watts, start_extra_watts, and original_index for each row, total_running_watts, max_start_extra_watts, largest_start_appliance, peak_watts, the safety_factor and power_factor used, recommended_watts, recommended_kva, optional next_standard_watts, plus formula, method, and unit_note strings. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where generator sizing shows up in real work
E-commerce configurators and chat agents call the API to map appliance tables into a recommendation that stays identical to the public calculator page. Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Technical questions
How is generator size calculated?
total_running = sum of running_watts. max_start_extra = max(starting − running) across appliances. peak = total_running + max_start_extra. recommended_watts = ceil(peak × safety_factor) with default safety_factor 1.25. recommended_kva = recommended_watts / (power_factor × 1000).