Strava description ideas
12 ready-made templates · last updated 1 August 2026
The description box is the one part of a Strava activity that stays empty unless you fill it. Below are twelve descriptions worth writing — each one built from live ride data, so the same template reads differently on every ride. Copy any of them, or load it into Velometry with one click and have it written for you the moment your ride uploads.
What makes a good Strava description
A ride page already shows distance, elevation, time and power. Repeating those adds nothing. A description earns its place when it carries something the activity page cannot show:
- Conditions. A 28 km/h average into a 48% headwind is a different ride from 28 km/h with the wind behind you — and nothing on the Strava page says which one it was.
- Context. Where this ride sits in your season or your week: the totals so far, the average it moved, the rank it took.
- Voice. One human line of your own before the numbers. The templates below all leave room for it.
Keep it to one to three lines. Strava truncates long descriptions in the feed, so whatever matters most belongs on line one.
In every example, {token} is a placeholder Velometry replaces with the real value
for that ride. The second block shows how the description actually lands on Strava.
Wind description templates
Wind is the biggest thing missing from a Strava activity page, which makes it the most interesting thing to put in a description. See wind data on Strava for how the numbers are worked out.
1. Full wind breakdown
The complete picture — overall factor, wind speed and direction, then the head / side / tail split.
🌬️ WindFactor {wind_factor} · {average_wind_speed} {wind_direction_indicator}
🧭 Head {head_wind_percent} ({head_wind_factor}) · Side {side_wind_percent} ({side_crosswind}) · Tail {tail_wind_percent} ({tail_wind_factor})
🌬️ WindFactor 1.08 · 18.4km/h ↗ 🧭 Head 48% (1.21) · Side 33% (12.7km/h) · Tail 19% (0.82) //velometry.cc
2. Wind one-liner
Minimal, and the one that survives feed truncation: the headline number, speed, direction.
🌬️ Wind {wind_factor} · {average_wind_speed} from {wind_direction_indicator}
🌬️ Wind 1.08 · 18.4km/h from ↗ //velometry.cc
3. Headwind hero
Narrative flavour — frames the ride as a fight rather than a data dump. Good on the days the average speed looks worse than the effort felt.
💪 Fought {head_wind_percent} headwind at {head_wind_factor}× effort
🌬️ {average_wind_speed} from {wind_direction_indicator} · overall {wind_factor}
💪 Fought 48% headwind at 1.21× effort 🌬️ 18.4km/h from ↗ · overall 1.08 //velometry.cc
4. Wind plus season combo
One wind line, one season line — the everyday all-rounder, and the template most riders end up keeping.
🌬️ {wind_factor} wind · {average_wind_speed} {wind_direction_indicator}
📊 YTD {distance_ytd} · {elevation_gain_ytd} · {avg_speed_ytd}
🌬️ 1.08 wind · 18.4km/h ↗ 📊 YTD 4 210km · 51 300m · 29.4km/h //velometry.cc
Season and year-to-date templates
Year-to-date values are computed as of the ride, not as of today — so a description written in March still reads like March, even if you regenerate it in November.
5. Season progress
Cumulative totals plus how much this single ride moved your season averages.
📊 Season: {distance_ytd} · {elevation_gain_ytd} climbed
⚡ Avg {avg_speed_ytd} ({avg_speed_ytd_impact}) · {avg_power_ytd} ({avg_power_ytd_impact})
📊 Season: 4 210km · 51 300m climbed ⚡ Avg 29.4km/h (+0.2km/h) · 212W (-3W) //velometry.cc
6. Climber's log
For riders who count metres rather than kilometres. Climb rate is metres gained per kilometre ridden, so a hilly season reads high even when the distance does not.
⛰️ {elevation_gain_ytd} climbed this year over {distance_ytd}
📈 That is {climb_rate_ytd} average · {ride_count_ytd} rides · {active_days_ytd} days out
⛰️ 51 300m climbed this year over 4 210km 📈 That is 12.2m/km average · 112 rides · 96 days out //velometry.cc
7. Engine room
Power, heart rate and energy for the season. Needs a power meter and a strap — anything you did not record renders as n/a instead of a wrong number.
🫀 Season engine: {avg_power_ytd} · {avg_hr_ytd} · {energy_ytd} burned
⚡ This ride moved it by {avg_power_ytd_impact}
🫀 Season engine: 212W · 142bpm · 109 400kJ burned ⚡ This ride moved it by -3W //velometry.cc
8. Ride of the year?
Ranks the ride you just did against every other ride this year by distance — the description that makes a big day feel big.
🏅 Ride #{distance_rank_ytd} by distance this year
📊 {distance_ytd} across {ride_count_ytd} rides · avg {avg_distance_ytd} each
🏅 Ride #3 by distance this year 📊 4 210km across 112 rides · avg 37.6km each //velometry.cc
Weekly templates
The week runs Monday 00:00 to Sunday, and every year-to-date token has a _week
twin. Weekly numbers are the ones that actually change training behaviour — they are small
enough to chase.
9. Week so far
Where the current week stands after this ride. Resets every Monday, so it never becomes background noise.
📅 Week so far: {distance_week} over {ride_count_week} rides ({active_days_week} days)
⏱️ {moving_time_week} in the saddle · {elevation_gain_week} climbed · avg {avg_speed_week}
📅 Week so far: 186km over 4 rides (3 days) ⏱️ 6h 12min in the saddle · 2 140m climbed · avg 30.1km/h //velometry.cc
10. Week vs season
The week set against the whole year — the quickest way to see whether you are ahead of your own pace.
📅 This week: {distance_week} · {elevation_gain_week} · {moving_time_week}
📊 This year: {distance_ytd} · {elevation_gain_ytd} · {moving_time_ytd}
📅 This week: 186km · 2 140m · 6h 12min 📊 This year: 4 210km · 51 300m · 143h 20min //velometry.cc
11. Coffee-stop audit
Moving-time share is how much of your total time out was actually spent pedalling. Below 85% and the café is winning.
☕ {moving_time_week} moving this week — {moving_time_ratio_week} of the time out
📅 {ride_count_week} rides · {distance_week} · avg {avg_distance_week}
☕ 6h 12min moving this week — 91% of the time out 📅 4 rides · 186km · avg 46.5km //velometry.cc
12. Everything, everywhere
The maximalist option: wind, week and season in three lines. Best kept for long rides, where a wall of numbers feels earned.
🌬️ Wind {wind_factor} · {average_wind_speed} {wind_direction_indicator}
📅 Week: {distance_week} · {elevation_gain_week} · {moving_time_week}
📊 Year: {distance_ytd} · {elevation_gain_ytd} · avg {avg_speed_ytd} ({avg_speed_ytd_impact})
🌬️ Wind 1.08 · 18.4km/h ↗ 📅 Week: 186km · 2 140m · 6h 12min 📊 Year: 4 210km · 51 300m · avg 29.4km/h (+0.2km/h) //velometry.cc
Make it automatic
Typing any of this by hand after every ride lasts about a fortnight. Velometry does it for you:
- Connect with Strava — the OAuth flow is also your login, so there is no separate account and no password.
- Pick a template — all twelve above are one click away in the panel, and you can edit any of them or write your own around the tokens.
- Ride. Strava sends a webhook the second your activity is created, and Velometry writes the finished description to it — usually before you have closed the app.
Changed your wording later? The Recent rides tab regenerates the description of any of your last 10 rides with the new template. Every token available is listed in the full token reference.
FAQ
What should I write in a Strava description?
Anything the ride data alone does not tell: how it felt, what the conditions were, and the numbers Strava does not show on the activity page — the headwind share, your season totals, or where the week stands. One or two lines is plenty; a wall of numbers reads as noise.
Can I reuse the same description on every ride?
Yes, as long as the numbers inside it change. Velometry keeps one template and re-renders it for each activity, so identical wording carries different values every time.
How long can a Strava activity description be?
Strava accepts a long description, but the feed shows only the first couple of lines before truncating. Put the line you actually want read first.