The problem with regular weather apps
Most weather apps give you raw numbers — 68°F, 12 mph wind, 30% chance of rain — and leave you to interpret them. That works fine if you're deciding whether to bring an umbrella. It doesn't work well for cycling, where a 15 mph headwind on a flat road is a completely different experience than a calm 15 mph tailwind, and where a 40°F morning with no wind is perfectly rideable in the right kit.
Velowindow translates weather data into a single 0–100 ride score that reflects how conditions actually feel on a bike — not just what the thermometer says.
What the score means
The score runs from 0 to 100. Higher is better. Here's what each range means in plain language:
Excellent
Near-perfect conditions. Most riders actively choose to go out.
Great
Strong go. Minor imperfections but nothing that should stop you.
Good
Probably worth it. Some conditions are suboptimal — check what's limiting it.
Marginal
Hesitation zone. Experienced riders may go; many will wait for better.
Tough
Most riders skip. Only the committed or training-specific rider heads out.
Skip it
Conditions are genuinely uncomfortable or unsafe. Don't bother.
What goes into the score
Every factor that actually affects how a ride feels gets its own score. Those scores are weighted differently depending on your ride type, then combined into a single number. Conditions that matter most to cyclists are weighted accordingly.
🌡️
Apparent temperature (feels-like)
We use feels-like temperature, not air temp — so wind chill and heat index are already part of the picture. Cold is calibrated to the time of year: a cool October morning and a cool May morning don't feel the same to a cyclist who's been riding all winter. Heat is treated differently too, because moving fast in hot weather doesn't cool you the way it does in the cold. Cloud cover is factored in on hot days.
💨
Wind speed (sustained)
Sustained wind is the single biggest reason cyclists decide not to ride. The score reflects that — wind has an outsized effect compared to what a raw number suggests, and severe wind can cap the score regardless of everything else.
💨
Wind gusts
Gusts are evaluated in context — a surge on an already windy day is a different experience than the same gust on a calm one. Sudden surges require active bike control and are harder to ride through than equivalent steady wind.
🌧️
Precipitation (probability + intensity)
Both the chance of rain and how hard it falls are factored in — a high probability of drizzle is a very different situation from a moderate chance of a downpour. Severe weather can cap the score regardless of how good everything else looks.
💧
Humidity via dew point
We use dew point rather than relative humidity because it's a more accurate measure of how uncomfortable high moisture feels during hard effort. Most days this has no effect. When heat and humidity combine, it affects the score more aggressively — the combination is harder on a cyclist than either factor alone.
😷
Air quality (AQI)
On most days in most places, this has no effect. When air quality is genuinely poor — wildfire smoke, industrial events — it's reflected in the score. Breathing hard in bad air is a real concern for cyclists, and the score accounts for it.
Personalized for your ride type
The same weather conditions affect different types of riding very differently. Velowindow weights factors according to what actually matters for each ride type.
Road
Road cycling
Wind is weighted most heavily. Headwinds and crosswinds dominate the road riding experience — aerodynamic drag is the primary enemy on open roads.
Gravel
Gravel riding
Balanced score weighted toward precipitation and wind exposure. Gravel routes are often more exposed than MTB trails, so wind carries more weight here.
MTB
Mountain biking
Temperature and precipitation are weighted highest — high exertion at low speeds makes thermoregulation critical, and rain directly affects traction on roots and rocks. Wind is weighted low due to natural tree shelter.
Commute
Commuting
Precipitation is weighted most heavily. Getting to work dry is the primary concern — rain probability and intensity dominate the commuter experience.
The best riding window
A day score alone can mislead. A day that's rainy in the morning and clear in the afternoon should score differently than a day that's uniformly great — but a simple average treats them the same.
Velowindow finds the best consecutive 3-hour riding window between 5am and 8pm and surfaces it directly: "Peak window: 9am–12pm." The day's overall score is also biased toward typical riding hours — morning and late afternoon hours are weighted more heavily than midday or overnight.
The 7-day outlook fades after day 4 with a "low confidence" label, honestly reflecting that long-range forecasts carry increasing uncertainty. A Saturday score of 89 six days out is a reason for cautious optimism, not a firm commitment to a century ride.
Data sources
Open-Meteo — all weather forecast data including temperature, wind, precipitation, dew point, and weather codes. Free, open-source, global coverage. Forecasts update hourly. Note that Open-Meteo uses ECMWF and other global models which may differ from other weather services — this is normal. Different providers use different data sources and update at different frequencies.
Open-Meteo Air Quality API — AQI data derived from the Copernicus Atmosphere Monitoring Service (CAMS) European air quality forecast.
Photon by Komoot — location search (converting city names to coordinates). Built on OpenStreetMap data with better relevance ranking for city searches. Free and open source.
Nominatim / OpenStreetMap — reverse geocoding (converting GPS coordinates to place names). Location names are displayed in standard format: City, ST for US locations; City, Country for international.
Leaflet and CARTO — the map display.
No account is required. No personal data is collected or stored on any server. Your location preference and ride type are saved locally in your browser only.