{% extends 'base.html' %} {% block title %}Stats studio · Stride{% endblock %} {% block head %}{% endblock %} {% block content %}
YOUR RUNNING / STATS STUDIO

Ask more of your runs.

Build a question. Find the pattern. Explore the runs behind it.

YOUR QUESTION
Show and
from runs during the last weeks, grouped by .

Supported clauses: runs, during last N weeks, ending YYYY-MM-DD, distance and heart_rate filters, summarize, by week/month, compare previous period/none. Filters use km and bpm.

{% if error %}{% endif %}
Whole runs · Recorded timer time · {{ current_user.timezone }}
START WITHWeekly volumeLong-run progressionPace at similar heart rateRunning form
{% if results %}

{{ results.count }} matching {{ 'run' if results.count == 1 else 'runs' }}

{{ results.start }} – {{ results.end }} · {{ '%.1f'|format(results.distance) }} km{% if query.compare %}
Compared with {{ results.previous_start }} – {{ results.previous_end }} · {{ results.prior_count }} runs{% endif %}

{% if not results.count %}

No runs match this question.

Try a longer period or widen the distance and heart rate filters.

{% else %}
{% for card in results.cards %}
{{ card.label }}
{{ card.value }}{{ card.unit }}
{% if query.compare %}

Previous: {{ card.previous }} {{ card.unit }}{% if card.delta %} · {{ card.delta }} {{ 'sec/km' if card.key == 'pace' else card.unit }}{% endif %}

{% endif %}

{{ card.coverage }} of {{ results.count }} runs with usable data

How this is calculated

{{ card.definition }}{% if card.key in ('cadence','power','ground_contact','stride_length') %} Coverage counts runs, not sensor recording time.{% endif %}

{% endfor %}
TRENDS / {{ query.group|upper }}

Your question over time

Solid: current · Dashed: previous
{% for card in results.cards %}

{{ card.label }} {{ card.unit }}

{% endfor %}

Select a current-period point to see its contributing runs below. Missing data leaves a gap; comparison runs are aligned by elapsed days.

{% endif %}
BEHIND THE NUMBERS

Contributing runs

{% for card in results.cards %}{% endfor %}{% for row in results.rows %}{% for value in row['values'] %}{% endfor %}{% else %}{% endfor %}
RUN / LOCAL DATEDISTANCE{{ card.label|upper }} · {{ card.unit }}
{{ row.title }}
{{ row.date }}
{{ row.distance }} km{{ value }}
No matching runs.
Page {{ results.page }} of {{ results.pages }} · up to 25 runs per page{% if results.page > 1 %}Previous{% endif %}{% if results.page < results.pages %}Next{% endif %}
{% endif %}
{% endblock %} {% block scripts %}{% endblock %}