What it is
Every workout in your plan already carries a pace target and an effort (RPE) target. Heart rate is a third read on the same instruction: a bpm band shown on the workout alongside the pace, for when pace isn't trustworthy. On a treadmill, in a tunnel, on a trail where GPS wanders, or on a hot day when the number on your watch stops meaning what it usually means, the band tells you whether you're still in the right place.
It is deliberately not a separate prescription. One training zone maps to one heart rate band, mirroring the pace band, so there is never a workout where the pace says one thing and the heart rate says another.
Where your max HR comes from
Bands are built from your maximum heart rate. Pheidi takes it in this order of preference:
- A measured max you entered, in onboarding or under Settings, Heart Rate Zones. The best source is the highest heart rate you've seen in a recent all-out effort. Accepted range: 120 to 230 bpm.
- An age estimate, when you haven't entered one but Pheidi knows your date of birth:
207 - (0.7 x age). That's Gellish et al. (2007), which holds up better across the adult age range than the classic220 - age. At 30 it gives 186 bpm, at 40 it gives 179, at 50 it gives 172. - Nothing. With no measured max and no age on file there's no honest way to draw a band, so heart rate simply doesn't appear. Nothing else about your plan changes.
Settings shows you which one is in play: leave the max blank and the field's hint reads back the age estimate it is using.
Resting HR makes the bands sharper
Resting heart rate is optional (accepted range 25 to 120 bpm, and it has to be below your max). It changes the arithmetic rather than the zones:
- With a resting HR, bands use the Karvonen heart-rate-reserve method: a percentage of the range between resting and max, added back onto resting. This is the more individual of the two.
- Without one, bands fall back to a straight percentage of max HR.
The zone bands
| Zone | % of heart-rate reserve (resting HR set) | % of max HR (no resting HR) | Workouts that use it |
|---|---|---|---|
| Easy | 62 to 75% | 70 to 81% | Easy, recovery, long and medium-long runs |
| Marathon | 76 to 84% | 82 to 88% | Race-pace runs |
| Tempo | 84 to 88% | 87 to 92% | Tempo runs, fartlek |
| Interval | 95 to 100% | 95 to 100% | Intervals, hill repeats |
| Repetition | no band | Short, fast reps | |
Repetition work is left out on purpose. Reps are too short for heart rate to reach steady state, so a bpm target there would be telling you about the rep you just finished, not the one you're running.
A worked example
A runner with a max HR of 185 bpm and no resting HR on file sees these bands:
Easy 130-150 bpm
Marathon 152-163 bpm
Tempo 161-170 bpm
Interval 176-185 bpmThe same runner, after adding a resting HR of 50, sees the Karvonen versions:
Easy 134-151 bpm
Marathon 153-163 bpm
Tempo 163-169 bpm
Interval 178-185 bpmWhere the band shows up
- Day view, under the pace line for the workout, marked with a heart icon.
- Week view, on each workout card in the same compact form.
- Over MCP, as the
targetHeartRatefield on every workout an assistant reads through the Pheidi MCP server, so it coaches against the same band your screen shows.
It appears whichever pacing preference you use. VDOT runners and RPE runners both get the band, because heart rate is just as useful to someone training by feel as to someone training by pace.
Logging heart rate
When you log a run you can record an average heart rate alongside distance, duration, and effort. Pheidi then works out which zone that average lands in and shows it on the completed workout:
148 bpm - Easy zoneThe label snaps to the nearest band when your average falls between two of them or outside all of them, and a value sitting exactly on a boundary reads as the harder of the two zones rather than the softer one.
Logged values are checked on the server, not just in the browser: anything outside 60 to 230 bpm is dropped rather than stored, on every path a workout can be saved through, including the mobile app and the API. An implausible reading counts as "no heart rate supplied", so it can never quietly overwrite the measured metrics on a Strava-synced run either.
What heart rate does not do
Heart rate annotates your plan, it doesn't restructure it. Entering a max HR won't change a single distance, workout type, or rest day, and the logged zone label is a label, not an input to the plan engine. Your weekly intensity distribution is tracked from logged effort and workout type, not from heart rate.
Heart rate-driven analysis, gray zone alerts, and wearable readiness are on the heart rate roadmap.
Heart rate zones live inside the Pheidi app, sign in to set your max HR.
See also
- How Pacing Guidance Works VDOT pace zones and Borg RPE descriptions, the two targets the heart rate band mirrors.
- How Workout Logging Works Quick-complete, manual entry, and the optional average heart rate field.
- Heart Rate Training Roadmap What ships today and what wearable readiness would add next.