Performance overlay
Dashboard intro
See the pace the weather allowed.
Compare your real Strava effort against the conditions, then see what the same run may have looked like in better weather.
Quick Snapshot
Your recent pace and weather story
Condition mix
Waiting for synced historyRecent weather-ready runs
A cleaner read on your latest enriched effortsStandout runs
Best, toughest, steepest, and costliest daysHistory Insights
Patterns across your past runs
Personal Insights
How you perform in different conditions
Athlete Profile
Your current weather and terrain profile
Condition Buckets
How different weather groups stack up
Athlete Baseline
What your own history says about you
Weather Trends
Grade and cost trends across your history
Grade distribution
How often you land in each weather tierMonthly averages
Weather grade and weather cost by monthRolling acclimation
Recent 30-day adaptation versus the prior 30 daysTolerance trend
How your heat and humidity profile is changingLocal Data Queue
Local data update progress
Queue Status
Waiting for syncNext Up
Runs needing local dataLatest Report
No batch run yetRecent Activities
Choose a run to analyze
Activity Report
Select an activity
Run Summary
How much the weather slowed you, what caused it, and what pace ideal weather likely would have supported.
Weather Analysis
How the conditions shaped this run
Weather Breakdown
Weather Timeline
See how weather changed throughout your run.
Conditions During Run
Air Quality
Air-quality details will appear here after local weather enrichment runs.
Charts
Run trends
Time In HR Zones
Run Insights
Need more similar runs to build your baseline.
Weather-adjusted similar-run history will appear here.Pick an activity to see how harsh the weather likely felt.
We use apparent temperature, wet bulb, VPD, wind, and sun load to estimate environmental strain.
Splits
Standard Strava split data
Comparisons
Compare this run against similar efforts
Admin
Users, subscriptions, and processing readiness
Users
All PaceWeather accounts
Beta Leads
People waiting for access
Capture interest, prepare accounts, and follow up with branded outreach from one place.
Webhook Queue
Recent Strava event intake
Review Queue
Activities ready to post
New Strava activities that are imported and enriched will wait here when posting is set to review first.
Strava Summary
Choose what gets posted
Strava Connection
Connect your account
Connect Strava to import activities and post PaceWeather summaries back to your description.
Preview
Posting Status
This activity has not been updated from PaceWeather yet.
Product Goal
Keep the public Strava description concise when you want, while preserving a deeper weather report inside PaceWeather.
Automation Status
Automation off
Choose a posting behavior above to control what happens after Strava sends a new activity.
FAQ
How PaceWeather calculates each stat
PaceWeather is meant to be transparent, not mysterious. These metrics are heuristic estimates built from historical weather, terrain context, and simple weighting rules. They are useful for comparing runs and understanding what the day likely cost you, but they are not lab-grade physiology measurements.
What does timeline stress mean?
The timeline stress bar is a 0-100 snapshot of how taxing the weather was at that moment. It rises when feels-like heat, wet bulb temperature, wind, and solar load rise, and when the air becomes less evaporatively friendly.
Current formula:
stress = max(0, apparentTempF - 55) * 1.25 + max(0, wetBulbF - 58) * 1.55 + max(0, windGustMph - 8) * 0.9 + directSolarWm2 / 45 + max(0, 1.1 - VPDkPa) * 8 Then clamp to 0-100.
Those thresholds are not magic numbers. They are anchor points chosen so the stress bar stays quiet in comfortable conditions and rises when conditions become meaningfully harder for most runners:
55F apparent temperature: below this, heat itself is usually not the main limiter for endurance running.
58F wet bulb: above this, evaporative cooling starts getting noticeably less forgiving, especially on longer runs.
8 mph gusts: this is the point where wind exposure tends to become noticeable instead of just background air movement.
1.1 kPa VPD: values below this mean the air is getting more saturated, so sweat evaporation becomes less efficient.
45 W/m2 divisor: this is just a scaling factor so direct sun meaningfully contributes to stress without dominating the entire bar by itself.
Wet bulb and VPD help represent how hard it is to cool yourself through sweat evaporation, so the stress bar now reads more like a real endurance-weather strain signal than a simple temperature bar.
PaceWeather maps that 0-100 value into labels so it is easier to read at a glance:
Low: 0-34 Light: 35-57 Moderate: 58-77 High: 78-94 Severe: 95-100
Severe should be rare. It is reserved for the most punishing combinations of feels-like heat, wet bulb, wind exposure, solar load, and poor evaporative cooling.
How is Weather Grade calculated?
Weather Grade is a 0-100 composite score showing how favorable the conditions were for endurance performance.
Weather Grade = Apparent temperature score * 25% + Dew point score * 22% + Wet bulb score * 20% + VPD score * 13% + Wind score * 10% + Solar score * 10% + Rain score * 5%
Higher is better. Cool, dry, calm conditions tend to grade highest.
This means the grade is no longer based on raw air temperature alone. It now leans more on how the air likely felt to the runner and how well sweat could actually evaporate.
How is Weather Score calculated?
Weather Score is a simplified 1-10 label derived from Weather Grade.
Weather Score = round(Weather Grade / 10) Clamp to 1-10
That score then maps to labels like Perfect, Good, Challenging, or Extreme.
PaceWeather also pairs each score with a face emoji so the effort reads at a glance, from 😁 in ideal weather down to 😵 in the most punishing conditions.
This emoji scale is about overall feel. It reflects the 1-10 Weather Score, not the exact number of seconds lost.
How is Weather Cost calculated?
Weather Cost estimates seconds per mile lost due to environmental conditions.
Heat cost = max(0, apparentTempF - 58) * 0.42 Humidity cost = max(0, dewPointF - 45) * 0.8 + max(0, wetBulbF - 56) * 0.55 + max(0, 1.4 - VPDkPa) * 5 Wind cost = max(0, effectiveWindMph - 8) * 0.45 Rain cost = max(0, rainMm - 0.2) * 2.5 Solar cost = max(0, directSolarWm2 - 220) / 65 Weather Cost = sum of the above
Here is what the fixed thresholds are trying to represent:
58F apparent temperature: this is the “heat starts mattering” point in the pace-loss model. Below that, heat cost stays at zero.
45F dew point: this is the dry-air baseline. Dew point above that starts adding humidity cost because the air is holding more moisture.
56F wet bulb: this is the point where moisture plus heat begins to push harder against evaporative cooling.
1.4 kPa VPD: this is the “comfortable evaporation” target. Lower VPD than that means the air is more saturated, so humidity cost rises.
8 mph effective wind: below this, wind cost stays at zero. Above it, the model treats wind as a meaningful pacing drag.
0.2 mm rain: this is a light drizzle threshold so trace precipitation does not create artificial pace loss.
220 W/m2 direct solar: this is the “sun load starts to be noticeable” threshold. It keeps dim or low-angle light from counting like harsh full-sun exposure.
The coefficients after those thresholds control how quickly cost ramps up. They are heuristic weights tuned so the model behaves directionally like real-world running strain, not proprietary or lab-derived constants.
Right now this is a rules-based estimate, not a personalized athlete model.
The upgraded version uses apparent temperature for heat, wet bulb plus VPD for humidity strain, and gust-aware wind. That makes the cost model better at handling muggy runs where air temperature alone understates the real stress.
Weather Cost uses a separate severity emoji scale from Weather Score because it represents pace loss, not overall feel: 🟢 0-5, 🟡 6-15, 🟠 16-30, 🔴 31-45, and 🥵 46+ seconds per mile.
Because this is a transparent heuristic model, PaceWeather may not match another app’s normalized pace exactly. If the model consistently feels too aggressive or too soft, these thresholds and weights can be recalibrated.
How are Heat Tolerance and Humidity Tolerance calculated?
These are early personalized scores built from your own weather-ready history. They are not lab measurements. They simply ask: “How far does your actual pace drift away from your own weather-normalized baseline when conditions turn hot or humid?”
baseline pace = average Perfect Weather Pace from cool/dry runs If there are not enough cool/dry runs: baseline pace = average Perfect Weather Pace from all weather-ready runs tolerance drag = average actual pace in hot or humid runs - baseline pace tolerance score = 100 - (tolerance drag * 1.3) Then clamp to 0-100.
Higher is better. A higher score means your hot or humid runs stay closer to your own weather-normalized baseline. A lower score means your pace fades farther from that baseline in those conditions.
This is intentionally simple and transparent. It is a first-pass athlete profile, not a finished physiology model.
The monthly tolerance trend table uses the same score month by month. That makes it useful for spotting direction over time, but it should still be read as a rough training-history signal, not a formal acclimation study.
The rolling acclimation cards go one step further. They compare the most recent 30-day window in your synced history against the 30 days before that. If the recent window scores higher, PaceWeather marks that as improving acclimation. If it drops, the app flags that your recent heat or humidity readiness may be cooling off.
How is Terrain Effect calculated?
Terrain Effect is a separate estimate of how much climbing likely slowed the run. It is not weather. It is meant to show the elevation side of the effort when you want that context in the summary.
If GAP is available, PaceWeather uses the difference between actual pace and GAP as the terrain effect.
If GAP exists: Terrain Effect = max(0, actual pace - GAP)
If GAP is not available, PaceWeather falls back to a simple elevation-gain estimate based on feet climbed per mile.
If GAP is missing: gainPerMile = elevationGainFeet / distanceMiles Terrain Effect = max(0, gainPerMile - 50) * 0.18
50 ft/mi is the baseline where climbing starts to count as a meaningful terrain tax in the fallback model. The 0.18 weight controls how quickly seconds-per-mile accumulate above that point.
This fallback is a heuristic, so it should be treated as a directional estimate rather than an exact terrain model.
What is the difference between Perfect Weather Pace and Equivalent Pace?
PaceWeather now supports two pace views so you can decide whether elevation should be part of the normalization.
Perfect Weather Pace is the pace you likely would have run under ideal weather conditions on the same course. Terrain remains unchanged.
Perfect Weather Pace = actual pace - Weather Cost
Equivalent Pace is the pace you likely would have run under ideal weather and flat terrain, allowing easier comparison between different runs and courses.
Equivalent Pace = GAP - Weather Cost If GAP is missing: Equivalent Pace = actual pace - Terrain Effect - Weather Cost
If you want a cleaner answer to “what would this have looked like in better weather on the same route?”, choose Perfect Weather Pace. If you want a pace that also smooths out elevation impact for easier cross-course comparison, choose Equivalent Pace.
PaceWeather marks these pace metrics with 🎯 to show they are target or normalized pace values rather than raw activity pace.
What is Estimated Time Lost?
Estimated Time Lost turns per-mile weather cost into total run time.
Estimated Time Lost = distanceMiles * weatherCostSecondsPerMile
What is the Primary Limiter?
Primary Limiter is whichever Weather Cost component contributed the most pace loss on that run: heat, humidity, wind, rain, or solar load.
What do Temp, Hum, Dew Pt, Solar, and Clouds mean?
Temp: Air temperature near the route.
Feels Like: Open-Meteo apparent temperature, which acts like a heat-index-style value.
Hum: Relative humidity.
Dew Pt: Dew point temperature, a better proxy for muggy air.
Wet Bulb: A heat-and-moisture measure tied closely to evaporative cooling strain.
VPD: Vapour pressure deficit. Lower VPD usually means the air is more saturated and sweat evaporates less effectively.
Solar: Solar radiation in watts per square meter, which acts like sun load.
Direct Sun: Direct beam solar radiation, which is more useful than total solar load when the sun is exposed.
Clouds: Cloud cover percentage.
How does PaceWeather describe air quality for a run?
PaceWeather saves a representative air-quality snapshot for the activity using the archived Open-Meteo air-quality data nearest to the run's saved time and route location.
The activity view shows the overall U.S. AQI when available, the leading pollutant AQI, a PaceWeather Air Impact label, and separate guidance for most runners versus more sensitive runners.
When overall AQI is missing, PaceWeather can fall back to the highest pollutant AQI to classify the run, but it lowers the displayed confidence. Partial pollutant coverage also lowers confidence.
The data-quality section explains whether coverage was complete, partial, or insufficient and whether the AQI classification came from the saved overall AQI or only from pollutant sub-indices.
This guidance is informational. It does not change Weather Grade, Weather Cost, pace projections, or serve as medical advice.
How does the weather timeline work?
The timeline samples the run every 30 minutes using archived hourly weather. Between each hour, PaceWeather interpolates the values so half-hour points behave more naturally.
Timeline coverage uses the longest trustworthy activity duration available: elapsed time first, then stream duration, then moving time.
Where does the weather data come from?
PaceWeather currently pulls historical weather from the Open-Meteo Archive API.
We use Strava to provide the activity start time, timezone, and route coordinates. Then we request archived hourly weather for that location and date range.
Source: Open-Meteo archive-api.open-meteo.com Requested hourly fields: - temperature_2m - apparent_temperature - relative_humidity_2m - dew_point_2m - wet_bulb_temperature_2m - vapour_pressure_deficit - precipitation - cloud_cover - wind_speed_10m - wind_gusts_10m - shortwave_radiation - direct_radiation - sunshine_duration
For the timeline, PaceWeather samples across the activity window and interpolates between hourly weather points so half-hour entries feel smoother than a simple hour-by-hour snap.
This means the weather is route-area historical weather, not a body-worn sensor or exact microclimate reading at every step.