viewof weeklyHours = Inputs.range([1, 20], {
label: "Weekly running hours",
step: 0.25,
value: 8
})
viewof raceHours = Inputs.range([0.25, 6], {
label: "Expected race time (hours)",
step: 0.25,
value: 3.5
})
// Constants
LONG_MIN = 1
LONG_MULT_MIN = 0.2
LONG_MULT_MAX = 0.35
LONG_CAP = 2.5
// Calculation
floor1 = LONG_MIN
floor2 = raceHours
floor3 = LONG_MULT_MIN * weeklyHours
cap1 = LONG_MULT_MAX * weeklyHours
cap2 = LONG_CAP
minFloor = Math.max(floor1, floor2, floor3)
maxCeiling = Math.min(cap1, cap2)
recommended = Math.min(minFloor, maxCeiling)
formatHours = h => {
const hrs = Math.floor(h)
const mins = Math.round((h - hrs) * 60)
if (hrs === 0) return `${mins} min`
if (mins === 0) return `${hrs}h`
return `${hrs}h ${mins}min`
}
// Output
html`<div style="padding:1rem;border:1px solid #ddd;border-radius:8px;">
<p><strong>Absolute Minimum:</strong> ${formatHours(floor1)}</p>
<p><strong>Race Distance:</strong> ${formatHours(floor2)}</p>
<p><strong>20% of weekly volume:</strong> ${formatHours(floor3)}</p>
<p><strong>35% of weekly Hours:</strong> ${formatHours(cap1)}</p>
<p><strong>Absolute Max:</strong> ${formatHours(cap2)}</p>
<p><strong>Minimum target:</strong> ${formatHours(minFloor)}</p>
<p><strong>Maximum allowed:</strong> ${formatHours(maxCeiling)}</p>
<p><strong>Recommended long run:</strong> ${formatHours(recommended)}</p>
</div>`Talkng myself into sensible long runs
◀
By: Alfie Chadwick
Date: April 30, 2026
▶
When I’m planning my training weeks, one thing I probably spend too much time fretting over is the long run. It always carries a strange amount of weight. The Sunday morning long run can start to feel like a small act of worship in endurance training, especially if you are the kind of person who thinks one more hour out there might make you into a more serious runner.
Part of what I use it for is reassurance. I want the long run to show me I can finish the distance. That makes obvious sense for a marathon, or anything longer. It makes less sense when the race is shorter. If I am training for a 5k, the long run cannot just be 5k and call it a day.
So I end up using a couple of minimums. I want the session to be long enough to actually do something, which for me usually means about an hour. And I want it to account for at least 20% of my weekly volume, partly for training reasons and partly because otherwise the week starts to look silly. I do not really want to spread things so thin that I somehow end up needing seven tiny runs just to make the numbers work.
Then there are the caps. This is the bit that matters, because otherwise I will always be tempted to stretch the run out in the name of confidence. But there is a point where longer stops helping. Every marathon plan knows this. You cap the long run somewhere sensible, trust the training, and let race day do the rest.
Mine is usually 2.5 hours or 30% of weekly volume, whichever comes first. That gives the long run enough space to feel important. It just stops it from becoming the only thing the week is built around.
I’ve made a little calculator for fun: