Snow shoveling calories burned
Thirty minutes of shoveling moderate snow at 70 kg burns about 220.5 kcal: pick the snow weight, enter your body weight and working minutes, and get an estimate you can check by hand. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Weight
- 70
- Duration
- 30
- Snow heaviness
- Moderate
- Calories kcal
- 220.5 kcal
- Calories burned
- 220.5
- Weight (kg)
- 70
- Duration minutes
- 30
A snow shoveling calories burned calculator turns three facts you already have after clearing a driveway, sidewalk, or porch into an estimated energy cost in kilocalories: body weight in kilograms, how many minutes you shoveled, and how heavy the snow was. Light powder, typical packed snow, and wet dense snow map to published Compendium of Physical Activities metabolic equivalents of 5.3, 6.0, and 7.5 MET. The ACSM oxygen-cost identity then multiplies MET, 3.5 millilitres of oxygen per kilogram per minute, body mass, and duration, dividing by 200 to yield kilocalories.
What snow-shoveling calories mean and how heaviness sets MET
Calories burned shoveling snow are an estimate of the extra energy your body spends lifting, pushing, and tossing snow with a shovel, not a laboratory calorimetry measurement and not a full daily energy expenditure figure. Exercise physiologists express that cost through metabolic equivalents. One MET is the oxygen cost of quiet sitting, about 3.5 millilitres of oxygen per kilogram of body mass per minute.
The Compendium of Physical Activities lists hand snow shoveling near 5.3 MET for moderate effort in lighter snow, 6.0 MET for typical packed snow, and 7.5 MET for vigorous work in wet, dense, or heavy snow. Kilocalories follow the ACSM oxygen identity: MET times 3.5 times body weight in kilograms times duration in minutes, divided by two hundred. That is the same as converting oxygen uptake to litres and multiplying by about five kilocalories per litre.
Heavier snow raises MET, so the same person shoveling for the same clock burns more kilocalories when the snow is wet and dense than when it is dry powder. Treat the figure as a transparent chore-log number you can recompute by hand, not as medical advice or a promise of fat loss, which also depends on diet, recovery, clothing, rest pauses, and total daily expenditure.
Practical tips, limits, and related searches
Time only the minutes you were actually shoveling, not the whole morning including coffee, stretching, and waiting for the plow. Rest pauses lower average intensity; if you rested as much as you worked, enter the working minutes rather than the wall-clock span so MET is applied to real effort. Stay inside the published limits: body mass from one to five hundred kilograms, duration from a hundredth of a minute up to one day.
This page targets people searching for snow shoveling calories burned, a snow shoveling calorie calculator, or kcal from shoveling wet snow; it is not a running, cycling, swimming, walking, hiking, or burpee estimator, not a heart-rate calorie model, and not a TDEE planner. Prefer this capability when you already know body weight, shoveling minutes, and how heavy the snow felt and only need a deterministic kilocalorie figure.
Round-trip checks are easy: seventy kilograms for thirty minutes in moderate snow should return two hundred twenty point five kilocalories from MET six, and switching to heavy snow at the same weight and time should raise MET to seven point five and scale the total in the documented proportion.
What you can do with it
Driveway and sidewalk storm logs
Homeowners enter body weight, minutes spent clearing, and whether the snow was powder, packed, or wet so a storm diary keeps a consistent kilocalorie column.
Municipal and volunteer crew diaries
Crew leads record session minutes and snow heaviness after a plow-and-shovel shift so volunteer hours include a transparent energy estimate without a lab test.
Classroom exercise-science drills
Teachers generate answer keys that multiply Compendium MET by kilograms and minutes without spreadsheet drift or guessed per-shovelful rules of thumb.
FAQ
How are snow shoveling calories calculated?
Snow heaviness selects a Compendium MET: 5.3 for light, 6.0 for moderate, and 7.5 for heavy. Kilocalories then equal MET × 3.5 × body weight in kg × duration in minutes / 200 (ACSM oxygen-cost identity).
What does snow heaviness change in the result?
Heavier snow raises MET. The same person shoveling for the same minutes burns more kilocalories in wet dense snow than in dry powder because each lift costs more oxygen.
What happens if duration or weight is zero, negative, or missing?
Duration and weight must be positive finite numbers. Zero, negatives, empty strings, and non-numeric values are rejected rather than treated as a finished chore.
Is duration required in minutes and weight in kilograms?
Yes. Duration is shoveling length in minutes. Convert seconds by dividing by sixty before you call. Weight is kilograms. Snow heaviness must be light, moderate, or heavy.
Is the snow shoveling calorie calculator free?
The browser tool is free and runs locally.
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/sports/snow-shoveling-calories-burned \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"weight":70,"duration":30,"snow_heaviness":"moderate"}'const res = await fetch("https://api.kit.forhosting.com/sports/snow-shoveling-calories-burned", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"weight": 70,
"duration": 30,
"snow_heaviness": "moderate"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/sports/snow-shoveling-calories-burned",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"weight": 70,
"duration": 30,
"snow_heaviness": "moderate"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/sports/snow-shoveling-calories-burned", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"weight":70,"duration":30,"snow_heaviness":"moderate"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"weight":70,"duration":30,"snow_heaviness":"moderate"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/sports/snow-shoveling-calories-burned", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"weight": 70,
"duration": 30,
"snow_heaviness": "moderate"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "sports.snow_shoveling_calories_burned",
"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.
Limits
max_weight_kg | 500 |
max_duration_min | 1440 |
min_weight_kg | 1 |
min_duration_min | 0.01 |
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
Duration or weight that is not a positive number fails with invalid_input so a zero-minute session or a missing mass never looks like a finished chore.
What snow-shoveling calories mean and how heaviness sets MET
This calculator maps the closed snow_heaviness field onto those three published bands: light, moderate, and heavy. The estimate is deterministic: identical weight, duration, and heaviness always yield the same rounded JSON, with no network, no random seeds, and no wall-clock dependence.
How to call the API and what comes back
If you already know a generic MET and only need MET times kilograms times hours, that is a different search; this landing is specifically calories burned shoveling snow from weight, duration, and snow heaviness. Send a JSON body with three required fields. The field weight is body mass in kilograms, a finite positive number between one and five hundred, with aliases body_weight, weight_kg, kg, and mass. The field duration is shoveling time in minutes, a finite positive number between 0.01 and 1440, with aliases duration_min, duration_minutes, minutes, time, and mins. Zero, negatives, empty strings, and non-numeric values for weight or duration fail with invalid_input and are never charged. The field snow_heaviness is a closed enum of light, moderate, or heavy, with aliases heaviness, snow, snow_type, intensity, effort, and load; unknown strings fail rather than being guessed. On success the response echoes cleaned weight_kg, duration_minutes, duration_hours, and snow_heaviness; publishes the mapped met; returns calories_kcal and calories_burned as the same total, unit set to kcal, plus kcal_per_hour; and includes formula, method snow_shovel_met_acsm, a short message, and an ordered steps array showing the MET lookup and ACSM substitution. A classic check is seventy kilograms, thirty minutes, and moderate snow: MET six, two hundred twenty point five kilocalories. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Practical tips, limits, and related searches
Prefer a recent weigh-in in kilograms; this contract takes kilograms so API clients do not need a separate unit library. Choose snow_heaviness honestly: dry powder that flies off the shovel is light; typical packed driveway snow is moderate; wet slush that sticks and strains the back is heavy. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when you deliberately send a zero duration to test client validation. API pricing remains $0.002 per successful request with unit item.