{{ note }}
{% endif %}{% extends 'base.html' %}
{% block title %}{{ activity.title }} · Stride{% endblock %}
{% block breadcrumb %}ACTIVITY / {{ activity.sport|upper }}{% endblock %}
{% block head %}{% endblock %}
{% macro metric(label, value, unit='', note='') %}
{{ note }}
By {{ activity.owner.display_name }}·{{ activity.started_at|localdate(activity.owner.timezone, '%H:%M') }}·{{ '{:,}'.format(analysis.summary.samples) }} recorded samples
Recorded by your watch
Elapsed {{ activity.metrics.get('total_elapsed_time')|duration if activity.metrics.get('total_elapsed_time') else '—' }}
GAP estimate {{ pace_text(analysis.summary.gap) }}/km
Peak {{ analysis.summary.max_hr|int if analysis.summary.max_hr else '—' }} bpm
Loading your route…
Hover over a chart to locate that part of the route.
See how your recorded heart rate and pace vary uphill, downhill and on the flat. Heart rate responds with a delay, so this is context rather than a correction.
| LAP | DISTANCE | TIME | PACE | GAP EST. | HR |
|---|---|---|---|---|---|
| {{ loop.index }} | {{ '%.2f'|format(lap.distance / 1000) }} km | {{ lap.duration|duration }} | {{ pace_text(lap.pace) }} | {{ pace_text(lap.gap) }} | {{ lap.heart_rate|int if lap.heart_rate else '—' }} |
| No laps recorded. | |||||
GAP is an estimate, not a Garmin or Strava value. We use the Minetti running energy-cost model to estimate an equivalent flat pace from the recorded slope. Elevation uses a five-sample median and a roughly 60 m distance window. Grades outside ±30%, missing data, and recording gaps over 10 seconds are excluded. GAP is only calculated for running.
Average GAP divides time by equivalent flat distance over eligible moving samples. Coverage indicates how much recorded distance contributed; lap GAP uses the same method. Stops and missing data can make its sample coverage differ from timer pace. Wind, surface, heat, fatigue and individual running economy are not modelled.
Heart rate stays measured. A universal grade correction would imply precision we don't have. Terrain summaries show time-weighted recorded HR, without trying to remove the effect of hills. Cadence is converted from running cycles/min to steps/min. Missing measurements are shown as unavailable, never zero-filled.
Map colours use this activity’s 10th–90th percentile range, with extremes saturated. Direction arrows follow recording order; they are not navigation instructions. Chart traces are sampled for display; computations use all available records.