Copyright 2024. All rights reserved.

Technical analysis

BQ Marathon Coach

New York, NY 10011  |

First-time Boston Marathoners are often surprised to find a few "speed bumps" in the early miles.
     It's easy to find a mile-by-mile course breakdown that includes the net elevation change per mile.
     But when a friend running her first Boston recently asked me where to find a mile-by-mile breakdown specifying both the elevation gain and loss per mile, I was surprisingly unable to find one.
     So, I took it upon myself to virtually map the course, both in its entirety & mile-by-mile, using the web versions of three popular running apps: Strava, MapMyRun and AllTrails. (I like AllTrails because it can handle hybrid routes and I don’t need to force it to go where I want it to as often, hence it's inclusion here.)
     As the table in the photos show, each app yielded different values, despite my due diligence to eliminate any process variables on my end. (Detailed process notes are included below and address those variables, both predictable and unexpected ones.)
Strava and AllTrails were mostly self-consistent. Their gains and losses for the entire route were within a percentage point of the respective sums of their gains and losses from the individually mapped miles. (See the “Percent Error” row in the table.)
     However, that difference for MapMyRun gains was 9.2%. (Its losses were - 2.9%.)
     Separately, I bolded the most obvious MapMyRun elevation gain outliers compared to Strava and AllTrails in the table.
     So far, I haven’t thought of a plausible explanation to tie all those outliers together.
     Obviously, each app’s algorithm is either sourcing, reading or otherwise handling elevation data differently.
     However, despite those unresolved questions, anyone running the Boston Marathon now has a better idea of how much counter-trend uphill there is in the early miles.
     I have not taken the next step to address pace adjustments per mile because there are already others who have done that work, although those efforts do not explain in detail how they ranked each mile in order to calculate those adjustments.

1) Strava, MapMyRun and AllTrails all provide cumulative elevation gain, but only Strava also adds elevation loss. In order to obtain elevation loss for MapMyRun and AllTrails, I had to reverse each individually mapped mile’s route so its elevation gain equaled the loss in the other (correct) direction.
2) Strava and AllTrails dynamically update elevation gain as a route is mapped. However, MapMyRun provides the following warning, "Exact elevation data is shown when the route is saved." So to obtain elevation data for MapMyRun, I had to save each mile's route. (Twice due to point #1 above.) I tested saving routes in Strava and AllTrails to see if the elevation gain changed despite no similar warning, but those values stayed the same.
3) For all three apps, I used their automatic routing, except for a few manual adjustments for small, unwanted route artifacts, 
​e.g. staying on the correct side of divided two-way roads like Commonwealth Avenue, eliminating unnecessary crossings to the opposite side of the road and because occasionally auto routing simply refused to go a particular way. Auto routing modes don't consider the width of roads and don't take tangents, so when I mapped the entire course using all three, those routes ended up 0.15-0.17 miles long. I distributed this extra "non-tangent" distance equally when mapping individual miles by intentionally making some miles 1.01 miles.
4) I consulted the USATF course certification document for its descriptions regarding where each mile begins and ends.
5) I mapped the same miles using all three apps in parallel instead of in series to improve my consistency, zooming in to block-level resolution to use buildings as additional reference points.
6) For MapMyRun, I had to use cycling mode so that it would auto route via the streets. When set to running mode, MapMyRun often defaulted to sidewalks and made other unwanted routing decisions (at least for the purpose of this specific analysis).​