Why Your App’s Easy Pace Feels Hard
You open Runna on a Tuesday morning. Easy run, 8km, 5:45/km. You set off, and by the second kilometre your breathing has gone ragged, your heart rate is sitting at 168, and you’re doing the thing where you glance at your watch every forty seconds hoping it’s lying. You finish it. You feel wrecked. The app logs it as “Easy” and moves on.
That gap between what the plan calls easy and what your body calls easy is not a character flaw. It’s an arithmetic problem, and it starts with a single number you gave the app weeks ago.
Where the number comes from
Every AI or algorithmic training app needs one input before it can prescribe anything: an estimate of your current fitness, expressed as a threshold pace or a VO2max figure. Everything else is derived from it.
Runna asks for a recent race time during onboarding (or a goal time, which is worse, and we’ll get to that). It feeds that into a Riegel-style equivalence model to produce your full pace set: easy, steady, threshold, interval, long run. Garmin Coach doesn’t ask for a race, it uses the VO2max estimate your watch has been quietly calculating from every run where it got a stable HR signal, then converts that into Daniels-style zones. A ChatGPT-built plan does whatever you told it: give it “I ran 52 minutes for 10K” and it’ll run the same equivalence maths in its head, usually via a VDOT table it half-remembers.
The models themselves are fine. Jack Daniels’ VDOT tables and Pete Riegel’s exponent have held up for forty years across a huge range of runners. The problem isn’t the maths. The problem is that all of them assume the input represents you, today, on a normal day.
The three ways the input lies
You raced better than you’re trained. This is the big one. A 5K is short enough that a moderately fit runner with good anaerobic capacity and a decent dose of race-day adrenaline can produce a time their aerobic base has no business supporting. Say you ran 24:00 for 5K off 25km a week. VDOT says 43.5. Daniels says your easy pace is roughly 6:05–6:40/km and your threshold is 5:12/km. Those numbers are correct for a runner with a VDOT of 43.5. But VDOT describes the ceiling of your performance, not the durability underneath it. A runner doing 25km a week has an aerobic engine that fatigues fast. You can hit 6:05/km for 5km fresh on Tuesday; holding it for 14km on Sunday after a week of the same is a different demand entirely, and the model doesn’t know the difference.
The Riegel exponent makes this worse as distances grow. Standard Riegel uses 1.06, which predicts a 24:00 5K equates to a 3:42 marathon. For a high-mileage runner that’s roughly right. For a 25km-a-week runner, the real exponent is closer to 1.10 or higher, and the honest prediction is somewhere north of 4:00. Your app built your marathon long-run paces off the 3:42 version.
You raced in conditions the app can’t see. If your benchmark 10K was run in 9°C with a tailwind and your current training block is happening in 26°C and 70% humidity, you are not the same runner. Heat costs roughly 2–3% in pace per 5°C above about 15°C once humidity is involved, and it costs more if you’re not heat-adapted. Concretely: a 5:30/km easy pace in 12°C is a 5:45–5:55/km effort in 27°C for identical physiological cost. Runna does not adjust for this. Garmin’s newer watches have a heat acclimation feature that adjusts the performance condition readout, but it does not rewrite the paces in your Garmin Coach plan. So all summer you run every easy session 15–25 seconds per kilometre too fast, which is exactly the amount that moves a run from genuinely aerobic to mildly threatening.
You gave it a goal, not a result. If the onboarding flow offered “target race time” and you typed the number you want rather than the number you’ve run, every pace in the plan is now built on a fitness level you’re trying to reach. This is an extremely common failure mode with ChatGPT-built plans in particular, because the conversation naturally starts with “I want to run a sub-4 marathon” and the model obligingly builds a plan for someone who already can.
Sanity-check it against your own heart rate
You don’t need a lab. You need three or four runs of data you already have, and one honest number for your maximum heart rate.
The check is simple: your easy pace should put you below 75% of your max HR, and it should not drift upwards over the run.
Here’s what that looks like in practice. Pull up an easy run in Strava, open the HR graph, and look at the split-by-split average. Two runs, same prescribed pace, same runner:
RUN A — prescribed easy 5:45/km, 8km, 13°C
km pace avg HR % max (max 188)
1 5:52 141 75%
2 5:44 146 78%
3 5:46 147 78%
4 5:45 148 79%
5 5:47 149 79%
6 5:44 150 80%
7 5:46 152 81%
8 5:43 154 82%
drift: +13 bpm
RUN B — same runner, self-selected 6:20/km, 8km, 14°C
km pace avg HR % max
1 6:24 131 70%
2 6:19 134 71%
3 6:21 135 72%
4 6:20 135 72%
5 6:22 136 72%
6 6:18 137 73%
7 6:20 137 73%
8 6:19 138 73%
drift: +7 bpm
Run A is not an easy run. It starts at the top of the aerobic range and climbs steadily, which is cardiac drift telling you that you’re burning through something you can’t replace mid-run. Run B is what the plan was trying to buy. The prescribed pace is about 35 seconds per kilometre too quick.
A few notes on reading this honestly. Use 220-minus-age only if you have nothing better, because it has a standard deviation of about 11 bpm and could be wrong for you by twenty beats in either direction. If you’ve ever finished a hard 5K or a hill rep session, the highest number your watch recorded there is a far better max estimate. And ignore the first kilometre: HR lags effort by a minute or two, so early-run numbers always look flatteringly low.
Also check the tail, not just the average. If you’re 8 bpm higher at km 8 than km 3 at a constant pace on a flat route in mild weather, the run is too hard regardless of what percentage the average worked out to. Aerobic decoupling above about 5% (Strava Premium shows this, or TrainingPeaks calls it Pw:HR) on an easy run is a clear signal.
What to actually change
If your check comes back showing 78–82% of max on easy runs, don’t rebuild the whole plan. Adjust the input and let the model do its job properly.
Re-benchmark with something honest. Run a 10K time trial, solo, on a flat route, in reasonable weather, pacing it like a race rather than a hero. The 10K is long enough that aerobic base actually matters, so it produces a fitness estimate your training can support. Feed that time back into Runna’s settings (Plan → Edit → Update paces) and every derived pace shifts down accordingly. A runner who entered a 24:00 5K and instead enters a 51:30 10K will typically see easy pace move from around 6:05/km to about 6:25/km.
Or override the easy pace directly. Garmin Coach lets you edit your threshold pace in the Performance Stats settings, which cascades to the rest of the zones. Runna is less flexible about individual sessions, but you can simply run easy days by heart rate and ignore the pace target. The app will still log the session as complete. Nothing breaks. I’d rather you hit the physiological target than the number on the screen.
Apply a heat adjustment yourself. A rough working rule: add 5 seconds per kilometre for every 3°C above 15°C, and double that above 70% humidity. At 27°C and 75% humidity, a 5:45/km easy pace becomes something like 6:15/km. That’s not weakness, that’s the same cardiovascular cost.
The apps that handle this best are the ones that ingest actual HR data and recalibrate rather than asking once and locking it in. There’s real variation in how they behave here, and it’s worth knowing which one you’re using before you commit to sixteen weeks: I compared how each of them derives and updates paces in AI Coaching Apps, Tested Against Each Other.
The cost of getting this wrong
Running easy days 20 seconds per kilometre too fast doesn’t feel like a catastrophe on any single Tuesday. It feels like a slightly hard run. The damage is cumulative: your easy days stop being recovery, so you show up to Thursday’s threshold session already carrying fatigue, so you run the quality session slower than prescribed, so the plan’s actual hard-easy structure collapses into a flat grey middle where everything is moderately difficult and nothing is properly stimulating.
Polarised training works because the easy days are genuinely easy. Take that away and you have a plan that produces a lot of tiredness and not much adaptation, right up until week 11 when your calf goes.
Go and look at last Tuesday. Pull the HR graph, check where km 7 sat compared to km 3, and find out whether the plan you’re following is actually the plan you’re running.