ForHosting KIT · Health & fitness

Astrand-Ryhming step test VO2 max calculator

A 30-year-old, 70 kg man whose heart rate settles at 150 after the Astrand-Ryhming step test has an estimated VO2 max of 41.467 mL/kg/min. Enter heart rate, sex, age and weight to estimate aerobic capacity without a maximal test. 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
Heart rate
150
Sex
male
Age
30
Weight
70
Weight unit
Kg
You get
Vo2max ml kg min
41.467
Vo2max l min
2.9027
Workload kgm min
837.9
Workload source
step_protocol

This Astrand-Ryhming step test VO2 max calculator estimates maximal oxygen uptake from a classic submaximal field protocol: a timed stepping bout at a known bench height and cadence, or an equivalent external work rate, together with the steady-state heart rate recorded at the end of the work. Coaches, exercise physiology classes, and wellness programmes use the Astrand-Ryhming approach when a full graded maximal test is impractical, yet they still need a numeric aerobic baseline that can be repeated after a training block. The engine applies the Buono closed-form of the Astrand nomogram with fixed sex-specific coefficients, multiplies by the classic Astrand age-correction factor when requested, and returns both absolute litres per minute and relative millilitres per kilogram per minute. Workload may be entered directly in kilogram-metres per minute or watts, or computed offline from body mass, step height, and steps per minute using the standard step-test mechanical factor. There is no network call, no random sampling, and no dependence on the current date.

What the Astrand-Ryhming estimate tells you

VO2 max is the standard laboratory measure of cardiorespiratory fitness: the highest rate at which the body can take up and use oxygen during intense exercise. Direct measurement needs a metabolic cart and a maximal effort, so field protocols estimate the same quantity from easier submaximal work and heart rate. The Astrand-Ryhming family of tests, introduced in the nineteen fifties, maps a steady work rate and the heart rate that work produces onto an estimated maximal oxygen uptake using a published nomogram.

For stepping, the external work rate is the product of body mass, bench height, stepping cadence, and a mechanical factor that accounts for ascent plus the partial cost of controlled descent. That work rate, together with sex and steady heart rate, enters sex-specific linear fractional formulas that reproduce the nomogram (Buono and colleagues, nineteen eighty-nine).

Absolute VO2 max in litres per minute is then scaled by the classic Astrand age-correction table so younger adults receive a factor near one and older adults a lower factor, and relative VO2 max follows by dividing by body mass. The path is fully deterministic: identical inputs always produce the same rounded output. The tool does not prescribe training zones, medical clearance, or diagnosis; it only evaluates the published Astrand-Ryhming equations on the numbers you supply.

Where the Astrand-Ryhming step test fits in coaching, education, and software

Coaches and personal trainers use a step or cycle Astrand protocol when clients cannot or should not complete a maximal shuttle or treadmill test, yet still want a numeric fitness baseline that can be retested after a training block with the same bench height and cadence.

Teachers and exercise physiology courses assign the Astrand-Ryhming step as a laboratory that students can complete with a metronome and a sturdy bench, then plug steady heart rate and computed workload into the nomogram formulas to see how sex, age, and body mass shift the estimate. Workplace wellness and occupational programmes sometimes prefer a submaximal step because skill demand is low and the bout is short compared with a one-and-a-half-mile run.

Developers call the same contract from scripts to seed deterministic test vectors for fitness apps, to normalise coach-entered logs before charting, or to satisfy programming exercises that demand a documented VO2 max formula rather than a hand-waved chart lookup. Pair it with other free, deterministic VO2 max helpers such as Cooper distance or Rockport walk estimators when you build a small lab of field-test calculators, and always treat the number as an estimate from submaximal work and heart rate, not a clinical diagnosis.

Step-test fitness baselines

Estimate VO2 max after a timed Astrand-Ryhming step bout and retest with the same bench height and cadence to track aerobic change.

Exercise physiology labs

Generate reproducible Astrand results for student worksheets and answer keys from measured heart rate, weight, and step workload.

What does the Astrand-Ryhming step VO2 max calculator cost?

It is free in your browser on this page.

What happens if heart rate, weight, age, or workload is zero or negative?

Non-positive values are not valid for the Astrand-Ryhming estimate.

