Wind data on Strava

Explainer · last updated 20 August 2026

Two riders post the same 60 km at the same average speed. One had the wind behind them for an hour; the other spent half the ride pushing into it for the same number on the screen. Strava shows you nothing that tells them apart. Here is what wind actually does to a ride, how headwind and tailwind are worked out from a GPS track, and how to get those numbers onto every activity automatically.

On this page Does Strava show wind? Head, side and tail What wind factor means Why wind wrecks your average Adding wind to your rides FAQ

Does Strava show wind data?

No. Strava keeps your GPS track, speed, elevation, power and heart rate, and it will happily compute grade-adjusted pace or a power curve from them — but nowhere on an activity page does it show wind speed, wind direction, or how much of your ride was into the wind. Weather simply is not part of what Strava displays.

That leaves a real gap. Wind is, on flat terrain, the single largest variable between two otherwise identical rides — bigger than tyre choice, bigger than most of what riders do obsess over. It is also the one condition that never appears in the ride log, so a hard day into a gale is remembered as a slow day.

Headwind, sidewind and tailwind: the split

"It was windy" is not a measurement. A useful one starts from the fact that wind only matters relative to the direction you were travelling, which changes at every turn of the route. So the ride gets broken into short segments:

The three buckets are three equal 120° arcs around you — no fuzzy judgement, just the cosine of that angle:

cos(θ) >  0.5   → tailwind
cos(θ) < -0.5   → headwind
otherwise       → sidewind

Add the segments up and you get the shares — for example 48% head, 33% side, 19% tail, always summing to 100. That triple describes a ride far better than a single average wind speed does: 25 km/h of wind hurts enormously on an out-and-back and barely registers on a loop that turned with it.

Sidewind gets reported differently, and for a good reason. Inside that middle arc the wind barely pushes you along or holds you back — the along-track component is zero for a wind exactly square-on and never more than half the wind speed even at the edges of the arc — so scoring it on the same scale as head and tail would understate a gale you were leaning into for an hour. Instead the side bucket reports the crosswind's raw strength in km/h:

side score = |W| · sin(θ)   // km/h across your direction of travel

Bearings are averaged as vectors, not as plain numbers. Averaging 359° and 1° arithmetically gives 180° — due south for two riders heading due north — so the mean direction and the spread that decides where to cut the track both come from circular statistics instead.

What wind factor actually means

The shares tell you how the ride was distributed; the wind factor compresses the whole thing into one number. It weighs every segment of the route by how much the wind was working with or against you at that moment. The number is signed and centred on zero — the sign is the whole point:

It is not an abstract index, and there is no secret in how it is built. Take the wind blowing along your direction of travel, and weight it by how fast you were going:

W∥         = |W| · cos(θ)        // + tailwind, − headwind
AeroWeight = (v_kmh / 35)²
windFactor = W∥ · AeroWeight

The weighting is the part riders underestimate. Aerodynamic drag scales with the square of your speed through the air, so the same 20 km/h wind matters four times as much at 40 km/h as it does at 20. The reference speed is 35 km/h: hold exactly that and the weight is 1, so the wind factor is the along-track wind in metres per second. Ride slower and the same wind counts for less, because you are simply not moving fast enough for it to cost you much.

Each stretch of the ride gets its own number this way, and the ride's wind factor is their mean weighted by duration. So a steady 13 km/h wind straight in the face reads about -1.8 on a 25 km/h ride, and closer to -3.5 if you held 35 km/h through it. Turn around and the number flips sign but keeps its size: the out-and-back that reads -1.8 heading north reads +1.8 coming home.

Alongside it come the raw conditions — average wind speed, average wind direction in degrees, and a compass arrow such as showing where the wind was blowing. Velometry exposes all of these as description tokens: {wind_factor}, {head_wind_percent}, {side_wind_percent}, {tail_wind_percent}, {average_wind_speed}, {wind_direction_indicator} and the per-component factors. The full token reference lists the lot.

Why a headwind wrecks your average more than a tailwind saves it

Aerodynamic drag grows with the square of your speed through the air. Ride at 30 km/h into a 15 km/h headwind and your body is meeting 45 km/h of air — more than double the drag of the still-air case. Turn around and the same 15 km/h behind you leaves only 15 km/h of relative air, but you also spend far less time on that half of the ride, because you are moving faster.

The arithmetic is unforgiving: the slow half lasts longer than the fast half, so the wind takes more time from you than it gives back. An out-and-back in a steady wind is always slower than the same route in still air. A description line such as Fought 48% headwind, wind factor -0.86 is not an excuse — it is the missing context for an average speed that otherwise looks like a bad day.

How to add wind data to your Strava activities

Velometry writes it into the activity description for you, free:

  1. Connect with Strava. The official OAuth flow doubles as your login — no separate account, no password.
  2. Put wind tokens in your template. Either write your own line or load a ready-made one from the description ideas page.
  3. Ride. When the activity lands on Strava, a webhook wakes Velometry, which pulls the GPS streams, sends them to the wind-factor engine at windfactor.cc, and writes the finished description back to that ride — seconds after upload.

Only the GPS streams leave the app, and the result is not stored beyond a short cache, in line with the Strava API Agreement. Nothing derived from your activities is persisted — see privacy and data.

FAQ

Does Strava show wind data?

No. Strava stores your GPS track, speed, elevation, power and heart rate, but it shows no wind speed, wind direction or headwind information anywhere on the activity page. Weather conditions are not part of what Strava displays for a ride.

What is a good wind factor?

There is no "good" one — it describes the day, not your form. The number is signed and centred on zero: a minus means the wind was against you overall, a plus means it helped, and the further from zero, the stronger the effect. Its value is in comparing rides: two 30 km/h averages at -1.8 and +1.2 were nothing like the same effort.

How is headwind percentage calculated?

Your GPS track is cut into stretches of roughly constant bearing, each is matched against the historical wind for that time and place, and the wind vector is projected onto your direction of travel. Each stretch falls into one of three equal 120° arcs by the angle between wind and travel: cos(θ) > 0.5 is tailwind, cos(θ) < -0.5 is headwind, anything between is sidewind. Stops and GPS noise are discarded and the shares are averaged weighted by time, so they always sum to 100.

How do I add wind data to a Strava activity?

Connect Velometry to Strava and put wind tokens in your description template. On every new ride Velometry sends the GPS streams to the wind-factor engine, gets the head, side and tail breakdown back, and writes it into the activity description automatically. It is free.

Can I get wind data for rides I have already uploaded?

Yes. The Recent rides tab in the admin panel regenerates the description of any of your last 10 rides with your current template, wind tokens included.

Does wind data work for runs?

No. Velometry writes descriptions for bike rides only — including indoor, virtual, gravel and MTB rides. Runs, swims, walks and e-bike rides are left untouched.

Connect with Strava