Training pace calculator
10 km in 50 minutes is a pace of 5:00 per km: enter how far you went and how long the clock ran, and get one minutes-per-kilometre figure to compare sessions. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Distance
- 10
- Time seconds
- 3,000
- Time minutes
- 50
- Pace min per km
- 5
- Pace s per km
- 300
- Pace per km
- 5:00
A training pace calculator turns the two numbers every stopwatch already has — distance covered and total elapsed time — into minutes per kilometre, the unit coaches write on a workout card. Enter how far you covered and how long the clock ran; the tool divides elapsed minutes by kilometres and returns a single training pace so you can compare an easy aerobic run, a tempo block, or a race-pace rehearsal on the same scale.
What training pace means and how minutes per kilometre are computed
Training pace is the language of a workout card, not a finish-line clock. Ten kilometres in three thousand seconds is five minutes per kilometre; five kilometres in one thousand four hundred twenty-five seconds is four minutes forty-five seconds per kilometre. The identity does not guess wind, elevation, heart-rate zones, or treadmill grade, and it does not convert miles or yards.
Distance of zero would make the quotient infinite; a non-positive elapsed time is not a clock. Use this landing when you already know how far and how long, and only need the training pace in minutes per kilometre that belongs on the next session card.
Where a deterministic training pace calculator earns its keep
Club coaches printing a Tuesday interval sheet need the same minutes per kilometre for every athlete from the same two inputs, not a spreadsheet cell someone edited during a rain delay. Recreational runners logging an easy ten kilometres want a single training pace they can compare with last week without converting miles or guessing a race equivalent. Indoor-treadmill dashboards that already store kilometres and moving seconds can fill a minutes-per-kilometre column without standing up a running-data vendor.
Failed validation does not consume balance. Keep distance and time in the same session window — do not divide this morning's kilometres by last week's easy minutes — and you get a reproducible training pace for workout cards, LMS quizzes, and edge workers. This landing is for people searching for a training pace calculator or minutes per kilometre from a completed or planned clock.
It is not a race-finish calculator that also emits min/mile with unit conversion, not a min/km to km/h converter, not a cycling average-speed tool, and not a split-band clock. Prefer this capability when you already know how far and how long, and only need minutes per kilometre.
What you can do with it
Coach workout cards
Turn a planned session distance and a target elapsed time into minutes per kilometre so every athlete on mixed watches shares one training pace.
Easy-run and tempo logs
Apps that already store kilometres and moving seconds call this once to fill a deterministic minutes-per-kilometre column for easy, tempo, and interval sessions.
Treadmill and indoor blocks
Convert a treadmill or indoor-track block of known distance and elapsed seconds into the same min/km figure a road loop would report.
FAQ
What happens if distance is zero?
Minutes per kilometre is undefined when distance is not positive, so a zero or negative distance is rejected and is not billed.
Is this the same as a running pace or bike pace calculator?
No. This landing returns a single training pace in min/km from two scalars. A running-pace calculator also emits min/mile with unit conversion; a bike-pace calculator reports cycling km/h. Search intent and output shape differ.
How do I work out my pace per kilometre?
Divide the elapsed minutes by the kilometres covered. 10 km in 3000 seconds, which is 50 minutes, gives 5 minutes per kilometre, shown as 5:00 per km.
How do I enter a time of more than an hour?
Convert it to seconds first: 50 minutes is 3000 seconds, one hour is 3600 and one hour fifteen is 4500. The calculator then divides by your distance in kilometres.
Can I use miles instead of kilometres?
No, this calculator works in kilometres only and returns minutes per kilometre. Convert miles to kilometres first, and take the distance and time from the same session.
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/sports/training-pace \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"distance":10,"time_seconds":3000}'const res = await fetch("https://api.kit.forhosting.com/sports/training-pace", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"distance": 10,
"time_seconds": 3000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/sports/training-pace",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"distance": 10,
"time_seconds": 3000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/sports/training-pace", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"distance":10,"time_seconds":3000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"distance":10,"time_seconds":3000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/sports/training-pace", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"distance": 10,
"time_seconds": 3000
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "sports.training_pace",
"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.
Limits
max_distance | 1000000 |
max_time_seconds | 8640000 |
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
Distance of zero, or any input that is not a strictly positive finite number, is rejected with invalid_input, because minutes per kilometre is undefined when distance is not positive and elapsed time must be a real clock.
What training pace means and how minutes per kilometre are computed
Both cases fail loudly as invalid_input instead of printing Infinity on a log.
Inputs, formula, rounding, and the zero-distance error
Convert hours and minutes before you call: fifty minutes is 3000 seconds, one hour is 3600, one hour fifteen is 4500. Zero distance is rejected explicitly because minutes per kilometre is undefined when nothing was covered. Numeric fields are rounded to ten decimal places for stable goldens across runtimes. Example: 10 kilometres in 3000 seconds yields 5 minutes per kilometre, shown as 5:00 per km. Example: 5 kilometres in 1425 seconds yields 4.75 minutes per kilometre, shown as 4:45 per km. Failed validation is not billed. POST a JSON body with two required finite positive numbers: distance, the kilometres covered during the session, and time_seconds, the total elapsed time as a count of seconds. Each field may arrive as a JSON number or as a numeric string. Aliases dist, d, km, and distance_km are accepted for the kilometres; aliases time, elapsed, elapsed_seconds, t, and seconds are accepted for the clock. Missing fields, empty strings, NaN, Infinity, and non-numeric text fail with invalid_input naming the field. Distance must be strictly greater than zero and at most one million kilometres; time_seconds must be strictly greater than zero and at most eight million six hundred forty thousand seconds (one hundred days). Those ceilings keep intermediate products finite on the Worker and in the browser. On success the body echoes rounded distance and time_seconds, publishes time_minutes so you do not redivide by sixty, returns pace_min_per_km as the primary training pace in minutes per kilometre, returns pace_s_per_km as raw seconds per kilometre, and formats pace_per_km as M:SS or H:MM:SS with whole-second rounding on the display string only. The formula field restates pace_min_per_km = (time_seconds / 60) / distance so a report can print the identity next to the numbers.
Technical questions
How do I compute training pace in minutes per kilometre?
Send finite positive numbers for distance (kilometres) and time_seconds (elapsed seconds). The API returns pace_min_per_km = (time_seconds / 60) / distance, plus a mm:ss pace_per_km string.
What units does the training pace calculator use?
Distance is kilometres. Elapsed time is total seconds (fifty minutes = 3000). The primary result is minutes per kilometre; pace_per_km is the same pace formatted as M:SS.
What does the training pace calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.