Is this a medical diagnosis of cardiorespiratory fitness?

No. It is a deterministic field-test estimate from published nomogram formulas and age factors. It does not replace graded exercise testing or clinical advice.

What VO2 max does a heart rate of 150 give in the Astrand step test?

For a 30-year-old man weighing 70 kg on the default 40 cm bench at 22.5 steps a minute, the work rate is 837.9 kgm/min and the estimate is 41.467 mL/kg/min, or 2.9027 L/min, after an age factor of 0.935.

Which heart rate should I record for the Astrand-Ryhming test?

The steady-state heart rate at the end of the stepping bout. It needs to sit in the working range of the nomogram, typically about 125 to 170 beats a minute; a heart rate that is too low cannot be used.

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/vo2max-astrand-step

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/vo2max-astrand-step \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"heart_rate":150,"sex":"male","age":30,"weight":70}'
{
  "heart_rate": 150,
  "sex": "male",
  "age": 30,
  "weight": 70
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "health.vo2max_astrand_step",
  "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.

What the Astrand-Ryhming estimate means and what the response contains

This calculator returns vo2max_ml_kg_min and vo2max_l_min as primary results, echoes heart rate, workload in kilogram-metres per minute, weight in both kilograms and pounds, age, sex, whether age correction was applied and the numeric factor used, optional step height and cadence when those drove the workload, the unit string ml/kg/min, a method tag astrand_ryhming_step, the precision used, and a short formula reminder for the sex branch that ran. Invalid cases fail with invalid_input and are not charged. Rejected inputs include missing heart rate, sex, age, or weight; non-finite values; any non-positive physiological quantity; a heart rate so low that the nomogram denominator is not positive; and values above the documented soft ceilings.

How inputs are read and how the equation stays reproducible

Sex accepts male or female, single-letter m or f, man or woman, and numeric codes one for male and zero for female, selecting the male coefficients zero point zero zero two one two and forty-eight point five or the female coefficients zero point zero zero one nine three and fifty-six point one. Age is years as a positive number and drives linear interpolation on the classic Astrand factor table from age fifteen factor one point one zero through age sixty-five factor zero point six five, with clamping outside that range. Heart rate is required as heart_rate in beats per minute, with aliases hr, pulse, bpm, hrr, and steady_hr, and must be a positive finite number high enough that the sex-specific denominator stays positive. Weight is a positive finite number with optional weight_unit defaulting to kilograms; set weight_unit to lb when the scale reads in pounds. Workload may be supplied directly as workload with optional workload_unit of kgm_min or watts; watts convert with the conventional factor six point one two kilogram-metres per minute per watt used with the nomogram. When workload is omitted, the engine computes it from weight, step_height_cm defaulting to forty centimetres for males and thirty-three for females, and steps_per_min defaulting to twenty-two point five, using W equals mass times height in metres times cadence times one point three three. Optional age_correction defaults to true; set it false to return the uncorrected nomogram absolute value before the age table. Optional precision, with aliases decimals and dp, controls decimal places on numeric fields, defaulting to four 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 coaching or research pipeline.

Where the Astrand-Ryhming step test fits in coaching, education, and software

Product teams use the endpoint when a form collects heart rate, sex, age, weight, and either workload or step protocol fields and the UI must show millilitres per kilogram per minute without shipping a custom implementation of the Buono equations and age table. 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.

Fitness app fixtures

Seed unit tests and CI with deterministic vo2max_ml_kg_min values from known heart rate, sex, age, weight, and workload.

Which formula does this tool use?

The Buono et al. (1989) closed form of the Astrand-Ryhming nomogram: males VO2max L/min = (0.00212×W + 0.299)/(0.769×HR − 48.5)×100; females VO2max L/min = (0.00193×W + 0.326)/(0.769×HR − 56.1)×100, with W in kgm/min, optional Astrand age correction, and relative VO2 max = L/min×1000/weight_kg.

Do I have to enter workload, or can I use step height and cadence?

Either works. Supply workload (kgm/min or watts), or omit it and the engine computes W from weight, step_height_cm (defaults 40 cm male / 33 cm female), and steps_per_min (default 22.5).

Read the full KIT documentation →