VO2 max beep test calculator
Stopping at level 8, shuttle 5 of the 20-metre beep test means 66 shuttles, 1320 metres and an estimated VO2 max of about forty-one and a half mL/kg/min. Enter your final level and shuttle to see your aerobic fitness. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Level
- 8
- Shuttle
- 5
- Max shuttle for level
- 11
- Total shuttles
- 66
- Distance m
- 1,320
- Speed kmh
- 12
The multistage fitness test—also called the beep test, bleep test, or 20-metre shuttle run—is a progressive field protocol used in schools, sports clubs, and military fitness standards to estimate aerobic capacity without a laboratory metabolic cart. Participants run back and forth on a 20-metre course to timed audio beeps; the pace starts at 8.5 kilometres per hour and rises by half a kilometre per hour each stage, while the number of shuttles required to complete a stage follows a fixed published table. Missing fields, non-integers, levels outside one through twenty-one, and shuttles beyond the standard count for that stage are rejected as invalid input and are not charged.
What the multistage beep test measures and which inputs you need
VO2 max is the highest rate at which the body can take up and use oxygen during intense exercise, usually expressed in millilitres of oxygen per kilogram of body mass per minute. Laboratory protocols measure it with gas analysis on a treadmill or cycle ergometer, but many PE departments, team sports programs, and recruitment batteries still use the 20-metre multistage shuttle run because it only needs cones, a flat surface, and a standard beep audio track.
You run continuous 20-metre shuttles in time with the beeps until you can no longer match the pace; the official score is the last fully completed stage number and the shuttle number reached within that stage. Level one demands seven shuttles at 8.5 kilometres per hour; later stages add half a kilometre per hour and gradually more shuttles, up to sixteen shuttles at the top stages.
The engine validates the pair against the fixed table, computes cumulative shuttles and distance as total shuttles times twenty metres, reports stage speed, and applies VO2 max equals 3.46 times the quantity level plus shuttle divided by level times 0.4325 plus 7.0045, then plus 12.2.
What you can do with it
PE classes and school fitness standards
Teachers record final beep-test level and shuttle, convert them to estimated VO2 max for grade sheets, and keep one shared formula across classes and years.
FAQ
What happens if the shuttle number is invalid for the level?
Shuttle must be an integer from 1 through the standard shuttle count for that stage (for example level 1 allows 1–7); out-of-range values are rejected and not charged.
Which levels does the calculator accept?
Levels 1 through 21 of the classic 20 m beep test. Stage speed starts at 8.5 km/h and increases by 0.5 km/h each level.
Is the VO2 max beep test calculator free?
The browser tool runs free on your device.
Is this the same as laboratory VO2 max or a Cooper test?
No. This is a field estimate from the multistage 20 m shuttle (beep) test only. Cooper 12-minute distance, Rockport walk, YMCA step, and lab gas-exchange VO2 peak are different protocols and products.
What VO2 max is level 8, shuttle 5 on the beep test?
About forty-one and a half mL/kg/min. Level 8 has 11 shuttles, so reaching shuttle 5 means 66 shuttles in total, or 1320 metres, at a stage speed of 12 km/h.
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/vo2max-beep-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"level":8,"shuttle":5}'const res = await fetch("https://api.kit.forhosting.com/health/vo2max-beep-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"level": 8,
"shuttle": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/vo2max-beep-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"level": 8,
"shuttle": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/vo2max-beep-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"level":8,"shuttle":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"level":8,"shuttle":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/vo2max-beep-test", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"level": 8,
"shuttle": 5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.vo2max_beep_test",
"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
This capability takes the final level and the last shuttle completed within that level, applies a deterministic regression VO2 max equals 3.46 times open parenthesis level plus shuttle over open parenthesis level times 0.4325 plus 7.0045 close parenthesis close parenthesis plus 12.2, and returns structured JSON with stage speed, cumulative shuttle count, distance covered, and estimated maximal oxygen uptake in millilitres per kilogram per minute. The path is pure arithmetic with no network and no random seed, so PE gradebooks, coaching apps, and prepaid API clients get identical results every time.
What the multistage beep test measures and which inputs you need
Send the required field level as an integer from one to twenty-one (aliases stage, lvl, beep_level) and shuttle as a positive integer within the classic shuttle count for that stage (aliases shuttle_number, shuttles, s). Identical inputs always yield identical JSON because the algorithm never touches the network, a model, a clock, or a random generator. Missing level or shuttle, non-finite values, non-integers, level outside the one-to-twenty-one range, and a shuttle count that the stage cannot contain all fail with invalid_input and are not charged.
Reading the response fields and common field-test pitfalls
Remember that the estimate assumes an honest maximal effort on a level 20-metre course with a standard audio track—shortened lanes, early turnarounds, wind, and pacing mistakes all bias the result, and this calculator does not correct for environment. On success the response echoes level and shuttle, max_shuttle_for_level for the stage you reported, total_shuttles as the cumulative count of 20-metre lengths completed through that result, and distance_m equal to total_shuttles times twenty. The speed_kmh field is the pace of the final stage using 8.5 plus 0.5 times open parenthesis level minus one close parenthesis, and vo2max_ml_kg_min is the estimated maximal oxygen uptake. The unit_vo2max field is always ml/kg/min so interfaces can label the number without hard-coding strings. The formula field restates the regression, method is always beep_test_20m_mst, and shuttle_length_m is fixed at twenty so downstream code can recompute distance if needed. Use total_shuttles when comparing athletes who finished mid-stage; use speed_kmh when discussing maximal aerobic speed of the last stage; use vo2max_ml_kg_min when you need a single aerobic-fitness number for logs or standards. Do not confuse this endpoint with Cooper twelve-minute distance, Rockport one-mile walk, YMCA step-test recovery heart rate, or laboratory VO2 peak: those are different search intents and separate KIT products. Extremely impossible shuttle numbers for a stage raise a clear invalid_input message that mentions the allowed shuttle range for that level.
API usage, pricing, coaching workflows, and practical limits
Call the free in-browser VO2 max beep test shuttle-run calculator for PE classes, club fitness days, academy screening, and quick athlete checks without building a spreadsheet of stage tables. Keep expectations educational and operational: this is a field estimate for screening and planning, not a diagnostic medical device, and athletes with health conditions should follow professional advice rather than any single formula alone. Send a JSON body with required integer level and required integer shuttle. Use the prepaid API when a coaching SaaS, sports-science notebook, school LMS, military recruitment tool, or training log needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with your own audio-track and course workflow, then store vo2max_ml_kg_min alongside date, conditions, and total_shuttles for longitudinal charts. Prefer the official last completed level and shuttle recorded by the scorer; if your UI only captures a string such as eight-point-five, split it into level eight and shuttle five before calling the API. Authors shipping SDKs can map vo2max_ml_kg_min directly into dashboards and export CSV columns labeled beep level, shuttle, and estimated VO2 max—the same numbers coaches compute after a multistage trial.
Integration use cases
Team sports screening and academy recruitment
Coaches and scouts log multistage shuttle results and call a prepaid endpoint for VO2 max instead of reimplementing stage tables in every spreadsheet.
Military, police, and homework checkers
Standards units and sports-science courses compare field estimates and pin expected JSON in automated tests with deterministic beep-test outputs.
Technical questions
What is the VO2 max beep test formula used here?
VO2 max in ml/kg/min is 3.46 × (level + shuttle / (level × 0.4325 + 7.0045)) + 12.2, using the final stage and the last shuttle within that stage of the standard 20 m multistage test.