Running Fitness

Built from completed runs only.

Last 7 days
37.2 mi
28-day average
28.4 mi/wk
+0.4 vs. previous 28 days
Long-term load
105
−2 vs. 4 weeks ago
42-day average daily load
Form
−9
−9% · neutral
Pace at AeT (145 bpm)
9:07/mi
−12 s/mi vs. 4 weeks ago
at 7,000 ft (Flagstaff) · 21-day trend, grade-adjusted easy running
Load ramp
1.17
7-day ÷ 28-day load · sweet spot
VDOT (sea level)
44.6
10K, Oct 10, at 7,373 ft · Daniels/NCAA average

Next race: Phoenix 5K

Race

DateSat Dec 26, 2026 · 68 days
LocationPhoenix, AZ
Elevation1,100 ft
Distance5 km (3.11 mi)
CourseOut-and-back, 0.78 mi each way (2 laps, 3 turnarounds)

Current fitness

21:59–22:13
Pace7:05–7:09/mi
Basis10K, Oct 10

Goal

21:00
Pace6:46/mi (from goal time)
NeedsVDOT 47.0 at 1,100 ft
Vs. now59–73 s faster
At Flagstaff21:50–22:02 · 7:02–7:06/mi

Checkpoint: 5K time trial

22:12–22:21 on track
DateTue Dec 1 · 43 days · at Flagstaff
On-track pace7:09–7:12/mi
Goal-equivalent21: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.

Drag a chart to scroll

Weekly mileage

Mon–Sun totals, with the 28-day rolling average (mi/wk).

Weekly miles28-day average

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.

Long-term load (42-day)Recent load (7-day)

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.

21-day trendFresh (form > +5%)NeutralTired (form < −10%)Race recovery or trail

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.

Steady run (dot size = minutes analyzed)5% line

Intensity by week

Share of time in each HR zone. Wider breaks mark LT1 (AeT) and LT2 (LT).

Z1 Recovery <135Z2 Aerobic 135–144Z3 Tempo 145–157Z4 Threshold 158–167Z5 >LT 168+LT1 / LT2 break

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

+19% form going in
Long-term load135 (today 105)
Readingfresh

Peak long-term load

144
DateThu Dec 17

Load ramp ahead

1.45
HighestOct 22
Above 1.3Oct 22 (up to 1.45); Oct 24 (up to 1.36); Nov 6 (up to 1.39)
Long-term loadRecent loadPlanned

Load ramp: 7-day ÷ 28-day load

Sweet spot 0.8–1.3Danger zone ≥ 1.5

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.

RepMilesTimePaceGrade-adj.Avg HRMax HRPace checkHR check
11.007:477:488:06156167slowunder cap
21.007:417:417:36166174fastover cap
31.008:048:037:32171181fastover 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.

Race or time trialHR-based estimate (one run)28-day medianMiddle 50%Goal raceGoalOn-track path

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.

DistancePeriodTimeGrade-adj.Pace (adj.)DateElevationNet elev. (ft)Max HRVDOT (sea level)Source
1 miLast 28 days7:437:207:20Oct 107,373 ft+4617540.6training
All data7:166:586:58Sep 36,806 ft−2116742.8training
2 miLast 28 days15:2015:107:35Oct 107,373 ft+1417542.0training
All data14:4414:137:06Sep 36,806 ft−1018045.1training
5KLast 28 days24:1323:467:39Oct 107,373 ft+4718743.0training
All data24:2222:417:18Sep 36,806 ft+7518045.2training
10KBoth47:5547:467:41Oct 107,373 ft18744.8race 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
5K23:01–23:0221:58–22:13
10K47:43–47:4845:10–46:08

Training paces (per mile)

Flagstaff (7,000 ft)Sea level
Easy9:25–10:238:57–10:03
Threshold7:50–7:517:27–7:36
Interval7:11–7:126:49–6:58
VDOT42.2–42.344.0–45.1
Races and time trials
DateEventDistanceTimeElevationVDOTVDOT (sea level)
Oct 1010K9.99 km47:557,373 ft42.044.0–45.1
Weekly data table
Week ofMilesRunsLoadLong-term loadRecent loadCross-training (h)Z1Z2Z3Z4Z5
Oct 19 (so far)6.31112104.7113.338%50%11%2%0%
Oct 1236.06787104.5113.528%40%24%4%4%
Oct 522.25587102.892.724%20%21%11%24%
Sep 2832.05917106.3116.28%19%44%22%8%
Sep 2117.34429101.881.620%31%41%7%0%
Sep 1432.35836109.3133.413%25%44%11%7%
Sep 730.15866107.1130.84%28%47%17%4%
Aug 3122.24645103.5109.05%28%47%15%5%
Aug 2427.47774105.1111.98%18%57%16%2%
Aug 1717.47497103.9100.14%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.