# VDOT Training Paces Calculator

> Estimates VDOT (Jack Daniels' pseudo-VO2max) from one race distance and time with the Daniels & Gilbert oxygen-cost and duration equations, then derives Easy, Marathon, Threshold, Interval and Repetition training paces per km and per mile.

- Calculator id: `vdot-training-paces` · Category: Sports & Fitness (`fitness`) · Tool name: `calculate_vdot_training_paces`
- Canonical page: https://tttkmbb.com/fitness/vdot-training-paces · This document: https://tttkmbb.com/fitness/vdot-training-paces.md · JSON definition: https://tttkmbb.com/fitness/vdot-training-paces.json

## Purpose

Estimates VDOT (Jack Daniels' pseudo-VO2max) from one race distance and time with the Daniels & Gilbert oxygen-cost and duration equations, then derives Easy, Marathon, Threshold, Interval and Repetition training paces per km and per mile.

**Use when:** You have a recent race or time-trial result and want Daniels-style training paces or a VDOT value to compare fitness over time.

**Do not use when:** You only want predicted finish times for other distances (use race-time-predictor), or you have a measured VO2max from a lab test (VDOT is a performance index, not a physiological measurement).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `distance` | number |  | required | Distance of the race or time trial, in distance_unit (e.g. 5, 10, 21.0975, 42.195 km). (> 0, max 500) |
| `distance_unit` | enum: km \| mi |  | optional, default "km" | Unit of the distance input. |
| `time` | string |  | required | Finish time as h:mm:ss (3:30:00), mm:ss (25:00) or plain minutes. |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `vdot` | number |  | Daniels' VDOT = VO2 at race pace / fraction of VO2max sustainable for the race duration (ml/kg/min). |
| `vo2_at_race_pace_ml_kg_min` | number | ml/kg/min | −4.60 + 0.182258·v + 0.000104·v² with v in m/min. |
| `percent_vo2max_sustained` | number | % | Fraction of VO2max a runner can hold for the race duration (Daniels & Gilbert curve). |
| `race_pace_per_km` | string | min:sec/km | Average pace of the input race. |
| `easy_pace_per_km` | string | min:sec/km | Easy / long-run pace range, slow to fast. |
| `marathon_pace_per_km` | string | min:sec/km | Marathon-effort pace range. |
| `threshold_pace_per_km` | string | min:sec/km | Tempo / cruise-interval pace range. |
| `interval_pace_per_km` | string | min:sec/km | VO2max interval pace range (3–5 minute repeats). |
| `repetition_pace_per_km` | string | min:sec/km | Fast repetition pace range (200–400 m repeats). |
| `training_paces` | list |  | Per zone: name, percent_vo2max, pace_per_km, pace_per_mile (slow–fast) and speed_kmh at the midpoint. |

## Formula

`v = distance_m / t_min; VO2 = −4.60 + 0.182258·v + 0.000104·v²; %VO2max = 0.8 + 0.1894393·e^(−0.012778·t) + 0.2989558·e^(−0.1932605·t); VDOT = VO2 / %VO2max; training velocity for a fraction p: solve 0.000104·v² + 0.182258·v − (4.60 + p·VDOT) = 0, pace = 60000 / v seconds per km; zones Easy 59–74 %, Marathon 75–84 %, Threshold 83–88 %, Interval 95–100 %, Repetition 105–110 % of VDOT`

This is Jack Daniels' VDOT method (Daniels & Gilbert 1979, Daniels' Running Formula). The zone percentages are the ranges Daniels gives for each intensity; his published tables apply small race-duration-specific adjustments, so paces here can differ from the book tables by a few seconds per km and are approximate.

## Data Sources

- Daniels J, Gilbert J (1979) Oxygen Power: Performance Tables for Distance Runners — https://www.worldcat.org/search?q=Oxygen+Power+Performance+Tables+for+Distance+Runners (textbook, retrieved 2026-09-24)
- Daniels J (2021) Daniels' Running Formula, 4th ed., Human Kinetics — https://us.humankinetics.com/products/daniels-running-formula-4th-edition (textbook, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/vdot-training-paces?distance=…&time=…`
- `POST https://tttkmbb.com/api/v1/calculate/vdot-training-paces` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/vdot-training-paces · OpenAPI operationId `calculate_vdot_training_paces` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "vdot-training-paces", "inputs": {…}}`

## Example

- 5 km in 25:00: inputs `{"distance":5,"distance_unit":"km","time":"25:00"}` → `{"vdot":38.3,"vo2_at_race_pace_ml_kg_min":36,"percent_vo2max_sustained":94,"race_pace_per_km":"5:00","easy_pace_per_km":"7:14–6:03","marathon_pace_per_km":"5:59–5:28","threshold_pace_per_km":"5:31–5:16","interval_pace_per_km":"4:57–4:45","repetition_pace_per_km":"4:34–4:24"}`
- Marathon in 3:30:00: inputs `{"distance":42.195,"distance_unit":"km","time":"3:30:00"}` → `{"vdot":44.6,"percent_vo2max_sustained":81.3,"race_pace_per_km":"4:59","threshold_pace_per_km":"4:54–4:40","marathon_pace_per_km":"5:19–4:51"}`

```
GET https://tttkmbb.com/api/v1/calculate/vdot-training-paces?distance=5&distance_unit=km&time=25%3A00
```

## Limitations

You only want predicted finish times for other distances (use race-time-predictor), or you have a measured VO2max from a lab test (VDOT is a performance index, not a physiological measurement). This is Jack Daniels' VDOT method (Daniels & Gilbert 1979, Daniels' Running Formula). The zone percentages are the ranges Daniels gives for each intensity; his published tables apply small race-duration-specific adjustments, so paces here can differ from the book tables by a few seconds per km and are approximate. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Is VDOT the same as VO2max?**

No. VDOT is the VO2max a runner would have if their running economy matched Daniels' reference curve; it is a performance index in VO2max units. Lab VO2max can be several points higher or lower.

**Which race gives the best VDOT?**

A recent all-out race of 5 km to half marathon on a flat course. Short races (mile) overestimate endurance paces and a marathon slowed by fuelling or heat underestimates VDOT.

**Why do these paces differ slightly from the book tables?**

The tables round and adjust each zone for typical repetition lengths; this calculator applies the zone percentages directly to the VDOT equations, so expect differences of a few seconds per km.

## Related

- [Race Time Predictor](https://tttkmbb.com/fitness/race-time-predictor.md) — Riegel-based finish-time predictions for other distances.
- [Running Pace Calculator](https://tttkmbb.com/fitness/running-pace.md) — Pace and splits for a distance and time.
- [VO2 Max Calculator](https://tttkmbb.com/fitness/vo2-max.md) — Field-test estimates of physiological VO2max.
