About RaceCraft

v2.5.3

About RaceCraft

RaceCraft is a data-driven race planner for endurance athletes. Click any card below to learn more.

This project began as a personal solution to the challenges I faced when planning my own ultra-marathon: the logistic nightmare of calculating pacing, nutrition, and checkpoint timings for a complex race. At the time, I ended up with three separate spreadsheets that were difficult to maintain and update as I refined my strategy. I wondered if there was a better way. I began dabbling with Python (a language I had the most familiarity with) to see if I could create a tool that would automate the process and provide more accurate, data-driven insights. As I developed the core models and functionality, I realized that this tool could be valuable to other endurance athletes facing the same challenges. Thus, RaceCraft was born out of a desire to solve a real problem I experienced, and I wanted to share that solution with the running community.

To that end, RaceCraft attempts to simplify and solve:

  • Race-day Checkpoint ETA's — Accurately estimating arrival times at each checkpoint, helping your crew and support team plan effectively.
  • Bag-drop Contents — Planning and organizing what to leave at each checkpoint for effective nutrition needs.
  • Elevation and terrain pacing — Understanding how elevation and terrain affect your pace and energy expenditure.
  • Fatigue management — Accounting for how cumulative effort slows you down over ultra-distances.

RaceCraft was built to solve these problems by providing a data-driven, model-based approach to race planning.

RaceCraft is a race planning tool that helps endurance athletes:

  • Upload GPX routes — Import race routes to automatically extract distance, elevation, and terrain data.
  • Calculate realistic pacing — Use advanced fatigue and terrain models to predict segment-by-segment pace.
  • Plan nutrition and hydration — Estimate fuel requirements, serving counts, and water needs for each checkpoint.
  • Estimate checkpoint timings — Know when you'll reach each aid station or drop bag location.
  • Export race plans — Generate CSV or PDF exports to share with crew or print for race day.
  • Save and load plans — Store plans in the cloud (with authentication) or locally for future races.
  • Load known races — Access a library of popular race routes without needing to upload GPX files.

Whether you're running an ultra-marathon, mountain race, or multi-day event, RaceCraft provides a plan that helps you approach race day with confidence and clarity.

RaceCraft uses science-based models to generate realistic race plans:

Fatigue Model

An effort-based, fitness-dependent fatigue model that accounts for cumulative effort (including vertical gain), delays fatigue onset based on fitness level, and applies non-linear compounding after a threshold is exceeded.

  • Effort calculation: distance + (ascent ÷ 100) + (descent ÷ 200)
  • Fatigue onset point: Varies by fitness level (25–75 km-effort)
  • Progressive slowdown: Fatigue compounds as effort increases beyond threshold

→ Read the full Fatigue Model documentation

Climbing Model

A vertical speed climbing model (600–1500 m/h based on ability) with gradient-aware efficiency curves optimised for 6–12% gradients.

  • Ability-based vertical speed: Conservative (600 m/h) to Elite (1500 m/h)
  • Gradient efficiency: Optimal range at 6–12%, scales from 95% to 100%
  • Realistic pacing: Prevents unrealistic speeds on steep climbs

→ Read the full Climbing Model documentation

Terrain Difficulty

A 7-level terrain system with skill-based adjustments that reduce terrain penalties for experienced trail runners.

  • 7 terrain types: Road, smooth trail, dirt road, rocky runnable, technical, very technical, scrambling
  • Gradient scaling: Terrain difficulty amplified on steep terrain
  • Skill adjustment: Novice to expert reduces terrain penalties by 0–100%

→ Read the full Terrain Difficulty documentation

User Inputs

RaceCraft allows you to customise your race plan with:

  • Fitness level: Untrained, recreational, trained, elite
  • Climbing ability: Conservative, moderate, strong, very strong, elite
  • Technical skill: Novice to expert (affects downhill and technical terrain)
  • Flat terrain pace: Your comfortable pace on flat, easy terrain
  • Nutrition preferences: Carbs per hour, serving size, hydration needs
  • Checkpoint locations: Aid station or drop bag distances

Main Pages

The idea behind the Planner is to confront reality before race day does. It's where ambition meets physics. It's easy to set a goal time, imagine smooth pacing, and assume everything will hold together — but long races expose weak assumptions fast. The Planner exists to pressure test the story you're telling yourself about what's possible.

You adjust terrain, fatigue, climbing ability, nutrition, and checkpoint strategy, and the model pushes back. It shows you where the plan breaks, where time compounds, where small pacing errors become big consequences.

What You Can Adjust

  • Terrain type — Set the surface conditions for each segment, from road to scrambling.
  • Fatigue and fitness level — Model how your body will respond to cumulative effort over the full distance.
  • Climbing ability — Dial in your vertical speed to reflect how you actually move on ascents.
  • Nutrition and hydration — Plan carbohydrate intake, serving counts, and fluid needs at every checkpoint.
  • Checkpoint strategy — Set drop bag locations and aid station stops to shape your overall race structure.

Trade-offs, Not Just Outputs

Every change ripples through the day. The Planner doesn't just calculate splits — it forces trade-offs. It turns vague intention into structured expectation. Before the race ever starts, it makes the invisible visible, so you arrive on the start line not hoping the plan works, but knowing exactly what it's built on.

→ Go to the Planner

The idea behind the Race Day page is to close the gap between expectation and reality. No matter how well you plan, the day will drift — you arrive at a checkpoint later than expected, linger a little too long, or hit a rough patch on a technical section — and suddenly the rest of the race feels uncertain. Not just for you, but for your crew waiting at the next checkpoint.

Race Day is designed to turn the model into something alive. Rather than leaving your plan as a static document you printed the night before, it gives you — or your crew — a way to keep it relevant as the race unfolds.

How It Works

  • Start from your plan — The Race Day page loads your pre-calculated race plan, showing predicted arrival and departure times at every checkpoint.
  • Log real times — As you move through the race, your crew can record actual arrival and departure times at each checkpoint.
  • Automatic recalculation — Every time a real time is entered, the remaining checkpoints are recalculated on the fly, reflecting the current pace and any accumulated time drift.
  • Forward ripple — Changes don't just update a single checkpoint — they cascade through every remaining segment, giving a fresh, honest picture of what the rest of the day looks like.

Built for Crew

Race Day is built with crew and support teams in mind. A crew member doesn't need to understand the model — they just need to know when you're expected and when things are running ahead or behind. The page keeps that information clear and current without requiring any manual recalculation.

The goal is simple: take the plan from a confident prediction made the night before, and turn it into a dynamic strategy that stays useful from the start line to the finish.

→ Go to the Race Day page