| Metric | Value | Copy |
|---|---|---|
| {{ row.label }} | {{ row.value }} |
| Split | Distance | Segment | Cumulative | Copy |
|---|---|---|---|---|
| {{ row.label }} | {{ row.distance }} | {{ row.segment }} | {{ row.cumulative }} |
Race finish time is the projected clock time it takes you to cover a set distance at a chosen effort, and this calculator turns your pace or speed into a practical prediction. It lets you map a distance goal to a likely finish window so you can set expectations for race day and training sessions.
You provide the race distance, decide whether to think in pace or in average speed, and optionally add trends such as fading effort or negative splits. The tool responds with a finish time estimate, average pace and speed summaries, and a table of splits that shows where you will be on course as the clock advances.
For a typical scenario you might plug in a marathon distance, a steady training pace, and a small positive fade to mimic late race fatigue. You can also add scheduled drink or walk breaks, which stretch the projection a little while still keeping the moving pace clear.
The projection depends on holding the same conditions you have trained for, so real races with heat, hills or crowded starts may bring you in faster or slower than the estimate. Use consistent units between sessions and rerun the same scenario when fitness changes to see how much buffer you have against a target time.
Think of the results as a planning guide rather than a guarantee and treat them as another training data point, not a promise. Inputs stay in the page while you work so you can adjust or clear them whenever you like.
Race pacing calculations start from three quantities: total distance, moving speed, and any pauses where you are not moving. Distance is handled in kilometres and miles while speed is treated either as pace per unit distance or as constant speed in kilometres per hour or miles per hour.
For pure running time, the calculator converts all distances to metres and expresses speed in metres per second. Base moving time is total distance in metres divided by moving speed, and then fatigue and stop adjustments are layered on top to reach the projected finish time.
Effort trend is represented as a percentage that is clamped between -40 and 40 and distributed across the course so that early segments stay close to the base pace and later segments absorb more of the change. The fatigue multiplier equals one plus the effort percentage divided by 200, and total stop time is the number of planned stops multiplied by the duration of each stop in seconds.
For splits, the tool slices the race into equal checkpoints of either one kilometre or one mile. Each segment inherits a slightly different pace based on its relative position along the route, and any planned stops are inserted at evenly spaced markers between start and finish, which adds discrete blocks of non moving time.
Average pace and speed are derived from the adjusted finish time rather than from the initial input alone, so fatigue and stops are fully reflected in the summary metrics. Line charts plot segment duration against distance and cumulative distance against time using the same split data that drives the tables, downloads and JSON payload.
| Symbol | Meaning | Unit/Datatype | Source |
|---|---|---|---|
| D | Total race distance converted to metres | m | Input (km or mi) |
| v | Base moving speed | m/s | Derived from pace or speed |
| Base moving time ignoring fatigue and stops | s | Derived | |
| f | Effort trend percentage | % | Input, clamped to -40 to 40 |
| Fatigue multiplier applied to base time | dimensionless | Derived | |
| Number of planned stops | integer | Input, clamped to 0 or more | |
| Duration per stop | s | Input | |
| Total non moving time from all stops | s | Derived | |
| Projected finish time | s | Derived | |
| Distance between split checkpoints | m | Derived from split unit | |
| Segment time including embedded stops | s | Derived | |
| Cumulative time at end of split | s | Derived |
Worked example: For a 10 km race with target pace 5:00 per km, effort trend 10 percent, and no planned stops:
This corresponds to about 52 min 30 s, so the projection is slightly slower than the original 5:00 per km target pace.
Segment splits reuse the same core calculations, adjusting each segment by its mid-course fraction so that positive effort trends slow later splits and negative values create faster closing splits. The final row in the split table is relabelled as “Finish” to highlight the end of the course.
Time strings are formatted as m:ss for events under one hour and h:mm:ss when needed, with values rounded to the nearest second.
JSON output stores finish seconds as a whole number, so it may differ by one second from intermediate calculations that keep more precision.
Distances are internally managed in metres using 1000 m per kilometre and 1609.344 m per mile. Conversions between kilometres and miles apply the same factors in both directions, and visible distances are rounded to two or three decimal places depending on length.
When the shared number formatter is not available, the fallback uses standard JavaScript rounding with a dot decimal separator for fractional values. Pace displays clamp seconds to the range 0 to 59, and minutes are floored at zero or higher to prevent negative time inputs.
| Field | Type | Min | Max | Step/Pattern | Error handling |
|---|---|---|---|---|---|
| Distance | number | 0.001 | none | 0.001 | Negative or invalid values reset to 0 |
| Pace minutes | integer | 0 | none | 1 | Non numeric values reset to 0 and floored |
| Pace seconds | integer | 0 | 59 | 1 | Values are clamped into 0–59 |
| Speed | number | 0.1 | none | 0.1 | Negative or invalid values reset to 0 |
| Effort trend | integer | -40 | 40 | 1 | Slider and manual input are clamped |
| Stop count | integer | 0 | none | 1 | Negative or non integer values are floored to 0 |
| Stop duration | number | 0 | none | 5 | Invalid values reset to 0 and clamped to 0 or more |
| Start time | datetime-local | none | none | ISO local string | Invalid or empty values fall back to current time |
| Input | Accepted families | Output | Encoding/precision | Rounding |
|---|---|---|---|---|
| Distance and effort fields | Numeric values, km/mi, min/km, min/mile, km/h, mph | Finish time, average pace and speed, splits | Seconds and metres in calculations | Time rounded to nearest second |
| Metrics and splits export | Table rows | CSV and DOCX documents | Text values with numeric seconds where included | CSV uses preformatted strings and numeric fields |
| Charts | Split points with distance and time | PNG, WebP, JPEG images; CSV | Data URLs converted per image type | Minutes rounded to three decimal places in CSV |
| JSON view | Current inputs and computed splits | Pretty printed JSON text | Inputs, adjustments, summary, and split arrays | Finish seconds rounded, other fields as stored |
Time handling assumes your local timezone for both the optional race start and the projected finish clock, using the same system clock that the browser exposes. Travelling across timezones does not change stored inputs, and finish time is always reported according to the locale where you run the calculator.
For performance, the tool builds splits in a simple loop, so complexity scales linearly with the number of checkpoints. Even for ultra distances, one kilometre or one mile splits remain a modest list, and charts and tables are regenerated only when inputs change.
Identical inputs produce identical projections, so you can treat the finish time and splits as deterministic for planning comparisons between training blocks or race strategies. Any randomness arises only from your chosen scenario, not from the calculation engine itself.
From a privacy perspective, all calculations, charts and exports are produced within the browser environment, and no race data is transmitted to remote servers. Downloaded files and copied text live in your device storage or clipboard, where you retain full control over retention and sharing.
The calculation structure follows common distance running pacing practice and standard metric and imperial unit conversions, offering a transparent model you can inspect through the JSON view and CSV exports.
Race finish time projections follow a simple sequence of distance, effort and adjustment choices that lead to detailed metrics, splits and charts.
For example, set a 10 km distance, target pace 5:00 per km, effort trend 10 percent, and three 20 second stops to see how scheduled breaks shift the finish time above the pure moving estimate.
Use the projections to decide whether your goal time is realistic, then adjust distance, pace, trend and stops until the numbers match how you want race day to unfold.
You can choose presets for 5 km, 10 km, 15 km, half marathon, marathon, 50 km, 1 mile, 10 miles and 50 miles, or set any custom distance in kilometres or miles.
Accuracy depends on how closely your pace or speed, effort trend and stop assumptions match reality. Terrain, weather, crowding and race day nerves can all shift the true finish time away from the estimate.
Distances accept kilometres and miles, effort can be given as pace per kilometre or mile or as speed in kilometres per hour or miles per hour, and exports provide CSV, DOCX, image files and JSON text.
Calculations, charts and exports are produced within your browser, and the tool does not send race inputs, splits or JSON payloads to a remote server. Files you download or text you copy stay on your device until you remove them. Avoid pasting sensitive notes into exports you plan to share widely.
Once the page has loaded, the calculator continues working with no further connectivity, including split generation, chart updates and exports, as long as your browser session remains open.
The JSON tab exposes inputs, adjustments, summary metrics and splits in a structured format. You can copy or download it, then feed it into your own scripts, notebooks or planning sheets for further analysis.
First check that distance, units, pace or speed and effort trend match what you intended. If the finish time still feels wrong, experiment with conservative assumptions and compare projections over several sessions rather than relying on a single run.
The calculator itself does not enforce account, subscription or usage limits. For information about licensing, attribution or redistribution, refer to the surrounding site or documentation that hosts this tool.
Tip Use kilometre splits for shorter events and mile splits for longer races to keep tables compact while still showing enough checkpoints.
Tip Try a small negative effort trend to see what happens if you finish faster than you start, then compare it with a flat pacing scenario.
Tip Use planned stops to mimic congested aid stations or photo breaks, and adjust their number and length until the finish time aligns with your expectations.
Tip Export metrics and splits as DOCX when you want to annotate them further, add coaching notes or combine several scenarios in a single document.
Tip Save JSON snapshots of key scenarios so you can recreate them later, compare against real race results or feed them into other analysis tools.
Tip Use the distance unit toggle on charts to sanity check that kilometre and mile values line up with your race map and personal reference points.