Donut calorie calculator
Two glazed donuts hold 538 kcal, and at 70 kg that takes about three quarters of an hour of steady jogging to burn. Pick the donut type and count, add your weight, and get both figures. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Quantity
- 2
- Donut type
- Glazed
- Weight
- 70
- Kcal per donut
- 269
- Daily calories
- 538
- Running minutes
- 44.814661
- Met
- 9.8
A glazed doughnut is a known packet of energy, and a steady jog is a known way to spend it. This donut calorie calculator accepts a donut count, a donut type, and body weight in kilograms, then returns the two figures people actually search for: how many kilocalories those donuts contain, and how many minutes of running it takes to burn them. Calories come from a closed table of bakery items (glazed, chocolate, jelly, Boston cream, old-fashioned, cake, powdered, maple, cruller, apple fritter), so the same count and type always produce the same energy. Running minutes use the Compendium MET of 9.8 for a six-mile-per-hour jog, scaled by body weight with the ACSM kilocalorie-per-minute identity.
Running minutes from body weight
Kilocalories alone do not answer the search that follows a bakery stop: how long do I have to run to burn this. Running cost depends on body mass, so the second required input is weight in kilograms. The burn rate uses the Compendium of Physical Activities code for running at six miles per hour (a ten-minute mile), MET 9.8, and the ACSM identity kilocalories per minute equals MET times 3.5 times body weight in kilograms divided by 200.
Running minutes then equal total calories divided by that rate. Weight must be a finite positive number. The model is a level-road jog at a fixed MET: it does not add hills, sprint intervals, or walking.
What you can do with it
After the bakery run plan
Enter how many donuts you ate, pick the type, and read how many minutes of running at a six-mile-per-hour jog it takes to burn them at your body weight.
Meal-log and coaching apps
Resolve a donut line-item to kilocalories and an equivalent run block without maintaining a bakery calorie table or a MET engine in every client.
FAQ
How many calories are in a glazed donut, and how is the total computed?
A glazed donut is stored as 269 kilocalories per item.
How does the calculator turn those calories into running minutes?
It uses MET 9.8 for running at 6 mph. Kilocalories per minute equal 9.8 × 3.5 × weight in kilograms ÷ 200. Running minutes equal total calories divided by that rate. Heavier body weight shortens the time at the same pace.
What happens if body weight is zero or negative?
Weight must be a finite positive number in kilograms; body weight that is not greater than zero cannot produce a burn rate, and the failure is not billed.
Which donut has the most calories?
The apple fritter, at 476 kcal per piece, is the heaviest item on the list. The cake donut is the lightest at 198 kcal, while a glazed donut has 269 kcal and a chocolate one 340 kcal.
Does the running time include hills or sprints?
No. The minutes assume a steady jog on a level road at 6 miles per hour, a ten-minute mile, with a fixed effort value of 9.8 MET. Hills, sprint intervals and walking breaks are not part of the estimate.
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/cook/donut \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"count":2,"donut_type":"glazed","weight":70}'const res = await fetch("https://api.kit.forhosting.com/cook/donut", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"count": 2,
"donut_type": "glazed",
"weight": 70
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/donut",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"count": 2,
"donut_type": "glazed",
"weight": 70
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/donut", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"count":2,"donut_type":"glazed","weight":70}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"count":2,"donut_type":"glazed","weight":70}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/donut", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"count": 2,
"donut_type": "glazed",
"weight": 70
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.donut",
"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_count | 10000 |
max_weight_kg | 500 |
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
If body weight is not a positive number the task fails with invalid_input instead of inventing a burn time.
Calories from donut count and type
A donut calorie calculator is only useful when the energy figure is attached to a named bakery item, not to a vague pastry. Count may be a whole number or a fraction when someone ate half a fritter; it must be a finite non-negative number and cannot exceed ten thousand. Calories in the response equal count times the table value for that type. This capability stores a closed table of kilocalories per donut for ten common types: glazed at 269, chocolate at 340, jelly at 289, boston_cream at 300, old_fashioned at 310, cake at 198, powdered at 226, maple at 270, cruller at 254, and apple_fritter at 476. Those figures are typical USDA and bakery-label values for one standard item, not for one hundred grams, so a count of two glazed donuts is 538 kilocalories rather than a scaled serving of dough. The field donut_type is an enum: the form paints a select, the API rejects unknown strings with invalid_input, and two clients never disagree on whether glazed means a yeast ring. If you need a custom bakery item, pick the closest type or scale count; this endpoint does not accept a free-form calorie override, because a free-form number would make the donut-type landing pointless.
Running minutes from body weight
Zero, negatives, NaN, and Infinity fail with invalid_input naming weight and stating that body weight has to be greater than zero, and those failures are not billed. Echoed fields include met and kcal_per_minute so a client can show the working, not only the final minutes.
Input contract, response shape, and where it fits
Failed validation does not consume balance. POST a JSON body with three required fields: count (non-negative finite number of donuts), donut_type (one of the ten canonical ids), and weight (positive body weight in kilograms). Missing fields, non-finite numbers, an unknown donut type, a negative count, and a non-positive weight all fail as invalid_input with a message that names the field. On success the body includes the echoed count, donut_type, and weight; kcal_per_donut from the table; calories; running_minutes; the MET used; kcal_per_minute; and a short formula string. Example: count 2, donut_type glazed, weight 70 yields 538 kilocalories and the running minutes that a 70 kilogram person needs at MET 9.8 to spend that energy. Pair the numbers with your own food diary or training log if you need a daily remaining budget; this endpoint only converts a donut load into calories and running minutes.
Integration use cases
Classroom energy examples
Show that the same pastry costs a lighter runner more minutes than a heavier one, using a deterministic MET identity students can check by hand.
Technical questions
Which donut types can I send in donut_type?
The enum is glazed, chocolate, jelly, boston_cream, old_fashioned, cake, powdered, maple, cruller, and apple_fritter. Unknown strings are rejected. Hyphens and spaces in names such as Boston cream are accepted as aliases of the canonical id.
Does the free donut widget match the API, and what does a call cost?
Yes: handler and widget share the same solve module, so calories and running minutes agree byte-for-byte. The browser tool is free. API requests use prepaid balance at $0.002 per successful call; invalid input is not billed.