Calculators

Running Pace Math: Time, Distance, and Speed

How to calculate running pace, convert between units, and understand the relationship between time, distance, and speed.

HandyUtils December 19, 2025 6 min read

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!

Related Topics
running pace speed distance time marathon 5K pace calculator
Share this article

Continue Reading

Calculators
Understanding BMI: What the Numbers Mean

A practical guide to Body Mass Index, how it's calculated, its limitations, and what the categories actually mean for health.

Calculators
How Loan Interest Works: Simple vs Compound

Understanding interest calculations, APR vs APY, amortization, and how to calculate loan payments with practical formulas.

Data & Files
Understanding File Sizes: Bits, Bytes, and Beyond

A complete guide to digital storage units from bits to terabytes, including the confusing differences between MB and MiB.