Swimming calorie calculator
Estimate the calories you burn in the pool from time, body weight and effort: a 70 kg swimmer at moderate intensity for 45 minutes burns about 436 kcal, or 9.68 per minute. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Swim duration in minutes
- 45
- Weight
- 70
- Stroke intensity
- Moderate
- Weight unit
- Kg
- Weight (kg)
- 70
- Met
- 8.3
- Vo2 ml kg min
- 29.05
This swimming calorie calculator estimates how many kilocalories you burn in the pool from three practical inputs: swim duration in minutes, body weight, and stroke intensity (light, moderate, or vigorous effort). Intensity maps to fixed metabolic equivalent (MET) bands drawn from the Compendium of Physical Activities for recreational and lap swimming, then calories follow from MET times body mass in kilograms times time in hours. For a familiar check, a seventy-kilogram swimmer at moderate intensity for forty-five minutes sits at MET eight point three and burns roughly four hundred thirty-six kilocalories under the model used here. The arithmetic is fully deterministic finite math with no network calls, no sampling, and no date-dependent shortcuts.
Where swimming calorie estimates fit in coaching, products, and study
Coaches and clients use a transparent session estimate before they adjust for open water, current, suit drag, or race pacing. App builders map a swim form into log entries without shipping opaque calculator code that drifts between platforms. Students and exercise-science trainees check textbook examples that assume MET times mass times hours and need a fast, offline source of kilocalories and VO2.
Product and education tools use the same contract when a learner types seventy kilograms, forty-five minutes, and moderate intensity and the UI must show MET, VO2, calories per minute, and total kilocalories beside the inputs. Non-positive duration is rejected rather than silently treated as a zero-calorie session, so the UI can prompt for a real bout length.
Pair it with walking calorie tools, deficit planners, or heart-rate helpers when you are building a small lab of free, deterministic health calculators, and always treat the output as a planning estimate rather than a clinical prescription for training load or medical advice.
What you can do with it
Pool session planning
Estimate kilocalories for a known swim duration at your body weight and usual stroke intensity before you start the set.
Fitness apps and coaching logs
Generate reproducible swimming-calorie figures for workout logs, onboarding defaults, and client plan worksheets.
FAQ
What does the swimming calorie calculator cost?
It is free in your browser on this page.
How are calories calculated?
Stroke intensity maps to a MET band (light 5.8, moderate 8.3, vigorous 9.8). Kilocalories equal MET × weight in kg × duration in hours.
What happens if duration is zero or negative?
Non-positive duration cannot define a meaningful swim calorie estimate.
Does this account for open water or stroke technique?
No. The model uses fixed pool-swimming MET bands by intensity only. Current, temperature, and biomechanics are out of scope.
What do light, moderate and vigorous mean in numbers?
Each effort band maps to a fixed MET value for pool swimming: 5.8 for light, 8.3 for moderate and 9.8 for vigorous. Calories are then MET times your weight in kilograms times the hours in the water.
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/health/swimming-calories \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration_min":45,"weight":70,"intensity":"moderate"}'const res = await fetch("https://api.kit.forhosting.com/health/swimming-calories", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration_min": 45,
"weight": 70,
"intensity": "moderate"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/swimming-calories",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration_min": 45,
"weight": 70,
"intensity": "moderate"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/swimming-calories", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration_min":45,"weight":70,"intensity":"moderate"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration_min":45,"weight":70,"intensity":"moderate"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/swimming-calories", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"duration_min": 45,
"weight": 70,
"intensity": "moderate"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.swimming_calories",
"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 | 500 |
max_duration_min | 1440 |
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
What the swimming calorie estimate returns and how to read it
Swimming energy cost rises with body mass, time in the water, and how hard you stroke. This calculator does not invent a lifestyle profile from age, sex, or stroke biomechanics; you supply the weight you want to model, how long you swam, and an effort band that matches the session. Internally, stroke intensity becomes a Compendium-style MET value for pool swimming, MET becomes an oxygen cost of three point five millilitres per kilogram per minute per MET, and kilocalories equal MET times weight in kilograms times duration in hours, which is the same family of conversions used across exercise-science worksheets. The response echoes duration in minutes, normalized weight and units, weight in kilograms, the resolved intensity label, MET, VO2 in millilitres per kilogram per minute, total calories in kilocalories, calories per minute, a method tag compendium_met_swimming, a short formula string, and the decimal precision used. There is no machine-learning path and no random sampling: either the finite arithmetic succeeds inside the documented limits or the request fails with invalid_input. Rejected cases include missing duration, weight, or intensity, non-finite values, values above the documented ceilings, unknown intensity labels, non-positive weight, and any non-positive duration, because a non-positive bout length cannot define a meaningful swim energy estimate. If you need walking bout calories, calorie deficit planning, or heart-rate zones, pair this page with those dedicated tools; this landing answers only swimming session energy with stable numeric output for worksheets, product UIs, and API consumers that must not invent adaptive models.
How duration, weight, and stroke intensity are read and kept reproducible
Intensity accepts light, moderate, and vigorous plus common synonyms: easy, leisurely, low, and recreational map to light MET five point eight; medium, steady, and general map to moderate MET eight point three; hard, intense, high, and race map to vigorous MET nine point eight. Optional leading plus signs and scientific notation on numeric strings are allowed when they parse as finite decimals; embedded spaces, hex prefixes, and non-numeric tokens are rejected with a clear message so a bad cell does not become a wrong calorie total. The preferred fields are duration_min for swim time in minutes, weight for body mass, and intensity for stroke effort. Aliases such as duration, minutes, time_min, mins, swim_min, body_weight, mass, stroke_intensity, effort, level, and stroke are accepted so spreadsheets, query strings, and typed forms can reuse one contract. Optional weight_unit defaults to kilograms and also accepts kg, kilogram, lb, lbs, pound, and pounds. An optional precision field, with aliases decimals and dp, chooses how many decimal places to expose, defaulting to two and capped at fifteen so JSON goldens stay stable. Pair the free browser run on this page with the priced API when you need the identical mathematical result inside an automated pipeline without re-implementing the swimming formulas yourself.
Where swimming calorie estimates fit in coaching, products, and study
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 — matches the rest of the KIT tier-A catalog and lets you move from a classroom demo to an automated pipeline without changing the mathematical result.
Integration use cases
Deterministic test fixtures
Seed CI and unit tests with fixed calories_kcal, MET, and VO2 from the Compendium MET swimming model.
Technical questions
What do light, moderate, and vigorous mean?
They are effort bands for stroke intensity: easy recreational swimming, steady lap work, and hard or race-pace effort respectively.