← ontrack lab

Metres per beat: the number that caught my overtraining

How far you run per heartbeat, adjusted for the hills, is about as close as ordinary training data gets to a fitness gauge — but no watch shows it to you. I derived it from a decade of my own runs. It tracks my fitness cleanly, climbs steadily into the London Marathon, and then, while I kept training, quietly started to fall.

Oliver FoxOliver FoxFounder of ontrack · doctor & researcher · runner

12 July 2026 · 6 min read

Overtraining usually announces itself too late — a fortnight of heavy legs, a race that falls flat, and only then the realisation you should have eased off weeks ago. I wanted to know whether it shows up in the data before it shows up in your legs. For me it did, in a single number you can pull from any run — and it's one you can watch in your own training, too.

The number is how far you travel per heartbeat, adjusted for the hills. Cover more ground for each beat your heart spends and your engine is more economical. That's aerobic efficiency, and tracked over time it's about as close as ordinary training data gets to a fitness gauge. It isn't on your watch, though — you have to build it. So I did, from every run in a decade of Garmin files.

What the number measures

For each second of a run I take the distance covered, price it for gradient with the Minetti cost-of-running curve — a metre uphill costs more than a metre on the flat — and divide by the heartbeats that second cost. That's grade-adjusted metres per beat.

Two rules keep it comparable from one run to the next:

  • Aerobic band only. Efficiency flat out and efficiency on an easy jog aren't the same quantity, so I keep only steady, near-level seconds with heart rate between roughly 120 and 160.
  • Median, not mean. One GPS glitch or a skipped heartbeat can drag an average, so per run I take the median across 30-second windows.

Smooth that over 21 days and it becomes one value a day: a slow-moving read on aerobic fitness.

Loading the fitness trace…

The first thing to check is whether it's signal or noise. Over four and a half years it's clearly signal — distinct build phases, two enforced breaks, and a long climb through 2026. The day-to-day wobble is real, but it's small next to those multi-month swings. The trend is legible.

Can it tell me what training worked?

Naturally I wanted the holy grail: which sessions actually made me faster. I modelled each month's change in fitness against the training that came before it, holding starting fitness constant. Honestly? Inconclusive. Volume and long runs lean the right way, but nothing clears statistical significance for a single runner.

Two reasons, both worth knowing if you ever try this on your own data. I train very polarised — four easy runs in five, almost no intervals — so there's barely any variety for the model to learn from. And the biggest pattern in the numbers isn't a training choice at all: it's regression to the mean, the pull back up after a bad patch and down after a peak. Miss it and you'll credit your training for what was really just a bounce.

So the number is a poor coach. But it turned out to be a sharp observer — and the marathon is where that paid off.

The London Marathon

The thing to look at here isn't the absolute height — the number was actually higher back in 2022. It's the trend. Through the first months of 2026 it climbs steadily, and it keeps climbing right up to the end of April, cresting as I taper into the race. I ran London in 2:23:39 at the top of a clear, months-long rise. Because the number is computed the same way for every run, that upward trend into race day isn't a story stitched on afterwards — it's genuinely where the metric was heading.

Loading the marathon zoom…

Then the interesting part. I didn't stop training after the race — but the number kept falling, about 3% over the next five weeks.

And it wasn't only the number. Over those same weeks I started noticing the things that usually go with overtraining: I was sleeping badly, my legs felt heavy and flat, and easy runs were coming in harder than the pace should have warranted. My muscles had even started twitching at rest — fasciculations, which are benign but, in context, one more sign of an overworked, under-recovered neuromuscular system. The data and the way I actually felt were telling the same story.

Why it fell

The most likely reason is the simplest: I hadn't recovered. A hard marathon leaves weeks of muscle damage and nervous-system fatigue, and one of the clearest signs is a heart rate that sits higher than usual for any given pace. Since the metric is distance per beat, a higher heart rate at the same speed shows up immediately as fewer metres per beat — even if my top-end fitness hadn't really dropped. Keep training through that and you're overreaching almost by definition: piling load onto a body still repaying the last block.

Two caveats keep it honest. The number can't tell a genuine loss of fitness apart from a temporary rise in the cost of running — but here they point the same way, and as a warning light that's enough. And the decline runs into a warming May and June, when heat alone lifts heart rate at a given pace, so some of the drop is probably the season rather than fatigue. Two things push back on that: the fall starts the day after the race, not with the first hot week, and the poor sleep and heavy legs that came with it point to real overreaching rather than the weather. Heat is likely part of the picture, but not the whole of it.

What this means for you

Here's the part that travels beyond my own legs. The number can't pick your sessions for you. What it can do is answer a question every runner asks and mostly guesses at: am I still absorbing this training, or grinding myself down? While efficiency keeps climbing, the work is landing. When it flattens or slips while you're still training hard, that's the early warning — usually the cue to take a lighter week or two, not to push harder into it.

ONTRACK computes this same number from your uploaded runs. So the next time a block starts to feel like a slog that isn't paying off, don't just trust the feeling — look at whether your grade-adjusted metres per beat has gone flat or started to fall. More often than not, that's your body asking for a rest before it takes one anyway.

How it’s made — the technical bit

From watch to trace

The raw data is a decade of Garmin .FIT files — a little over a thousand runs once the wellness snapshots are dropped. A Python script reads every one-second sample: pace, heart rate, and barometric altitude. Gradient comes from smoothed altitude over the ground travelled, clamped to a sane range, and the Minetti (2002) polynomial converts it into a metabolic cost, so a metre uphill counts for more than a metre on the flat.

Per run I keep only the aerobic band — moving, near-level, heart rate roughly 120–160 — and take the median grade-adjusted metres per beat over 30-second windows, which shrugs off the occasional GPS or strap artefact.

The fitness line is an evidence-weighted 21-day exponential moving average of those per-run values. Each run moves the estimate in proportion to how much steady aerobic data it carries, so a short or scrappy run barely shifts it while a long even one moves it more. Rest days hold the last value — a gap never drags the line down — and the next real run pulls it back to the current reading. Race dates come from my own results.