Calculate daily calorie needs from BMR and activity level
Daily calorie needs are easier to estimate once you already know your basal metabolic rate.
Run — free
This calculator applies a standard activity multiplier to your BMR and returns an estimated total daily energy expenditure, often called TDEE. Choose the activity category that best reflects your typical week, from sedentary through extra active, and receive a transparent result showing the original BMR, selected multiplier, and estimated kilocalories per day. The calculation is deterministic and intended as a practical planning estimate rather than a medical prescription.
Start with a reliable basal metabolic rate
Basal metabolic rate, or BMR, estimates the energy your body would use in a day at complete rest to support essential functions such as breathing, circulation, and temperature regulation. This capability does not derive BMR from age, sex, height, or weight; it expects you to provide a BMR that has already been calculated or measured. Keeping those two steps separate is useful when your BMR comes from a preferred equation, a clinician, or a body-composition assessment. Enter the value in kilocalories per day and make sure it is greater than zero. The calculator deliberately rejects zero, negative values, missing values, text, infinity, and other non-finite numbers because none can represent a usable metabolic baseline. Check which equation produced your BMR and keep its assumptions in mind. Formula-based values are estimates, and two accepted formulas can give different results for the same person. This tool preserves your supplied value and shows it in the output, making the calculation easy to review, reproduce, and audit later.
Choose the activity level that represents a typical week
The activity category converts BMR into estimated total daily energy expenditure by accounting for movement, work, exercise, and the energy associated with daily living. Sedentary uses 1.2 and generally represents little structured exercise. Lightly active uses 1.375, while moderately active uses 1.55. Very active uses 1.725, and extra active uses 1.9 for unusually demanding schedules. These labels describe broad patterns rather than exact step counts, training minutes, or job demands, so select the category that best represents an ordinary week instead of the hardest day you recently completed. Consistency matters more than optimism. If you sit for most of the workday but exercise a few times each week, moderately active may overstate expenditure depending on training duration and intensity. When uncertain, calculate adjacent categories and treat the range as a planning interval. The response includes the exact multiplier, so there is no hidden adjustment. Revisit the category whenever your job, commute, training schedule, injury status, or general movement changes for more than a brief period.
Interpret the TDEE estimate and adjust with evidence
The result multiplies BMR by the selected activity factor and rounds the estimated daily calorie needs to two decimal places. That number is a starting estimate of maintenance energy, not a guarantee that eating precisely that amount will keep body weight unchanged. Real expenditure varies with body composition, spontaneous movement, training load, sleep, illness, food intake, and measurement error in the original BMR. Use the estimate as an initial planning target, then compare it with consistent observations over several weeks. If body weight and relevant performance measures remain stable, the estimate may be close to your actual maintenance needs. If the trend moves steadily, adjust your working target gradually and reassess. Avoid drawing conclusions from a single day because hydration, sodium, carbohydrate storage, digestion, and normal scale variation can obscure the underlying trend. People managing pregnancy, growth, an eating disorder, metabolic disease, or another clinical concern should use individualized professional guidance. The API returns the input, category, multiplier, result, and unit, which makes it straightforward to store calculations, explain assumptions, and repeat them when circumstances change.
What you can do with it
Set a maintenance starting point
Turn an existing BMR into a transparent daily maintenance estimate before monitoring longer-term trends.
Compare activity scenarios
Run adjacent activity levels to see how a quieter or more demanding weekly routine changes estimated needs.
Automate nutrition planning
Use the deterministic API result in a meal-planning or coaching workflow for $0.002 per request.
FAQ
What formula does the calculator use?
It multiplies the supplied BMR by the standard multiplier assigned to the selected activity level.
Which activity multipliers are available?
Sedentary is 1.2, lightly active is 1.375, moderately active is 1.55, very active is 1.725, and extra active is 1.9.
What happens if BMR is zero or negative?
The request returns an invalid input error because BMR must be a positive, finite number.
Is the result medical advice?
No. It is a general mathematical estimate for planning and does not replace individualized medical or nutrition advice.
How much does the API request cost?
Each API request costs $0.002. The calculation uses no network service or model inference.
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/calc2/calorie-needs-activity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bmr":1600,"activity_level":"moderately_active"}'const res = await fetch("https://api.kit.forhosting.com/calc2/calorie-needs-activity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bmr": 1600,
"activity_level": "moderately_active"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc2/calorie-needs-activity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bmr": 1600,
"activity_level": "moderately_active"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc2/calorie-needs-activity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bmr":1600,"activity_level":"moderately_active"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bmr":1600,"activity_level":"moderately_active"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc2/calorie-needs-activity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"bmr": 1600,
"activity_level": "moderately_active"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc2.calorie_needs_activity",
"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. |