Snow load calculator
A 40 psf ground snow load with all three factors at 1.0 gives a 28 psf roof design load, because the roof carries 0.7 of the ground pack and 28 is above the 20 psf floor. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Ground snow load
- 40
- Exposure factor
- 1
- Thermal factor
- 1
- Importance factor
- 1
- Balanced coefficient
- 0.7 psf
- Formula psf
- 28
- Minimum psf
- 20
- Design snow load psf
- 28
Design snow load is the uniform pressure in pounds per square foot that a roof structure must resist from accumulated snow after the mapped ground snow load has been reduced by exposure, thermal, and occupancy-importance factors. Structural engineers, plan reviewers, and builders start from ground snow load pg on an ASCE 7 or IBC map, apply the balanced-roof identity pf equals 0.7 times Ce times Ct times Is times pg, and then take the greater of that product and the code minimum so a lightly factored roof is never designed below a floor that still represents a plausible ground accumulation.
How the roof snow load is worked out
The mapped ground snow load pg is a uniform pressure in pounds per square foot that represents the weight of snow on the ground at the building site, usually read from an ASCE 7 or International Building Code map or from a site-specific case study. A roof does not hold the same pack as the ground.
Wind scours snow off exposed surfaces, heat escaping through the roof melts part of the pack, and the occupancy importance of the building scales the remaining load so an essential facility is designed more conservatively than a low-hazard storage barn. Those three effects are the exposure factor Ce, the thermal factor Ct, and the importance factor Is. This calculator applies the balanced flat-roof identity used in ASCE 7 Chapter 7: the formula load pf equals 0.7 times Ce times Ct times Is times pg.
The leading 0.7 is the basic reduction from ground to roof in that US loading standard; it is not a slope factor Cs, not a drift surcharge, and not a rain-on-snow adder.
After that product is formed, ASCE 7 still requires a minimum so that a combination of low factors cannot drop the design load below a floor that still represents a plausible ground accumulation: when pg is 20 psf or less the minimum is Is times pg, and when pg is greater than 20 psf the minimum is 20 times Is. The design snow load returned here is the greater of the 0.7 product and that minimum, always reported in psf.
Where a roof snow load calculator earns its keep
Structural engineers meet this calculation at the start of every gravity-load take-off for a warehouse, school, dwelling, or hospital in a snow region, converting a mapped ground value into a roof design pressure before joists, trusses, and purlins are sized, and a missed 0.7 factor or a skipped minimum either undersizes the roof or overstates a load that then drives an expensive member upgrade.
Plan reviewers and building officials embed the same identity in intake tools so an applicant who already knows pg, Ce, Ct, and Is gets a reproducible psf figure instead of a spreadsheet full of hidden cells. Roofing and metal-building estimators use a first-pass design snow load when quoting standing-seam or screw-down panels that are tabulated by psf, then compare the result with manufacturer load tables and with local amendments that may still require a separate drift check.
This is not a snow-to-liquid water equivalent from storm depth, not a roof-pitch converter from rise and run, and not a shingle-count from roof area: those are different search intents with different inputs. Pair it with roof-pitch or member-span helpers when you are building a small lab of free, deterministic structural calculators, and keep engineering judgement for slope factor, drift, sliding snow, rain-on-snow surcharge, and mapped pg that a pure four-factor identity does not replace.
What you can do with it
Gravity-load take-off for roof members
Turn mapped ground snow load and ASCE 7 Ce, Ct, and Is factors into a governing design snow load in psf before joists, trusses, or purlins are sized.
Plan-review intake for snow-region buildings
Let applicants submit pg, exposure, thermal, and importance so reviewers get a reproducible roof snow pressure instead of a hand spreadsheet.
Metal-building and roofing panel quotes
Estimate the balanced design snow load in psf to compare with manufacturer load tables before a separate drift or slope-factor check.
FAQ
How is design snow load calculated from ground snow load?
Send a non-negative ground snow load pg in psf and strictly positive exposure, thermal, and importance factors.
Which exposure, thermal, and importance factors should I use?
Typical ASCE 7 values are Ce 0.7–1.2 by terrain and exposure, Ct 0.85–1.3 by roof heat, and Is 0.8 / 1.0 / 1.1 / 1.2 for risk categories I–IV. Custom positive factors are accepted when a local amendment publishes a different coefficient.
What happens if ground snow load is negative?
A reverse-signed pressure is not a snow load, so the calculator refuses a negative pg instead of returning a negative design load that would corrupt a member check.
When does the ASCE 7 minimum govern instead of the 0.7 product?
When pg is 20 psf or less, the minimum is Is × pg; when pg is greater than 20 psf, the minimum is 20 × Is.
Does the result include snow drifts or roof slope?
No. It is the balanced flat-roof load: the ground load reduced by 0.7 and the three factors, then checked against the minimum. Slope reduction, drifts against parapets and rain-on-snow surcharges are separate checks.
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/build/snow-load \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ground_snow_load":40,"exposure_factor":1,"thermal_factor":1,"importance_factor":1}'const res = await fetch("https://api.kit.forhosting.com/build/snow-load", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ground_snow_load": 40,
"exposure_factor": 1,
"thermal_factor": 1,
"importance_factor": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/build/snow-load",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ground_snow_load": 40,
"exposure_factor": 1,
"thermal_factor": 1,
"importance_factor": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/build/snow-load", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ground_snow_load":40,"exposure_factor":1,"thermal_factor":1,"importance_factor":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ground_snow_load":40,"exposure_factor":1,"thermal_factor":1,"importance_factor":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/build/snow-load", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"ground_snow_load": 40,
"exposure_factor": 1,
"thermal_factor": 1,
"importance_factor": 1
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "build.snow_load",
"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
This calculator accepts ground snow load in psf together with the exposure factor Ce, the thermal factor Ct, and the importance factor Is, returns the formula load, the ASCE 7 minimum, and the governing design snow load in psf, and rejects a negative ground snow load as invalid_input rather than a reverse-signed pressure. The same pure arithmetic runs free in the browser and at $0.002 per successful API call, with no network hop and no model tokens.
What the ASCE 7 balanced roof snow load is and how pf = 0.7 × Ce × Ct × Is × pg is formed
A negative ground snow load is rejected as invalid_input because a reverse-signed pressure is not a snow load and must not be allowed to flow into a member design.
Input contract, exposure thermal and importance factors, and error behaviour
A zero or negative factor is rejected because it cannot honestly scale a snow pressure. Failed validation is not billed. POST a JSON body with four required finite numbers. ground_snow_load is the mapped ground snow load pg in pounds per square foot and must be greater than or equal to zero; aliases include pg, ground_snow, pg_psf, and ground_snow_load_psf. exposure_factor is the ASCE 7 exposure factor Ce and must be strictly positive; typical values are 0.7 for windswept sites above treeline, 0.8 for fully exposed terrain D, 0.9 for fully exposed B or C, 1.0 for partial exposure, 1.1 for sheltered terrain C, and 1.2 for sheltered terrain B; aliases include Ce, ce, and exposure. thermal_factor is the ASCE 7 thermal factor Ct and must be strictly positive; typical values are 0.85 for a continuously heated greenhouse, 1.0 for a heated structure, 1.1 for a cold ventilated roof, 1.2 for an unheated or open-air structure, and 1.3 for a structure kept below freezing; aliases include Ct, ct, and thermal. importance_factor is the snow importance factor Is by risk category: 0.8 for Category I, 1.0 for Category II, 1.1 for Category III, and 1.2 for Category IV essential facilities; aliases include Is, is, importance, and I_s. Missing fields, empty strings, non-finite values, and magnitudes above the supported ceiling fail with invalid_input naming the field. A negative ground snow load fails with a message that ground_snow_load must not be negative. On success the body echoes the four inputs, reports balanced_coefficient 0.7, formula_psf, minimum_psf, and the governing design_snow_load_psf with unit psf, plus governed_by equal to formula or minimum, a method key, and a short formula string. Pair the free browser run on this page with the priced API when you need the identical mathematical result inside an automated pipeline.
Where a roof snow load calculator earns its keep
On this page the work runs entirely in your browser; through the API each successful lookup costs $0.002, failed validation is not charged, and nothing is stored after the response returns. That split — free interactive exploration and a priced, identical API — lets you move from a phone check at a plan desk to an automated pipeline without changing the mathematical result.
Technical questions
What does the snow load calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.