Swimming pace calculator
Enter a distance and finish time to get your pace per 100 m and per 100 yards: 1500 m in 20 minutes is 1:20 per 100 m, about 1:13 per 100 yd, plus your speed. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Distance
- 1,500 m
- Time seconds
- 1,200
- Finish time
- 20:00 m
- Distance m
- 1,500
- Distance yd
- 1,640.4199475066
- Distance km
- 1.5
A swimming pace calculator turns a pool or open-water distance and your finish time into the two split numbers coaches and pace clocks use every day: time per one hundred metres and time per one hundred yards. Enter how far you swam or plan to swim, the total time in seconds, and an optional unit (metres, yards, or kilometres); the tool returns pace per 100 m, pace per 100 yd, distance converted across systems, average speed in m/s, km/h, and yd/min, a readable finish-time string, and step-by-step arithmetic you can audit.
What swim pace means and how it is computed
Swim pace is finish time scaled to a fixed reference distance—almost always one hundred metres or one hundred yards—so sets, races, and GPS open-water efforts can be compared on the same board. If you complete one thousand five hundred metres in one thousand two hundred seconds (twenty minutes), your average pace is eighty seconds per one hundred metres, written as one minute twenty seconds per hundred.
The same effort is about seventy-three seconds per one hundred yards because one international yard equals exactly zero point nine one four four metres, so one hundred yards equals ninety-one point four four metres. Average speed is the reciprocal view: distance over time, shown here as metres per second, kilometres per hour, and yards per minute for athletes who prefer velocity language.
This calculator always converts your input distance into metres and yards before scaling time, so a fifteen-hundred-metre swim and a corresponding yard distance that represent the same effort produce matching dual-unit paces within rounding. Coaches, meet directors, and spreadsheet authors care that zero or negative inputs fail loudly: a zero distance would make pace infinite, and a zero time would invent an impossible infinite speed.
Practical tips, limits, and related searches
Prefer sending numbers rather than pre-formatted strings when you control the client; string numbers are accepted only when they match a strict finite numeric pattern. Use metres for long-course and open-water sessions, yards for short-course yards pools, and kilometres for ultra open-water distances so the dual hundred-split output matches how your training group talks. Keep distance and time inside the published maxima; efforts longer than one hundred days or distances above one million units are rejected as out of range rather than returning nonsense.
This landing targets people searching for a swimming pace calculator, pace per 100 meters, pace per 100 yards, or swim splits from finish time; it is not a CSS predictor, not a stroke-rate planner, and not a pool-length converter with turn adjustments. Prefer this capability when you already know distance and elapsed time and only need hundred-based pace and average speed; if your source is a smartwatch export, extract those two scalars first.
What you can do with it
Meet target split cards
Coaches enter goal race distance and goal finish time to print per-100 m and per-100 yd splits for athletes who switch between SCY and LCM pools.
Training log normalization
Apps store distance and elapsed seconds from any unit system, then call this tool once to fill dual hundred-pace columns for charts and exports.
FAQ
How is swimming pace calculated?
Pace is finish time scaled to 100 metres or 100 yards. This tool converts your distance to metres and international yards, then returns seconds and formatted M:SS (or H:MM:SS) per 100 m and per 100 yd.
What units can I use for distance?
Metres (m, default), international yards (yd), or kilometres (km).
What happens if distance or time is zero or negative?
Pace is undefined for non-positive distance, and non-positive time is not a valid finish time.
Is the swimming pace calculator free?
The browser tool is free and runs locally.
How do I enter a finish time like 20:00?
Convert it to total seconds first: 20 minutes is 1200 seconds. The calculator then shows your finish time back as a readable clock, here 20:00, next to the pace per 100 m and per 100 yards.
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/swim-pace \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"distance":1500,"time_seconds":1200}'const res = await fetch("https://api.kit.forhosting.com/health/swim-pace", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"distance": 1500,
"time_seconds": 1200
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/swim-pace",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"distance": 1500,
"time_seconds": 1200
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/swim-pace", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"distance":1500,"time_seconds":1200}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"distance":1500,"time_seconds":1200}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/swim-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": 1500,
"time_seconds": 1200
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.swim_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
Non-positive distance or time is rejected with a clear invalid_input error so bad form data never looks like a world-record hundred.
What swim pace means and how it is computed
The implementation stays inside ordinary IEEE double arithmetic with fixed twelve-decimal rounding on numeric fields and whole-second rounding only on the human-readable M:SS or H:MM:SS pace strings.
How to call the API and what comes back
Send a JSON body with two required finite positive numbers: distance (aliases dist, d, length) and time_seconds (aliases time, finish_time, finish_seconds, t, seconds). Optionally set unit (aliases distance_unit, distanceUnit, from) to m, yd, or km; when omitted the distance is interpreted in metres. Distance must stay within one million units of the chosen system and time within eight million six hundred forty thousand seconds so intermediate products remain finite on the Worker and in the browser. On success the response echoes rounded distance, unit, and time_seconds; sets finish_time to a formatted clock string; publishes distance_m, distance_yd, and distance_km; returns pace_s_per_100m and pace_s_per_100yd as raw seconds plus pace_per_100m and pace_per_100yd as formatted strings; adds speed_mps, speed_kmh, and speed_yd_per_min; includes formula, message, and an ordered steps array showing the conversion and scaling. Failed validation—missing fields, non-finite numbers, non-positive distance or time, unknown unit, or values outside published limits—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price.
Practical tips, limits, and related searches
Convert clock times to total seconds before you call the API: twenty minutes is one thousand two hundred seconds, not the string twenty colon zero zero. When comparing a pace clock that displays per-100 m with a friend who trains in yards, trust the paired pace_per_100m and pace_per_100yd fields from a single call rather than reconverting by hand with approximate factors. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when you deliberately send a zero distance to test client validation.
Integration use cases
Unit tests for swim calculators
Generate known-good 100, 400, and 1500 m fixtures plus deliberate non-positive rejections for golden expected values.
Technical questions
Do I send time as HH:MM:SS?
No. Send total finish time as time_seconds (for example 1200 for 20:00). Formatted clock strings appear in the response fields finish_time, pace_per_100m, and pace_per_100yd.