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.

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.

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.

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.

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.
  • Polylines are 12–32 evenly-spaced points down-sampled from each OSM route=bicycle relation'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), OSM description=* tag, then a structured fact summary built from distance, surface, and network tier. Curated by source, not invented.
esc