About
Methodology
Every bike-day score is a live blend of weather, wind-relative-to-route, pavement state, air quality, daylight, and alerts. This page explains what goes in and what comes out.
The bike-day score
Each route has a primary cycling activity (commuting, road cycling, e-bike, or bike-share touring). For each activity, we compute a 0–100 score from a base of 60, then add signed factors. The grade scale:
- Ideal — 85+: drop what you're doing and ride.
- Great — 70–84: a good day to ride.
- Good — 55–69: workable.
- OK — 35–54: commute if you have to, skip the fun ride.
- Skip — under 35: today is not the day.
Wind-relative-to-route
This is the feature nobody else builds. Given a ride's polyline, we compute each segment's compass bearing. NWS publishes wind "from" direction (e.g., "SW at 15 mph"). The relative angle between travel direction and wind-toward direction classifies each leg:
- Tailwind — relative angle ≤ 30° — the wind is pushing you along.
- Quartering tailwind — 30°–70° — partial push.
- Crosswind — 70°–110° — perpendicular; handling matters.
- Quartering headwind — 110°–150° — grinding but manageable.
- Headwind — ≥ 150° — it's going to be a workout.
For out-and-back rides, the return leg has the inverse relative angle, so a 20-mph tailwind out means a 20-mph headwind back. We flag that explicitly — it's the worst-kept secret of long rail-trail rides.
Inputs that move the score
Weather (live from the National Weather Service)
- Thunderstorms in the forecast subtract heavily — lightning and cyclists are a bad combination.
- Rain probability above 70% reduces the score. Active rain is worse (wet-road friction, limited driver visibility).
- Absolute wind above 15 mph starts penalizing; above 30 mph is a major penalty regardless of direction.
- Temperature within an activity's ideal range adds points; outside its comfort range subtracts. Cyclists have wider cold tolerance than most audiences (dressed for it) and narrower heat tolerance at sustained effort.
- Active NWS watches/warnings reduce the score.
Pavement surface inference
We map recent precipitation, active-rain forecast, and temperature to a five-tier pavement label:
- Dry — clean pavement, maximum grip.
- Tacky — recent light rain still drying; brakes and tires fine but low spots may be damp.
- Wet — actively raining or within a few hours of heavy rain. Road spray, reduced braking friction, limited driver visibility.
- Slick — light rain on top of a dry spell. The first-rain oil film makes painted lines, crosswalks, and metal plates treacherous.
- Icy — sub-freezing with recent moisture. Hard-skip condition: black ice on shaded pavement is genuinely dangerous for cyclists.
Road cycling penalizes wet pavement harder than commuting does — roadies are cornering aggressively at speed.
Air quality
AirNow AQI is weighted heavier here than on other sites — cyclists breathe hard under effort, pulling ambient air deep into the lungs at 3-5x the rate of a sedentary person. AQI above 100 starts a meaningful penalty; above 150 it's a major one; above 200 is a hard skip for any aerobic ride.
Daylight
The score flags rides where daylight remaining is less than the estimated time on bike plus a 15-minute (commute) or 30-minute (leisure) buffer. Commuters usually have lights; long-ride cyclists often don't.
E-bike battery range in cold
Lithium-ion batteries lose 20-30% of capacity below 40°F. E-bike riders planning longer legs in the cold should keep the battery warm until ride time and plan shorter out-and-back distances.
Hard-skip overrides
Regardless of the numeric score, we force a "skip" grade when:
- Pavement is icy — every surface tier below freezing with recent moisture.
- Thunderstorms are in the short-term forecast for non-bike-share activities.
- AQI exceeds 200 for any aerobic ride.
Limitations
- Polylines are 12–32 evenly-spaced points down-sampled from each OSM
route=bicyclerelation's stitched member-way geometry. Longer routes get more points. The elevation profile re-densifies to ~40–100 sample points at render time. - NPS alerts are wired only for routes that have been hand-mapped to a National Park Service unit code. Routes that cross NPS land but aren't yet annotated will not show NPS notices.
- State DOT feeds are implemented for MD, VA, DC, and DE. WV and PA aren't wired yet — routes in those states show no DOT alerts.
- Bike-share availability surfaces only where the operator publishes a GBFS feed and we've added the integration. Capital Bikeshare, POGOH, and Indego cities are flagged on the city list.
- "First rain after dry spell" slickness is a heuristic approximation — we don't have true 5-day dry-spell lookback yet.
- Elevation data comes from Open-Elevation, which is public and free but occasionally rate-limits. Profile charts fail gracefully when the API is unreachable.
- Route descriptions follow this priority: Wikipedia REST summary (when the OSM relation has a
wikipedia=*tag), OSMdescription=*tag, then a structured fact summary built from distance, surface, and network tier. Curated by source, not invented.