Mid Runners

{{ activeGoalDistanceLabel }} {{ activeGoalTypeLabel }}
{{ daysToRace !== null ? daysToRace : '--' }} Days to Goal
Goal {{ hmGoal }}
Predicted {{ hmPrediction }} {{ predictionConfidence }}
AI Analysis

{{ predictionReasoning }}

Set a goal

A goal gives your training data context. We'll use it to compare your recent runs, spot what may be limiting progress, and make recommendations that fit your schedule.

You can change this later.

AI Coach

{{ newTaggedRunsSinceAnalysis }} new tagged run{{ newTaggedRunsSinceAnalysis > 1 ? 's' : '' }} since last analysis
Analyzing your training data...
{{ coachError }}
{{ coachError }}

Loading coach analysis...

Week {{ weeklyProgress.weekNum }}
{{ Math.round(weeklyProgress.percentage) }}%
{{ weeklyProgress.actual.toFixed(1) }} / {{ weeklyProgress.planned.toFixed(1) }} mi
{{ day.label }}
{{ weeklyInsights.summary }}
Need: {{ type }}

Pace & Heart Rate

{{ paceHrChart.paceMin }} {{ paceHrChart.paceMid }} {{ paceHrChart.paceMax }}
{{ p.name }}
Date {{ p.dateFormatted }}
Pace {{ p.paceFormatted }}
HR {{ p.hrFormatted }}
Dist {{ p.distance }}
{{ paceHrChart.hrMax }} {{ paceHrChart.hrMid }} {{ paceHrChart.hrMin }}
Pace (/mi) Heart Rate (bpm)
No tagged runs to display. Tag your runs in the Runs tab.

Aerobic Efficiency

{{ aerobicEfficiencyChart.efMax }} {{ aerobicEfficiencyChart.efMid }} {{ aerobicEfficiencyChart.efMin }}
{{ p.name }}
Date {{ p.dateFormatted }}
EF {{ p.efFormatted }}
Pace {{ p.paceFormatted }}
HR {{ p.hrFormatted }}
Efficiency Factor (higher = better)
No runs with HR data. Tag runs and ensure HR is recorded.

Training Load by Type

{{ Math.round(trainingLoadChart.maxTotal) }} mi {{ Math.round(trainingLoadChart.maxTotal / 2) }} mi 0 mi
Week {{ week.weekNum }}
Planned {{ week.planned.toFixed(1) }} mi
Actual {{ week.total.toFixed(1) }} mi
Easy {{ week.easy.toFixed(1) }} mi
Interval {{ week.interval.toFixed(1) }} mi
Pace {{ week.pace.toFixed(1) }} mi
Long {{ week.long.toFixed(1) }} mi
No runs yet
W{{ week.weekNum }}
Easy Interval Pace Long Planned

Set a goal to build your training week

Midrunner uses your goal, target date, and running schedule to create a realistic week-first plan.

{{ adaptiveScheduleLabel }}

This Week

{{ currentWeekDateRange }} · {{ activeGoal.type === 'speed' ? 'Progress check-in' : 'Goal date' }} {{ activeGoalDateLabel }}

This week's focus {{ currentTrainingWeek.focus }}
Planned {{ currentWeekHighlights.plannedRuns }} runs · {{ currentWeekHighlights.plannedMiles }} mi
Completed {{ currentWeekHighlights.completedRuns }} runs · {{ currentWeekHighlights.actualMiles }} mi {{ currentWeekHighlights.statusText }}
Key workout {{ currentWeekHighlights.keyWorkout ? currentWeekHighlights.keyWorkout.type : 'Easy running' }} {{ currentWeekHighlights.keyWorkout.purpose }}

{{ currentTrainingWeek.deviationSummary.headline }}

{{ currentTrainingWeek.deviationSummary.note }}

{{ item.label }}

{{ item.message }}

Runs to Place

Completed runs from Strava that are not matched to the plan yet.

{{ run.typeLabel }} {{ run.dateLabel }} · {{ run.distanceLabel || 'Distance unavailable' }} · {{ run.durationLabel }} {{ run.note }}
{{ run.statusLabel }}
{{ workout.dayName }} {{ workout.dateLabel }}

{{ workout.type }}

{{ workout.status }}

{{ workout.purpose }}

{{ workout.notes }} {{ workout.match.note }}
Planned {{ workout.plannedText }}
Completed {{ workout.actualText }}
Completed? {{ workout.match.candidates[0].typeLabel }} · {{ workout.match.candidates[0].distanceLabel || 'Distance unavailable' }}
{{ workout.adjustmentLabel }}
Target {{ workout.targetText || 'Flexible' }} Completed {{ workout.completedRun.distanceLabel || workout.completedRun.distance }} {{ workout.match.candidates.length }} candidate run{{ workout.match.candidates.length > 1 ? 's' : '' }}
{{ currentTrainingWeek.trust.note }} {{ currentTrainingWeek.trust.approvalNote }}

Plan Overview

Generated through {{ activeGoal.type === 'speed' ? 'your progress check-in' : 'goal day' }}. Current week stays primary.

Week {{ week.weekIndex }} {{ week.plannedRuns }} runs · {{ week.plannedMiles }} mi {{ week.focus }}

Your adaptive calendar is getting ready

Refresh once your goal is saved, or revisit Settings to confirm your target date.

{{ filteredRuns.length }} runs
Loading your runs...
Date {{ sortKey === 'date' ? (sortAsc ? '↑' : '↓') : '' }} Name {{ sortKey === 'name' ? (sortAsc ? '↑' : '↓') : '' }} Distance {{ sortKey === 'distance' ? (sortAsc ? '↑' : '↓') : '' }} Duration {{ sortKey === 'duration' ? (sortAsc ? '↑' : '↓') : '' }} Pace {{ sortKey === 'pace' ? (sortAsc ? '↑' : '↓') : '' }} Avg HR {{ sortKey === 'avgHr' ? (sortAsc ? '↑' : '↓') : '' }} Type {{ sortKey === 'tag' ? (sortAsc ? '↑' : '↓') : '' }}
No runs found