Convert running pace to speed
Convert running pace to speed without reaching for a chart or repeating the arithmetic yourself.
Run — free
Enter a positive pace in decimal minutes per kilometer or mile to receive equivalent speeds in kilometers per hour and miles per hour. You can also reverse the calculation: enter a speed in km/h or mph and receive both pace units, plus familiar minute-and-second clock forms. The conversion uses the exact international mile definition and produces deterministic, precision-controlled results for training plans, race analysis, treadmills, and running applications.
Choose the direction and enter the unit you actually know
Start by deciding whether your known value is a pace or a speed. For pace to speed, choose the pace-to-speed direction and enter decimal minutes per kilometer or decimal minutes per mile. A five-minute kilometer is entered as 5, while five minutes thirty seconds is entered as 5.5 because thirty seconds is half a minute. Select the matching pace unit; the result includes both kilometers per hour and miles per hour, so you do not need a second conversion. For the reverse direction, enter a speed and select either km/h or mph. The result includes decimal pace values for calculation and clock-style values such as 5:00 for everyday training use. The value must always be greater than zero. Zero and negative pace have no physical meaning in this conversion, and the calculator reports an input error instead of returning infinity or a misleading negative result. Keep the input unit aligned with the selected direction: pace units belong to pace-to-speed, while speed units belong to speed-to-pace. This explicit pairing prevents a plausible-looking answer from being calculated from the wrong kind of measurement.
Understand the pace and speed formulas
Pace measures time per unit of distance, while speed measures distance per unit of time, so the two quantities are reciprocals. A pace of 5 minutes per kilometer becomes 60 divided by 5, or 12 kilometers per hour. When the pace is stated per mile, the same calculation first gives miles per hour. The result is then converted with the exact international definition of one mile as 1.609344 kilometers. Reverse conversion follows the same relationship: divide 60 by kilometers per hour to obtain minutes per kilometer, or divide 60 by miles per hour to obtain minutes per mile. The calculator derives the companion unit from the same canonical speed, which keeps both reported answers consistent. Numeric outputs can be rounded from zero through twelve decimal places. Rounding happens only after the conversion, not during intermediate steps, so requesting more or fewer displayed digits does not change the underlying formula. Clock-style pace values are rounded to the nearest second because runners commonly read pace as minutes and seconds. The decimal pace remains available when a training system, spreadsheet, or API needs more precise arithmetic than a clock display provides.
Apply the result to training, racing, and software
The conversion is useful whenever two devices or plans describe the same effort differently. A road training plan may prescribe minutes per kilometer, while a treadmill asks for kilometers per hour. A watch export may report minutes per mile, while a coaching dashboard expects miles per hour. Converting both directions lets you transfer the target without estimating from a printed chart. Race analysis also becomes easier: compare the average speed from an event with the pace targets used during workouts, or translate a proposed pace into the speed needed for an indoor session. Developers can use the deterministic response to normalize runner settings, validate imported workout data, or show both metric and imperial values beside a single user input. Use the precision control for machine-facing calculations, but prefer the clock strings when presenting pace to a person. Remember that this is a mathematical conversion, not a performance prediction. It does not account for hills, wind, fatigue, stops, treadmill calibration, or the difference between instantaneous and sustained effort. Treat the result as an exact relationship between units, then apply appropriate judgment when using it as a real-world training target.
What you can do with it
Set a treadmill from an outdoor pace
Turn a coach's min/km or min/mile target into the km/h or mph value required by treadmill controls.
Normalize running app data
Convert a stored speed into metric and imperial pace fields for consistent dashboards, exports, and athlete preferences.
Compare race and training metrics
Translate average race speed into familiar pace units before comparing it with workout splits or a pacing plan.
FAQ
How is pace converted to speed?
Divide 60 by the pace in decimal minutes. This gives speed in the matching distance unit per hour, after which the companion unit is derived.
Can I enter minutes and seconds?
Enter the pace as decimal minutes. For example, 5:30 is 5.5 minutes because 30 seconds is one-half of a minute.
Why must pace and speed be positive?
The reciprocal formula is undefined at zero, and negative time or running speed is not meaningful for this conversion. Such values return an input error.
Which mile definition does the calculator use?
It uses the international mile, defined as exactly 1.609344 kilometers.
What does the API request cost?
Each API request costs $0.002. The same deterministic calculation can also run in the browser.
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/calc2/pace-to-speed-convert \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"pace_to_speed","value":5,"unit":"min_per_km"}'const res = await fetch("https://api.kit.forhosting.com/calc2/pace-to-speed-convert", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "pace_to_speed",
"value": 5,
"unit": "min_per_km"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc2/pace-to-speed-convert",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "pace_to_speed",
"value": 5,
"unit": "min_per_km"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc2/pace-to-speed-convert", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"pace_to_speed","value":5,"unit":"min_per_km"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"pace_to_speed","value":5,"unit":"min_per_km"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc2/pace-to-speed-convert", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"mode": "pace_to_speed",
"value": 5,
"unit": "min_per_km"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc2.pace_to_speed_convert",
"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. |