---
title: "Race Time Prediction"
description: "Your quick, science-backed guide to race time prediction — how VDOT turns one race result into finish times at every distance, and when to trust the number."
canonical_url: "https://runima.fit/cheatsheets/race-time-prediction"
---

> Index of every page on this site: [llms.txt](https://runima.fit/llms.txt)

## TL;DR

<tldr-summary lead="One honest race result predicts your time at every other distance — the input matters more than the formula." takeaway="Garbage in, garbage out: a clean input race beats any amount of formula-tweaking.">
<template v-slot:dos="">

- Use a recent all-out race or time trial as the input
- Predict between nearby distances (5K → 10K) for the tightest accuracy
- Prefer a watch's running VO₂max over a lab number
- Treat marathon predictions as a range, not a promise
- Re-test every 6–8 weeks as fitness shifts

</template>

<template v-slot:donts="">

- Don't extrapolate a 5K straight to marathon distance
- Don't feed in a hot, hilly, or badly-paced effort
- Don't trust a lab VO₂max reading over a real race result
- Don't skip distance-specific training and expect the number to hold

</template>
</tldr-summary>

## What race time prediction actually is

<u-alert color="success" description="Race time prediction back-calculates a single fitness score — VDOT — from one race result, then projects it onto every other standard distance." icon="i-ph-check-circle-duotone" title="In one sentence" variant="subtle">



</u-alert>

A predictor doesn't measure your fitness directly — it reverse-engineers it from a performance you've already produced. The standard method, the **Daniels-Gilbert formula**, converts a distance-and-time pair into **VDOT**: a number that folds together both your aerobic ceiling and your running economy (how efficiently you convert oxygen into speed). Two runners can share an identical lab VO₂max and still post very different race times — the more economical runner has the higher VDOT, and the formula captures that automatically because it works from a real performance, not a treadmill reading.

That's also why the source of your VO₂max matters. A **running watch estimate** is distance-specific and tracks VDOT closely. A **lab-measured VO₂max** ignores economy entirely, so it typically reads **5–10% higher** than your true VDOT — plug it in and every predicted time comes out slightly optimistic.

<callout color="neutral">
<span className="uppercase,text-xs,text-neutral-500,font-semibold,tracking-wider">

How to read the impact scale

</span>



<impact-scale>



</impact-scale>

<span className="mt-3,block,text-sm,text-neutral-500">

Ratings reflect how much each factor typically moves prediction accuracy. Individual results vary.

</span>
</callout>

## What sharpens the prediction

Where accuracy actually comes from. Sorted roughly by how much each one moves the number.

<table>
<thead>
  <tr>
    <th>
      Factor
    </th>
    
    <th>
      Why it helps
    </th>
    
    <th align="center">
      Impact
    </th>
    
    <th>
      Best for
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        A recent all-out race result
      </strong>
    </td>
    
    <td>
      Captures fitness <em>
        and
      </em>
      
       economy in one number — no separate formula guesses needed.
    </td>
    
    <td align="center">
      <impact-dots value="4">
        
      </impact-dots>
    </td>
    
    <td>
      Any prediction
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Predicting between nearby distances
      </strong>
    </td>
    
    <td>
      5K → 10K keeps the extrapolation short; the %VO₂max gap between them is small.
    </td>
    
    <td align="center">
      <impact-dots value="4">
        
      </impact-dots>
    </td>
    
    <td>
      3K–15K range
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        A flat, cool, honestly-paced input effort
      </strong>
    </td>
    
    <td>
      The formula reads pace as pure effort — heat, hills, and uneven pacing all distort it.
    </td>
    
    <td align="center">
      <impact-dots value="4">
        
      </impact-dots>
    </td>
    
    <td>
      Any prediction
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Training specifically for the target distance
      </strong>
    </td>
    
    <td>
      The table assumes race-ready fitness at that distance; specific endurance work closes the gap.
    </td>
    
    <td align="center">
      <impact-dots value="3">
        
      </impact-dots>
    </td>
    
    <td>
      Half & marathon
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        A running watch's VO₂max estimate
      </strong>
    </td>
    
    <td>
      Distance-specific and close to VDOT — a solid stand-in with no race on the calendar.
    </td>
    
    <td align="center">
      <impact-dots value="3">
        
      </impact-dots>
    </td>
    
    <td>
      Quick estimates
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Re-testing every 6–8 weeks
      </strong>
    </td>
    
    <td>
      VDOT moves with training; a stale input race quietly drifts the whole table.
    </td>
    
    <td align="center">
      <impact-dots value="2">
        
      </impact-dots>
    </td>
    
    <td>
      Ongoing training
    </td>
  </tr>
</tbody>
</table>

<tip icon="i-ph-check-circle-fill">

**The pattern:** the single biggest lever is the *quality of the input race* — not which tool or formula you use. A clean, honest recent effort beats a lab test, a watch guess, or a PR from a year ago every time.

</tip>

## What throws it off

The leaks. The **cost** column shows how much each one distorts the table, with the fix beside it.

<table>
<thead>
  <tr>
    <th>
      Factor
    </th>
    
    <th>
      What goes wrong
    </th>
    
    <th align="center">
      Cost
    </th>
    
    <th>
      Fix
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Big distance gaps (5K → marathon)
      </strong>
    </td>
    
    <td>
      Sustainable %VO₂max drops from ~95–97% at 5K to ~75–80% at marathon — a short race barely constrains the far end of that curve.
    </td>
    
    <td align="center">
      <impact-dots value="4" tone="cost">
        
      </impact-dots>
    </td>
    
    <td>
      Anchor with a race or long tempo closer to your target distance.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Undertrained for the target distance
      </strong>
    </td>
    
    <td>
      The table assumes matched training; a 5K specialist's marathon prediction ignores glycogen, fueling, and durability they haven't built.
    </td>
    
    <td align="center">
      <impact-dots value="4" tone="cost">
        
      </impact-dots>
    </td>
    
    <td>
      Build distance-specific long runs and tempo work first.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        A lab VO₂max as the input
      </strong>
    </td>
    
    <td>
      Runs 5–10% above true VDOT because it ignores running economy — every prediction skews optimistic.
    </td>
    
    <td align="center">
      <impact-dots value="3" tone="cost">
        
      </impact-dots>
    </td>
    
    <td>
      Use a watch estimate or a real race result instead.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        A hilly, hot, or poorly-paced input race
      </strong>
    </td>
    
    <td>
      Distorts the pace-to-effort mapping the whole formula depends on.
    </td>
    
    <td align="center">
      <impact-dots value="3" tone="cost">
        
      </impact-dots>
    </td>
    
    <td>
      Re-test on a flat course in cool conditions, run evenly.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Treating the output as a guarantee
      </strong>
    </td>
    
    <td>
      Pacing discipline and fueling execution on race day still decide the actual result.
    </td>
    
    <td align="center">
      <impact-dots value="2" tone="cost">
        
      </impact-dots>
    </td>
    
    <td>
      Use the prediction as a target range, not a promise.
    </td>
  </tr>
</tbody>
</table>

<warning icon="i-ph-warning">

**The pattern:** almost every distortion traces back to a bad *input*, not a bad formula. Fix what you feed it before you doubt the number it gives back.

</warning>

## Three ways to get your starting number

You don't need a race on the calendar to start. Pick whichever is available.

<card-group>
<training-card badges="Most accurate,Any distance" title="Recent race result" value="4">

A race you ran hard in recent weeks, close to full effort. The gold-standard input — it captures real fitness and economy together, with no estimation step.

</training-card>

<training-card badges="No race needed,Self-timed" title="All-out time trial" value="4">

Nothing on the calendar? A genuine all-out effort over a known distance, ideally 3K–10K on a flat, honest course, works just as well.

</training-card>

<training-card badges="Instant,Slightly optimistic" title="Watch VO₂max" value="3">

Running-specific watch estimates track VDOT closely. Skip a lab VO₂max here — it reads 5–10% high and will over-predict every distance.

</training-card>
</card-group>

## How far you can trust it

Every prediction ships with a margin, and it widens with distance — pacing, fueling, and glycogen management add variability a formula alone can't capture.

<table>
<thead>
  <tr>
    <th>
      Distance
    </th>
    
    <th align="center">
      Prediction margin
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      1K
    </td>
    
    <td align="center">
      ± 3%
    </td>
  </tr>
  
  <tr>
    <td>
      3K – 10K
    </td>
    
    <td align="center">
      ± 2.5%
    </td>
  </tr>
  
  <tr>
    <td>
      15K
    </td>
    
    <td align="center">
      ± 3.5%
    </td>
  </tr>
  
  <tr>
    <td>
      Half Marathon
    </td>
    
    <td align="center">
      ± 4%
    </td>
  </tr>
  
  <tr>
    <td>
      Marathon
    </td>
    
    <td align="center">
      ± 5.5%
    </td>
  </tr>
</tbody>
</table>

<note icon="i-ph-target">

Read the marathon figure as a **range**, not a single number — at ±5.5%, a 3:30 prediction really means "roughly 3:19 to 3:41" depending on how well you execute the parts a formula can't see: pacing, fueling, and the last 10K.

</note>

## Which tool answers which question

Four tools cover this territory, and it's easy to reach for the wrong one.

<table>
<thead>
  <tr>
    <th>
      Question
    </th>
    
    <th>
      Tool
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      What time could I run at another distance?
    </td>
    
    <td>
      <a href="/tools/race-time-predictor">
        Race Time Predictor
      </a>
    </td>
  </tr>
  
  <tr>
    <td>
      What pace should today's easy, threshold, or interval run be?
    </td>
    
    <td>
      <a href="/tools/training-pace-calculator">
        Training Pace Calculator
      </a>
    </td>
  </tr>
  
  <tr>
    <td>
      How do I manually plan my own pacing splits for a race?
    </td>
    
    <td>
      <a href="/tools/race-pace-calculator">
        Race Pace Calculator
      </a>
    </td>
  </tr>
  
  <tr>
    <td>
      How should my splits look based on my actual fitness?
    </td>
    
    <td>
      <a href="/tools/race-strategy-calculator">
        Race Strategy Calculator
      </a>
    </td>
  </tr>
</tbody>
</table>

## How to track it

A single prediction is a snapshot, not a trend. What actually matters is whether your VDOT is climbing.

<tip icon="i-ph-trend-up">

Re-run the [Race Time Predictor](https://runima.fit/tools/race-time-predictor) every 6–8 weeks from a fresh race or time trial, and let the [Runima app](https://runima.fit/) track the trend automatically from your uploaded activities — a rising VDOT over months is worth more than any single predicted time.

</tip>

## Common mistakes

The traps that quietly wreck an otherwise sound prediction.

<caution icon="i-ph-warning-circle">

**Extrapolating a 5K straight to marathon distance.** The %VO₂max gap between them is too wide for a short race to constrain — anchor with something closer to 42.2K first.

</caution>

<caution icon="i-ph-warning-circle">

**Feeding in a lab VO₂max.** It ignores running economy and reads 5–10% high, so every distance comes out optimistic. Use a watch estimate or a real race instead.

</caution>

<caution icon="i-ph-warning-circle">

**Using an old PR as if it were current fitness.** VDOT drifts with training load — a result from a year ago describes a runner you no longer are.

</caution>

<caution icon="i-ph-warning-circle">

**Ignoring race-day execution.** Pacing discipline and fueling decide how close you land to the number — a formula can't run the race for you.

</caution>

<caution icon="i-ph-warning-circle">

**Trusting a hilly or overheated input race.** Conditions distort the pace-to-effort mapping the whole prediction depends on. Re-test somewhere flat and cool.

</caution>

## Go deeper

There's no single deep-dive article for this one yet — the full methodology lives on the [**Race Time Predictor**](https://runima.fit/tools/race-time-predictor) itself.

<callout color="primary" icon="i-ph-books">

For the training-zone math these predictions feed into, see [**Training Paces: Science and Calculation**](https://runima.fit/blog/training-paces). For why raw VO₂max doesn't decide race day on its own, see [**The VO₂max Trap**](https://runima.fit/blog/the-vo2max-trap) and [**Running Economy**](https://runima.fit/blog/running-economy).

</callout>

## Sitemap

See the full [sitemap](https://runima.fit/sitemap.md) for all pages.
