Running Fitness
Built from completed runs only.
Next race: Phoenix 5K
Race
| Date | Sat Dec 26, 2026 · 68 days |
| Location | Phoenix, AZ |
| Elevation | 1,100 ft |
| Distance | 5 km (3.11 mi) |
| Course | Out-and-back, 0.78 mi each way (2 laps, 3 turnarounds) |
Current fitness
| Pace | 7:05–7:09/mi |
| Basis | 10K, Oct 10 |
Goal
| Pace | 6:46/mi (from goal time) |
| Needs | VDOT 47.0 at 1,100 ft |
| Vs. now | 59–73 s faster |
| At Flagstaff | 21:50–22:02 · 7:02–7:06/mi |
Checkpoint: 5K time trial
| Date | Tue Dec 1 · 43 days · at Flagstaff |
| On-track pace | 7:09–7:12/mi |
| Goal-equivalent | 21:50–22:02 · 7:02–7:06/mi |
On track: steady progress from current fitness (Oct 10) to 21:00 on race day; Dec 1 is 68% of the way. Goal-equivalent: the 5K you'd run at Flagstaff if already at goal fitness.
Current fitness (no projected training gains): 10K on Oct 10 (9 days ago), 47:55 at 7,373 ft, VDOT 42.0. Derived as: that result → VDOT → equivalent 5K at 7,373 ft (23:07) → converted to 1,100 ft: Daniels 4 s/mi: 22:13 · Daniels 5 s/mi: 21:59 · NCAA: 22:04.
Weekly mileage
Mon–Sun totals, with the 28-day rolling average (mi/wk).
Training load
Long-term load is the 42-day average daily load and recent load the 7-day average. Form = long-term − recent. These track how much you train; fitness gains show up in pace at AeT and VDOT below.
Aerobic efficiency: pace at 145 bpm, at 7,000 ft
Estimated from grade-adjusted easy running near AeT, after the warm-up and before any hard effort. Faster is up. Dots are single runs, colored by form going into that day, so a slow dot on a tired day isn't a sign of lost fitness. Open circles are runs in the days after a race or on trails, left out of the trend.
Aerobic durability: decoupling on steady runs
How much grade-adjusted pace per heartbeat falls from the first half of a steady run to the second. Under 5% (below the line) means your aerobic endurance holds for that long; watch it on the long runs as they grow. Open circles are trail runs.
Intensity by week
Share of time in each HR zone. Wider breaks mark LT1 (AeT) and LT2 (LT).
Load ahead: projection to race day
Actual load through today, then plan.csv at your load per mile over the last 42 days: easy 25 (23 runs), workout 29 (6 runs), race 36 (1 run). Hikes and XC skis count at hike 1.0/min (default), xc ski 2.5/min (default); paddling doesn't count. Dashed lines are planned.
Race day: Dec 26
| Long-term load | 135 (today 105) |
| Reading | fresh |
Peak long-term load
| Date | Thu Dec 17 |
Load ramp ahead
| Highest | Oct 22 |
| Above 1.3 | Oct 22 (up to 1.45); Oct 24 (up to 1.36); Nov 6 (up to 1.39) |
Load ramp: 7-day ÷ 28-day load
Workouts vs. targets
Reps are the laps closest to the planned distance (within 12%), fastest first. Pace is judged on grade-adjusted pace, within 5 s/mi of the target range, which comes from current fitness at the time (Daniels threshold, 5K, 10K and interval paces) or the goal time, converted to the run's elevation.
Next: Tue Oct 20, 4 × 1 mi threshold (HR ≤ 167) / 2 min jog. Target: threshold 7:50–7:51/mi grade-adjusted at 7,000 ft (from 10K, Oct 10) · HR ≤ 167.
Fri Oct 16 · 3 × 1 mi threshold (HR ≤ 167) / 2 min jog (moved up from Tue 10/20)
Target: threshold 7:51/mi grade-adjusted at 7,008 ft (from 10K, Oct 10) · HR ≤ 167. Found 3 of 3 reps. 0 on target pace, 2 over the HR cap.
| Rep | Miles | Time | Pace | Grade-adj. | Avg HR | Max HR | Pace check | HR check |
|---|---|---|---|---|---|---|---|---|
| 1 | 1.00 | 7:47 | 7:48 | 8:06 | 156 | 167 | slow | under cap |
| 2 | 1.00 | 7:41 | 7:41 | 7:36 | 166 | 174 | fast | over cap |
| 3 | 1.00 | 8:04 | 8:03 | 7:32 | 171 | 181 | fast | over cap |
Fitness vs. goal
Sea-level VDOT over time. The goal (21:00 at 1,100 ft) needs a sea-level VDOT of 47.2. The dotted line is steady progress from current fitness to the goal on race day, the same path the checkpoint uses. Races and time trials are measured results. Between them, each small dot is an HR-based estimate from one run's steady laps (pace and HR together, so it works on easy days and workouts alike, without an all-out effort). The line is their median over 28 days centered on each run (so it stops 14 days short of today) and the band holds the middle half of them, so a run outside the band is day-to-day noise (sleep, fatigue, a few beats of sensor error), not a change in fitness. Estimates are calibrated to 10K (Oct 10) (× 1.020), so they match race results on average; a second race or time trial will firm that up. See About for the method.
Best efforts
Fastest grade-adjusted time over each distance inside any run, in the last 28 days and in all data ("Both" when one effort is best in both). Grade adjustment (Minetti) turns each stretch into its flat-ground equivalent, so a downhill stretch is slowed and a hilly one credited; the VDOT is on that time, at sea level, so efforts at different elevations compare fairly. A training window can hold recoveries (a whole interval session inside a 5K window) and is run below race effort by design, so it is a record, not race fitness: only races and time trials set current fitness.
| Distance | Period | Time | Grade-adj. | Pace (adj.) | Date | Elevation | Net elev. (ft) | Max HR | VDOT (sea level) | Source |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 mi | Last 28 days | 7:43 | 7:20 | 7:20 | Oct 10 | 7,373 ft | +46 | 175 | 40.6 | training |
| All data | 7:16 | 6:58 | 6:58 | Sep 3 | 6,806 ft | −21 | 167 | 42.8 | training | |
| 2 mi | Last 28 days | 15:20 | 15:10 | 7:35 | Oct 10 | 7,373 ft | +14 | 175 | 42.0 | training |
| All data | 14:44 | 14:13 | 7:06 | Sep 3 | 6,806 ft | −10 | 180 | 45.1 | training | |
| 5K | Last 28 days | 24:13 | 23:46 | 7:39 | Oct 10 | 7,373 ft | +47 | 187 | 43.0 | training |
| All data | 24:22 | 22:41 | 7:18 | Sep 3 | 6,806 ft | +75 | 180 | 45.2 | training | |
| 10K | Both | 47:55 | 47:46 | 7:41 | Oct 10 | 7,373 ft | 187 | 44.8 | race result: 10K |
Race fitness
From your most recent race or time trial (10K, Oct 10, 7,373 ft). Altitude is converted two published ways and shown as a range: Daniels (4–5 s/mi per 1,000 ft above 3,000 ft) and the NCAA altitude tables (% by altitude and distance).
Equivalent times
| Flagstaff (7,000 ft) | Sea level | |
|---|---|---|
| 5K | 23:01–23:02 | 21:58–22:13 |
| 10K | 47:43–47:48 | 45:10–46:08 |
Training paces (per mile)
| Flagstaff (7,000 ft) | Sea level | |
|---|---|---|
| Easy | 9:25–10:23 | 8:57–10:03 |
| Threshold | 7:50–7:51 | 7:27–7:36 |
| Interval | 7:11–7:12 | 6:49–6:58 |
| VDOT | 42.2–42.3 | 44.0–45.1 |
Races and time trials
| Date | Event | Distance | Time | Elevation | VDOT | VDOT (sea level) |
|---|---|---|---|---|---|---|
| Oct 10 | 10K | 9.99 km | 47:55 | 7,373 ft | 42.0 | 44.0–45.1 |
Weekly data table
| Week of | Miles | Runs | Load | Long-term load | Recent load | Cross-training (h) | Z1 | Z2 | Z3 | Z4 | Z5 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Oct 19 (so far) | 6.3 | 1 | 112 | 104.7 | 113.3 | 38% | 50% | 11% | 2% | 0% | |
| Oct 12 | 36.0 | 6 | 787 | 104.5 | 113.5 | 28% | 40% | 24% | 4% | 4% | |
| Oct 5 | 22.2 | 5 | 587 | 102.8 | 92.7 | 24% | 20% | 21% | 11% | 24% | |
| Sep 28 | 32.0 | 5 | 917 | 106.3 | 116.2 | 8% | 19% | 44% | 22% | 8% | |
| Sep 21 | 17.3 | 4 | 429 | 101.8 | 81.6 | 20% | 31% | 41% | 7% | 0% | |
| Sep 14 | 32.3 | 5 | 836 | 109.3 | 133.4 | 13% | 25% | 44% | 11% | 7% | |
| Sep 7 | 30.1 | 5 | 866 | 107.1 | 130.8 | 4% | 28% | 47% | 17% | 4% | |
| Aug 31 | 22.2 | 4 | 645 | 103.5 | 109.0 | 5% | 28% | 47% | 15% | 5% | |
| Aug 24 | 27.4 | 7 | 774 | 105.1 | 111.9 | 8% | 18% | 57% | 16% | 2% | |
| Aug 17 | 17.4 | 7 | 497 | 103.9 | 100.1 | 4% | 28% | 53% | 12% | 2% |
How these are calculated
Load is HR-zone-weighted minutes: each minute in Z1 counts 1, Z2 counts 2, and so on up to Z5 = 5. Runs without real HR count 2.5 per minute.
Long-term / recent load are exponentially weighted averages of daily load over 42 and 7 days (often called fitness and fatigue, CTL and ATL). They measure how much you train, not how fit you are: steady training keeps them flat even while you improve. Fitness gains show up in pace at AeT and VDOT. History begins Aug 19, 2026, so both start at the average load of the first four weeks.
Form measures training fatigue only. Sleep, stress, heat, and illness aren't included, so read single runs with that in mind.
Pace at AeT uses grade-adjusted pace (Minetti et al. 2002) from seconds with HR 138–152 bpm, moving faster than walking, on grades under 5%, scaled to exactly 145 bpm. It skips the first 10 minutes (warm-up), everything after 90 minutes (cardiac drift), and everything after a hard bout, when HR stays high for the rest of the run. A hard bout is 4 minutes at 155 bpm or 2 at 165, on an exponential curve through those points (shorter the higher the HR), counted after the warm-up. Runs within one day per 3 km of a race (Daniels' easy days after racing: 3 days for a 10K) and trail runs (marked in notes.md; grade adjustment doesn't account for rough footing) show as open circles and stay out of the trend. A run needs at least 4 minutes of those seconds. The trend weights each run by how many seconds qualified over the past 21 days (at least 3 runs), and each point is drawn at the center of its window, so the line stops about 10 days short of today. Only runs within 1,000 ft of Flagstaff (7,000 ft) count, so the number is a Flagstaff-altitude pace.
Zones come from config.json: LT1 (AeT) 145 bpm and LT2 (LT) 168 bpm. The intensity chart puts wider breaks at those two thresholds.
VDOT is Jack Daniels' formula applied to your most recent race (races.csv, or a planned race) or time trial (a planned session named "time trial"). Training efforts never replace it: they are run below race effort by design, and a fastest window can include recoveries. The next-race estimate uses that current fitness with no projected gains. Elevation comes from the run's own file.
HR-based estimate (Fitness vs. goal) estimates fitness from pace and HR together, so any steady running counts. Each steady lap gives an effective VO2max: the oxygen cost of its grade-adjusted pace (Daniels' equation, the one inside VDOT) divided by the share of VO2 reserve it used, which Swain & Leutholtz (1997, Med Sci Sports Exerc 29:410) found equal to the share of HR reserve (resting 50, max 188 bpm, from config.json). A steady lap leaves out its first 2 minutes (HR still catching up with pace), the run's first 10 minutes, everything after 90 minutes (cardiac drift), grades over 5%, and laps after a hard bout that aren't hard themselves (HR stays raised on jogs and cool-downs). It needs 4 minutes left and grade-adjusted speed that varies less than 10% (no strides or surges). Trail runs are left out. A population formula doesn't fit one runner exactly, so estimates are scaled to match your last 3 races or time trials (Runalyze calibrates its effective VO2max the same way), then converted to sea level like a race. Lap each rep so a workout's reps and jogs land in separate laps.
Load ramp is the acute:chronic workload ratio: load over the last 7 days divided by the weekly average over the last 28. Gabbett (2016, Br J Sports Med 50:273) calls 0.8–1.3 the sweet spot and ≥ 1.5 the danger zone for injury. The ratio has been criticized as a predictor (Impellizzeri et al. 2020, Int J Sports Physiol Perform 15:907), so read it as a guide to how fast load is rising, not a risk score. It needs four weeks of history.
Projection uses plan.csv after today, with each planned mile worth your recent load per mile for that kind of run (planned workout days, and before the plan, runs with ≥ 10% of the time in Z5, count as workouts). Planned hikes and XC skis (named in the session, with minutes in plan.csv's cross_min) count at your load per minute from recorded sessions of that kind or, until you have any, a default from config.json: hike 1, xc ski 2.5 per minute. The hike default is the Z1 weight: the Pandolf load-carriage equation and Swain's %VO2max-to-%HRmax relation put a 35-lb-pack hike on 0 to 10% grades at about 105 to 130 bpm (data/ref/README.md). Sea-level days and steady finishes aren't modeled.
Cross-training (hikes and XC skis recorded on the watch) adds HR-zone load the same way runs do, but no miles. HR load misses the muscle damage from long loaded descents, so expect to feel more tired after the Grand Canyon than form shows.
Decoupling (Pa:HR) compares grade-adjusted pace per heartbeat in the first and second halves of a run, after the 10-minute warm-up, counting running seconds on grades under 5%. Below 5% means your aerobic endurance holds for that long (Friel, TrainingPeaks). Only steady runs count (planned easy or long days without a steady finish, or before the plan, runs under 10% in Z5), with at least 45 minutes of qualifying running.
Workout reps come from laps, so press lap at the start and end of each rep. Grade-adjusted lap pace uses the same Minetti model as pace at AeT.
Altitude is converted two published ways and shown as a range. Daniels: paces slow 4–5 s/mi per 1,000 ft above 3,000 ft (15–18 s/mi at 7,000 ft). NCAA 2009 altitude tables: % added by venue altitude (0–7,703 ft) for the mile, 5K and 10K, interpolated by altitude and distance, and held at the nearest of those distances outside that span. Neither accounts for acclimatization.