Water intake calculator
At 70 kg, moderate activity and a temperate climate, the estimate is 2818 ml, or 2.82 litres, a day: enter your weight, activity level and climate to get a daily water target in millilitres and litres, as general guidance. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Weight (kg)
- 70
- Activity level
- Moderate
- Climate
- Temperate
- Water per day (ml)
- 2,818
- Liters
- 2.82
General guidance, not medical advice.
The 35 ml/kg formula
The estimate starts from a baseline of 35 millilitres of water per kilogram of body weight, then scales that figure by two multipliers. Activity level maps to a coefficient: low is 1.0, moderate is 1.15 and high is 1.3, reflecting extra fluid lost through exertion. Climate maps to a second coefficient: temperate is 1.0 and hot is 1.2, accounting for heat and perspiration.
For the sample input of 70 kg at moderate activity in a temperate climate, the raw computation is 70 x 35 x 1.15 x 1.0 = 2817.5 ml, which rounds to 2818 ml and 2.82 litres. Omitting activity or climate applies the moderate and temperate defaults respectively.
Outputs and rounding
The decimals parameter governs how the millilitre value is rounded; it defaults to 0, so you get a whole number of millilitres, and accepts 0, 1 or 2. Rounding uses an explicit half-up rule, which is why 2817.5 becomes 2818 rather than being truncated toward zero. The litre figure is always rounded to two decimal places independently, giving a friendly at-a-glance number such as 2.82.
Because both outputs derive from the same intermediate product, they never disagree: liters is simply ml divided by 1000 and rounded, not a separately re-derived calculation, so a client can display either unit knowing they describe one consistent recommendation.
What you can do with it
Fitness and wellness apps
Give users a daily hydration target from their weight and training load, bumping the figure for high activity or a hot climate.
Onboarding calculators
Embed a quick estimator on a landing page that returns both millilitres and litres so visitors see a number in their preferred unit.
Coaching and nutrition tools
Feed the deterministic ml output into a daily plan, adjusting activity and climate coefficients as a client's routine or location changes.
FAQ
What are the defaults?
activity defaults to moderate, climate to temperate and decimals to 0.
What units are returned?
Both ml (whole millilitres by default) and liters (rounded to two decimals). For 70 kg, moderate, temperate that is 2818 ml and 2.82 litres.
Is this medical advice?
No. It is a general estimate; real needs vary with health, medication and pregnancy.
How much water should someone weighing 70 kg drink a day?
About 2818 ml, or 2.82 litres, with moderate activity in a temperate climate. The estimate starts from 35 ml per kilogram, so 70 times 35 times 1.15 gives 2817.5 ml, rounded up to 2818.
How do exercise and hot weather change the amount?
Activity multiplies the base by 1.0 for low, 1.15 for moderate and 1.3 for high, to cover fluid lost through exertion. A hot climate multiplies it again by 1.2, to account for heat and sweating.
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/dev/water-intake \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"weight_kg":70}'const res = await fetch("https://api.kit.forhosting.com/dev/water-intake", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"weight_kg": 70
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/water-intake",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"weight_kg": 70
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/water-intake", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"weight_kg":70}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"weight_kg":70}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/water-intake", 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_kg": 70
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.water_intake",
"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
Estimates daily water intake in millilitres and litres from weight_kg, an activity level (low, moderate, high) and climate (temperate, hot), starting from 35 ml per kilogram. API from $0.002.
The 35 ml/kg formula
The daily total in millilitres is weight_kg x 35 x activity x climate, rounded, and litres are that millilitre figure divided by 1000.
Outputs and rounding
The response echoes your weight_kg, activity and climate alongside two computed figures: ml, the whole daily volume in millilitres, and liters, the same amount in litres.
Validation, determinism and scope
Crucially, the number is general hydration guidance, not medical advice; real needs vary with health, medication and pregnancy. Inputs are validated strictly before any figure is produced. weight_kg must be a finite number greater than 0 and no more than 300; anything outside that band, or a missing or non-numeric weight, raises a typed invalid_input error naming the field. activity must be exactly low, moderate or high, and climate must be exactly temperate or hot, so unknown strings are rejected rather than silently defaulted, while decimals must be an integer from 0 to 2.
Technical questions
How is the target calculated?
weight_kg x 35 ml, multiplied by an activity factor (low 1.0, moderate 1.15, high 1.3) and a climate factor (temperate 1.0, hot 1.2).
What weights are accepted?
A finite weight_kg greater than 0 and up to 300. Values outside that range return an invalid_input error.