ForHosting KIT · Health & fitness

Training impulse TRIMP calculator

An hour at 70% of heart-rate reserve gives a man a Banister training impulse of just over 100 units, one number you can add up across a week of sessions. Enter minutes, reserve fraction and sex. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Duration min
60
Hrr fraction
0.7
Sex
Male
You get
Weighting a
0.64 AU
Weighting b
1.92
Weighting y
2.4539841744
Trimp
103.0673353252

The Banister training impulse, usually written TRIMP, turns a workout's length and how hard the heart worked into one comparable session-load number. Coaches, sports scientists, and endurance athletes use that score to add Monday's tempo run to Wednesday's intervals without pretending every minute is equal. This calculator applies the original Banister exponential model: duration in minutes times the heart-rate reserve fraction times a sex-specific weighting y equals 0.64 e to the 1.92 ΔHR for males or 0.86 e to the 1.67 ΔHR for females.

What Banister TRIMP measures and which inputs you need

Training impulse is a session-load score, not a target heart-rate zone and not a calorie estimate. Banister's original model asks two training questions and one biological one. How long did the athlete work, in minutes?

How large a share of heart-rate reserve did that work use, as a fraction from rest at zero to maximum at one? And which sex-specific exponential weighting should scale those minutes so that time near maximum heart rate counts more than the same minutes spent easy? Heart-rate reserve fraction, often written ΔHR, is exercise heart rate minus resting heart rate, divided by maximum heart rate minus resting heart rate.

Sex must be male or female; the engine also accepts m, f, man, and woman, then canonicalizes to male or female. Duration must be a positive finite number of minutes, at most ten thousand eighty, which is seven continuous days and is only a safety cap for ultra-endurance logs. The reserve fraction must lie in the closed interval from zero to one; send zero point seven, not seventy.

Where a training load score helps

Coaching platforms and training logs use a Banister TRIMP calculator so each session stores one load number next to duration and average reserve fraction, then weekly and monthly sums become simple additions instead of informal labels such as hard or easy. Wearable and lab pipelines that already compute ΔHR from measured exercise, rest, and maximum heart rates can send that fraction here instead of re-implementing the exponential in every language. Failed validation does not consume balance.

Keep requests small, pin the rounded trimp in tests, and treat the score as an educational planning tool rather than a diagnostic medical device: people with cardiac conditions, rate-altering medication, or physician restrictions should follow professional advice rather than any single impulse formula alone.

Coaching logs and weekly load sums

Store one Banister TRIMP per session from duration and reserve fraction, then add the scores across a microcycle without treating every minute as equal.

What is the Banister training impulse (TRIMP) formula?

TRIMP equals duration in minutes times the heart-rate reserve fraction ΔHR times a sex-specific weight y.

What is heart-rate reserve fraction ΔHR?

ΔHR is (exercise heart rate − resting heart rate) / (maximum heart rate − resting heart rate). It is a fraction from 0 at rest to 1 at maximum. Send 0.70 for seventy percent of reserve, not 70.

Why does the calculator require sex?

Banister published different exponential coefficients for males and females.

How do I use TRIMP to track a training week?

Store one score for each session and add them up across the week or month. Because hard minutes weigh more than easy ones, the sum compares an interval day and a long easy run fairly.

Is a TRIMP score the same as calories burned?

No. It is a session-load number in arbitrary units, not a calorie estimate and not a target heart-rate zone. Use it to compare and add up training loads, not to plan meals.

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.

POSThttps://api.kit.forhosting.com/health/training-impulse-trimp

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.

curl -X POST https://api.kit.forhosting.com/health/training-impulse-trimp \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"duration_min":60,"hrr_fraction":0.7,"sex":"male"}'
{
  "duration_min": 60,
  "hrr_fraction": 0.7,
  "sex": "male"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "health.training_impulse_trimp",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

You send duration_min, hrr_fraction between zero and one, and sex. The response echoes the inputs, reports the weighting y, and returns the TRIMP score with a short formula string. The path is pure arithmetic—no network, no random seed, no clock—so coaching apps and lab notebooks get identical JSON every time. Invalid duration, a reserve fraction outside zero to one, or an unrecognized sex fails with invalid_input and is not billed.

What Banister TRIMP measures and which inputs you need

A steady aerobic hour at seventy percent of reserve is duration_min sixty and hrr_fraction zero point seven; a short all-out effort at reserve fraction one is a smaller duration with a larger weighting. Send required fields duration_min, hrr_fraction, and sex as a JSON object. Aliases duration, minutes, time_min, mins, and duration_minutes work for duration; hrr, delta_hr, fraction, intensity, and hr_reserve work for the reserve fraction; gender and sex_at_birth work for sex. Identical inputs always yield identical JSON because the algorithm never touches the network, a model, a clock, or a random generator.

Reading the Banister formula, the response fields, and the errors

On paper the Banister score is duration times ΔHR times y, where y is an exponential weight that grows with reserve fraction. For males y equals 0.64 times e to the power of 1.92 times ΔHR. For females y equals 0.86 times e to the power of 1.67 times ΔHR. The unit field is AU, arbitrary units, because TRIMP is a constructed load index rather than a physical SI quantity. The formula field restates the identity with both coefficient pairs, and method is always banister so downstream code can branch without sniffing shapes. Those two published coefficient pairs are the reason sex is required: the same sixty minutes at the same reserve fraction is not the same TRIMP for a male athlete and a female athlete, and this endpoint will not silently pick a default. On success the body echoes duration_min, hrr_fraction, and sex, then reports weighting_a and weighting_b so you can show the constants that were used, weighting_y as the evaluated exponential, and trimp as the session score. Missing fields, non-finite values, a non-positive duration, a duration above the seven-day cap, a reserve fraction outside zero to one, and an unrecognized sex all fail with invalid_input naming the field. Those failures are not billed. Do not confuse this endpoint with Edwards zone TRIMP, Lucia TRIMP, Banister's fitness-fatigue convolution over a season, or a Training Stress Score from power: those are different intents and different formulas.

Where a training-impulse API earns its keep

Sports-science classrooms ask students to recompute a worked example by hand and then call this endpoint as an oracle: sixty minutes at seventy percent of reserve for a male athlete must match the same weighting_y and trimp every time, which is why the implementation is pure parse with no clock. Because the implementation is tier A parse, every successful call costs the published $0.002 base price with no model tokens and no outbound network.

Sports-science homework and lab oracles

Students recompute male and female Banister examples by hand and pin expected JSON against this deterministic training impulse TRIMP calculator.

Wearable and coaching SaaS backends

Pipelines that already know ΔHR call a prepaid endpoint for trimp instead of duplicating the sex-specific exponential in every service language.

What happens if hrr_fraction is greater than 1?

The task fails with invalid_input. A reserve fraction above 1 is not a valid share of heart-rate reserve; send a value between 0 and 1 inclusive. Invalid input is not billed.

What does the training impulse TRIMP calculator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →