Whether you're training for a 5K or marathon, understanding pace calculations helps you plan your runs, set goals, and track improvement. Here's the math behind running pace.
The Basic Relationship
Distance = Speed × Time
Speed = Distance / Time
Time = Distance / Speed
In running, we typically express this as pace (time per distance) rather than speed (distance per time).
Pace vs Speed
| Metric | Example | Used For |
|---|---|---|
| Pace | 8:00 min/mile | Running, walking |
| Speed | 7.5 mph | Cycling, driving |
Pace is the inverse of speed:
Pace (min/mile) = 60 / Speed (mph)
Speed (mph) = 60 / Pace (min/mile)
Example:
7.5 mph = 60 / 7.5 = 8:00 min/mile
8:00 min/mile = 60 / 8 = 7.5 mph
Common Running Distances
| Distance | Miles | Kilometers |
|---|---|---|
| 5K | 3.107 | 5 |
| 10K | 6.214 | 10 |
| Half Marathon | 13.109 | 21.0975 |
| Marathon | 26.219 | 42.195 |
Converting Pace Units
Minutes per Mile ↔ Minutes per Kilometer
min/km = min/mile × 0.621371
min/mile = min/km × 1.60934
Example:
8:00 min/mile = 8 × 0.621371 = 4:58 min/km
5:00 min/km = 5 × 1.60934 = 8:03 min/mile
Handling Minutes:Seconds Format
Pace is usually expressed as MM:SS. Convert to decimal for calculations:
// Convert "8:30" to 8.5 minutes
function paceToDecimal(paceString) {
const [min, sec] = paceString.split(':').map(Number);
return min + sec / 60;
}
// Convert 8.5 to "8:30"
function decimalToPace(decimal) {
const min = Math.floor(decimal);
const sec = Math.round((decimal - min) * 60);
return `${min}:${sec.toString().padStart(2, '0')}`;
}
// Examples
paceToDecimal('8:30'); // 8.5
decimalToPace(8.5); // '8:30'
Calculate Finish Time
Time = Distance × Pace
Example: 5K at 9:00 min/mile pace
Distance = 3.107 miles
Time = 3.107 × 9 = 27.96 minutes = 27:58
JavaScript Function
function calculateFinishTime(distanceMiles, paceMinPerMile) {
const totalMinutes = distanceMiles * paceMinPerMile;
const hours = Math.floor(totalMinutes / 60);
const minutes = Math.floor(totalMinutes % 60);
const seconds = Math.round((totalMinutes * 60) % 60);
if (hours > 0) {
return `${hours}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}
return `${minutes}:${seconds.toString().padStart(2, '0')}`;
}
// 5K at 9:00/mile
calculateFinishTime(3.107, 9); // "27:58"
// Marathon at 10:00/mile
calculateFinishTime(26.219, 10); // "4:22:11"
Calculate Required Pace
Pace = Time / Distance
Example: Finish a 5K in 25 minutes
Pace = 25 / 3.107 = 8.04 min/mile = 8:03/mile
JavaScript Function
function calculatePace(distanceMiles, timeMinutes) {
const pace = timeMinutes / distanceMiles;
return decimalToPace(pace);
}
// 5K in 25 minutes
calculatePace(3.107, 25); // "8:03"
// Marathon in 4 hours (240 min)
calculatePace(26.219, 240); // "9:09"
Pace Charts
5K Finish Times
| Pace (min/mile) | Pace (min/km) | Finish Time |
|---|---|---|
| 6:00 | 3:44 | 18:39 |
| 7:00 | 4:21 | 21:45 |
| 8:00 | 4:58 | 24:51 |
| 9:00 | 5:35 | 27:58 |
| 10:00 | 6:13 | 31:04 |
| 11:00 | 6:50 | 34:11 |
| 12:00 | 7:27 | 37:17 |
Marathon Finish Times
| Pace (min/mile) | Pace (min/km) | Finish Time |
|---|---|---|
| 6:52 | 4:16 | 3:00:00 |
| 7:38 | 4:45 | 3:20:00 |
| 8:01 | 4:59 | 3:30:00 |
| 9:09 | 5:41 | 4:00:00 |
| 10:18 | 6:24 | 4:30:00 |
| 11:27 | 7:07 | 5:00:00 |
Splits and Negative Splits
Even Splits
Running each mile at the same pace:
5K at 8:00/mile with even splits:
Mile 1: 8:00 (total: 8:00)
Mile 2: 8:00 (total: 16:00)
Mile 3: 8:00 (total: 24:00)
Final 0.1: 0:48 (total: 24:48)
Negative Splits
Running the second half faster than the first:
Marathon goal: 4:00:00 (9:09/mile average)
First half at 9:20/mile: 2:02:12
Second half at 8:58/mile: 1:57:48
Total: 4:00:00 ✓
Positive Splits
Running slower as you fatigue (common but not ideal):
First half: 1:55:00
Second half: 2:05:00
Total: 4:00:00
Speed Work Calculations
Intervals
For 400m repeats at a specific pace:
function calculateIntervalTime(targetPacePerMile, intervalMeters) {
// Convert pace to minutes per meter
const pacePerMeter = targetPacePerMile / 1609.34;
// Calculate interval time in seconds
const intervalSeconds = pacePerMeter * intervalMeters * 60;
const minutes = Math.floor(intervalSeconds / 60);
const seconds = Math.round(intervalSeconds % 60);
return `${minutes}:${seconds.toString().padStart(2, '0')}`;
}
// 400m at 6:00/mile pace
calculateIntervalTime(6, 400); // "1:29"
// 800m at 7:00/mile pace
calculateIntervalTime(7, 800); // "3:29"
VDOT and Training Paces
Many coaches use VDOT tables to prescribe training paces:
| Race Pace | Easy | Tempo | Interval |
|---|---|---|---|
| 7:00/mi | 8:30-9:00 | 7:30 | 6:30 |
| 8:00/mi | 9:30-10:00 | 8:30 | 7:30 |
| 9:00/mi | 10:30-11:00 | 9:30 | 8:30 |
General rules:
- Easy pace: 1:30-2:00 slower than race pace
- Tempo pace: 30-45 seconds slower than 5K pace
- Interval pace: 30 seconds faster than 5K pace
Complete Pace Calculator
const PaceCalculator = {
// Convert MM:SS to decimal minutes
parseTime(timeStr) {
if (timeStr.includes(':')) {
const parts = timeStr.split(':').map(Number);
if (parts.length === 3) {
// HH:MM:SS
return parts[0] * 60 + parts[1] + parts[2] / 60;
}
// MM:SS
return parts[0] + parts[1] / 60;
}
return Number(timeStr);
},
// Convert decimal minutes to MM:SS or HH:MM:SS
formatTime(minutes) {
if (minutes >= 60) {
const h = Math.floor(minutes / 60);
const m = Math.floor(minutes % 60);
const s = Math.round((minutes * 60) % 60);
return `${h}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;
}
const m = Math.floor(minutes);
const s = Math.round((minutes - m) * 60);
return `${m}:${s.toString().padStart(2, '0')}`;
},
// Calculate finish time
finishTime(distanceMiles, paceMinPerMile) {
return this.formatTime(distanceMiles * paceMinPerMile);
},
// Calculate required pace
requiredPace(distanceMiles, timeMinutes) {
return this.formatTime(timeMinutes / distanceMiles);
},
// Convert pace between units
mileToKm(pacePerMile) {
return pacePerMile * 0.621371;
},
kmToMile(pacePerKm) {
return pacePerKm * 1.60934;
},
// Convert pace to speed
paceToSpeed(paceMinPerMile) {
return 60 / paceMinPerMile;
},
// Convert speed to pace
speedToPace(mph) {
return 60 / mph;
}
};
// Examples
PaceCalculator.finishTime(26.219, 9.15); // "4:00:06"
PaceCalculator.requiredPace(3.107, 25); // "8:03"
PaceCalculator.paceToSpeed(8); // 7.5 mph
Key Formulas Summary
| Goal | Formula |
|---|---|
| Finish time | Distance × Pace |
| Required pace | Time ÷ Distance |
| Pace to speed | 60 ÷ Pace (min/mi) |
| Speed to pace | 60 ÷ Speed (mph) |
| Mile to km pace | Pace × 0.621 |
| Km to mile pace | Pace × 1.609 |
Summary
- Pace = time per distance (min/mile or min/km)
- Speed = distance per time (mph or km/h)
- Pace and speed are inverses:
pace = 60 / speed - Convert times to decimal for calculations
- Plan your race splits based on your target finish time
Need to calculate your pace? Try our Pace Calculator!