Segment Details tool back online!

One of the first tools I wrote using the Strava API was called Segment Details. This tool provided a bunch of additional statistics on a Strava segment, including a history of the top three performances on the segment, a detailed list of every effort on the segment, monthly and annual charts and graphs, and more. Unfortunately, when Strava rolled out version 3 of their API in 2013, they took away access to the data needed to make this tool work, so I had to take it offline.

Strava has recently added this functionality back into their API, so I’m happy to announce that the Segment Details tool is back online. You can access the tool by clicking the link above, or by pasting a Strava numeric segment ID or URL from a Strava segment page (like “″) into the field below.

Using Strava with TrainerRoad

TrainerRoad screenshot

TrainerRoad screenshot

We’re in the middle of winter in the northern hemisphere, and lots of us are riding our trainers and loading the data to Strava. This winter, many people are riding with the popular new TrainerRoad application, which uses power curves from various trainer models to convert speed into “Virtual Power” and displays this onscreen as you ride one of their hundreds of structured workouts.  One of the major benefits of using TrainerRoad is that it allows riders without power meters to get accurate power data (indoors only, of course), which is a huge benefit when riding on the trainer.

Here’s a tip for those riding with TrainerRoad and uploading the data to Strava, particularly if you don’t have a power meter.  Rather than loading the data from your bike computer or GPS, like you’ve probably been doing previously, you should instead download the data from TrainerRoad onto your computer, and then upload this to Strava.  The benefit of this approach is that the data you download from TrainerRoad contains power information, which Strava will see and process when you load it to Strava.

Here’s how it works:

  1. On the ride page on the TrainerRoad website, click the red Download button in the upper right.TrainerRoad screenshot
  2. When prompted, save the file on your computer (it will have a “.tcx” extension).  Remember the location where the file is saved.
  3. On the Strava website, hit the “Upload Activity” button, and then choose the option to “Upload files from your computer” on the left.Strava upload screen
  4. Hit the “Choose Files” button, and select the TCX file you saved from the TrainerRoad website.  That’s it, you’re done.

The data will upload as usual, and you’ll get a regular Strava trainer ride, complete with all the power data calculated during the ride by TrainerRoad.

Strava ride with power data

Strava ride with power data

The best thing about this technique is that it integrates perfectly with Strava’s new advanced power training analysis features (premium members only).  Strava will use the power data calculated by TrainerRoad and give you detailed power analyses, including power curves, power band distribution by time, and power zone distribution.  Some of this you can get on the TrainerRoad site, but not all (TrainerRoad doesn’t yet have power curves, for example).

Strava power curve

Strava power curve

TrainerRoad has said that automatically posting data to external sites like Strava is on their road map for 2013, but for now, you can use your TrainerRoad power data in other sites like Strava (and TrainingPeaks, Garmin Connect, etc) today with the couple simple steps outlined here.  Enjoy and ride lots!


Strava annual summary statistics

With the New Year right around the corner, many riders are looking back on their achievements for 2012 and looking ahead to their goals for 2013.  Strava provides a fair amount of data on annual achievements, but it falls short in a few areas, so I put together this set of annual summary statistics with details on distance, time, average speed, segment records, and more, broken down on an annual basis.

As with all my Strava tools, this is a third-party tool that is not affiliated with Strava.  It uses the Strava API to fetch information from Strava, and displays that information for you.  It does take a bit of time to run, because it needs to fetch each of your rides from Strava, so it will normally take about two to five minutes to fetch all the ride data.  You can leave the window open and let it work in the background while it fetches your ride data.

Check out the new Strava annual summary here.

Update June 2013: Cache clear function available
For all the folks who have been asking about the ability to clear the cached ride data, this functionality is now available. After you load your rides, the Setup tab now has a “Clear Saved Data” button which will do what it says, causing the tool to re-load your ride data from Strava the next time you run a summary. This is useful if you’ve made changes in your Strava data, such as changing bike names or changing the “Commute” flag on rides.

Update July 3, 2013: Offline :-(
As part of the rollout of their new V3 API, Strava has shut down access to the old V1 and V2 APIs. I only recently obtained access to the new V3 API, and will need some time to convert the this tool to work with the new API. Until that point, this tool will no longer be available.

Update September 6, 2013: Back online!
Strava has made several changes to their API over the summer, and I have been working to convert my code to work with the new API. I have finally finished this up for the annual summary tool, and the tool is now back online. There have been several changes in their API that affect the functionality of the tool. The most important change is that Strava now requires authentication in order to access most data through their API. This means that in order to use this tool (and other tools on this site), you need to be a Strava user, and grant permission for this site to access your Strava data. When you first access the annual summary page, you will see an orange button labeled “Connect with Strava”, which will take you to the Strava site to grant authorization to access your Strava data. You only need to do this once.

There have also been several changes in the data that is available through the API. One notable limitation is that Strava no longer provides information about the bike used for ride activities, so I am no longer able to provide breakdowns of distance, speed, elevation gain, etc by bike as I used to do. On the other hand, Strava (finally!) has provided API access to all types of activities (runs, swims, etc.). Previously only bike rides were available through the API. This has allowed me to provide more detailed breakdowns by activity type. I’m still working on adding more detailed information based on activity types.

Update April, 2016
A quick update on several new features that have been added over the past few months.

Automatic Units – The Setup tab now automatically populates the Units field to English/Metric based on how this is set in your Strava account. Sorry to all the folks who have had to switch this manually every time they come to the site.

Export Data – All activity detail tables now include a link called “Download activity details”. This produces a CSV file with all the data from that table, so you can easily load the data into Excel or other systems.

Filter – The new “Filter” tab allows you to find and group together activities by keyword. Simply type in a word or phrase, and a new tab will be created showing all matching activities. You can enter multiple searches on multiple lines, and advanced users can use regular expressions to run powerful searches. Search criteria are saved across sessions, so they will still be there the next time you come back to the site.

Share – The new “Share” tab allows you to share your data with others. Many people have expressed a desire to show their statistics to other people, which is difficult because Strava’s API only allows you to see data from your own account. The new sharing feature is off by default (only you can see your data). If you turn sharing on, you will receive a URL that you can give to others, or post on social media or elsewhere. Anyone who clicks on the URL will be able to see the same view of your statistics that you see. You can turn sharing on or off at any time.

New Charts – Many people have asked for the ability to display charts of total activity time, along with elevation gain. I have added four new charts for this — Monthly Activity Time, Monthly Elevation Gain, Cumulative Activity Time, and Cumulative Elevation Gain. I have also consolidated all of the charts onto a single Charts tab, to help reduce the growing number of tabs on the left-hand column.

Creating better cyclocross segments

Creating high-quality Strava segments for cyclocross races can be challenging. Many of the factors that create difficulties for Strava’s segment-matching algorithms are present in spades in cross races. These include segments having start and end points close together, loop segments with rides that traverse the segment multiple times, and tightly knotted segments which pass close to the start and end points. These characteristics pretty much define the typical cross course, making cross segments inherently challenging. Adding to this difficulty is the fact that cross courses are usually changed for every day of racing, which means that a segment really only applies to a single race day.

There are several things you can do to help create better cross segments.

1. Start with good data. Location data from a dedicated GPS unit, like the Garmin Edge series, is usually better than data that comes from an iPhone or an Android phone. Many Garmin units offer the ability to record data points every second (as opposed to the three-second recording interval in phones, or the even longer intervals you can get in Garmin units with the “Smart Recording” feature turned on). Having closely-spaced data points helps a lot in cross races, which contain lots of small-scale twists and turns. Good GPS data from a cross race will show the course crisply and smoothly, with very repeatable laps. Bad data will be jagged and angular, with poor repeatability across laps. The better your source data is, the better it will match other riders tracks when they ride the same course.

2. Choose the start point carefully. For courses with an off-course staging area that leads into the main course, make sure the starting point is on the main course, not in the staging area, or immediately after the staging area. If your starting point is in the run-in to the main course, it will only pick up the first lap, and will miss subsequent laps.

3. Don’t overlap the start and end points. Putting the start and end points right on top of one another can confuse Strava’s segment-matching algorithm. Leave a bit of space between them — ideally, 50 meters or so. You won’t get measurements over this short gap, but you will get better data matching for your laps.

4. Keep the start and end points away from other sections of the course. This is particularly important for the start point. If other sections of the course loop around and pass close to the start point, Strava will often pick that later section as the start point, resulting in laps that only partially match the segment. Ideally, you should have the start point located just past the finish line, and the end point just before the finish line, but for many courses this isn’t possible if other parts of the course pass close by the finish line. In those situations, the best thing to do is to put the segment start and end points in an isolated section of the course, if you can find one. You may have to experiment a bit to get this to work well — create the segment, see how well it matches your ride (and other riders’ rides), and delete it and try again if it’s not matching correctly.

5. Name your segment well. For many races, just about any ride in the general vicinity of the course will match almost every segment that has ever been created for that race, resulting in a confusing list of segment matches. If your race is called “MonsterCross”, don’t call your segment “MonsterCross”, because people will have no idea what particular course the segment applies to. “MonsterCross 2012 – Day 1″ or “MonsterCross – Sep 30, 2012″ are much better names.

6. Hide old and lousy segments. When you upload your ride and find that it matches a long list of irrelevant segments, hide the ones that don’t matter (click the “Hide” button that appears when you hold your mouse cursor over the segment). This will remove the segment from your list of segment matches, and will also give Strava a bit of negative feedback about the segment. If enough people choose to manually hide a segment, eventually Strava will automatically hide the segment by default, making everyone’s lists of segment matches a little bit cleaner.

Leadville Strava usage

The Leadville Trail 100 MTB race, held this year on August 11, is one of the biggest mountain bike endurance races of the year, and it provides a good opportunity to examine Strava’s market penetration in the off-road community.

The official race results show a total of 1,710 starters, with 1,482 finishing inside the thirteen hour cutoff, 225 DNFs, and 3 disqualifications.

Calculating the number of Strava users can be done by examining data from segments on the route.  This can be a little bit tricky, because not everyone rides every segment (some people drop out, and others have flaky GPS data that causes them to miss segments, or batteries that die during the race).  And in other cases, riders on a segment may not be part of the race (volunteers riding to the top of Columbine to work at the aid station, for example).

I looked at a dozen or so segments using the Strava API, and cross-referenced results across riders.  This showed a total of 443 riders using Strava, or about 26% of the race field.  This number will probably increase slightly, as additional rides are still trickling in (some people upload their activities well after the fact). [Edit, as of Aug 22, 458 riders, 26.7% of the field; as of Sep 11, 486 riders, 28.4% of the field; as of Feb 7, 2013, 522 riders, 30.5% of the field]

It’s worth noting that these figures only count rides that are publicly visible on Strava.  Users have the option of making rides private, which obviously hides them from public view.  There’s no way to know for sure how many of these there are, but even the publicly visible rides show a sizable market penetration, as well as substantial room for further growth.

D2R2 Segments

Like many popular rides, the Deerfield Dirt Road Randonee is extensively segmented, with quite a few good segments, along with a bunch of lousy ones created by Strava’s auto-detection algorithm.

By default, Strava displays “popular” segments, and hides the rest, but the logic for choosing which segments to display and which ones to hide can be a little bit flaky.  The default view shows a bunch of random overlapping segments, and omits many of the climbs in the early part of the route:

D2R2 default segments

Shown below is the list of segments I use for this ride, which covers most of the major climbs (about 9,000 feet) on the 180K route.

Segment Distance Elevation Gain
Hoosac Road 1.8 mi 475 ft
Elmer Rd 0.2 mi 139 ft
Pine Hill Rd Southbound 1.8 mi 232 ft
Poland Gate (Southbound) 1.2 mi 395 ft
Bullitt Rd Northbound 0.5 mi 189 ft
Creamery Rd. Ashfield 1.6 mi 318 ft
Liliput Rd 0.6 mi 305 ft
Old Stage Road 1.7 mi 320 ft
Harris Mountain Road 2.0 mi 831 ft
Archambo Road 0.3 mi 211 ft
Hillman Road 1.7 mi 679 ft
Franklin Hill Rd 1.1 mi 448 ft
Amidon Rd – Jacksonville Stage Rd 3.1 mi 697 ft
Jacksonville Stage Rd 1.0 mi 458 ft
Sweet Pond Road 1.8 mi 461 ft
Gates Hill (Alexander Road) 1.8 mi 477 ft
Nelson Rd to Greenfield Rd 5.8 mi 722 ft
The Patten 1.8 mi 861 ft
The Fiskes 0.6 mi 294 ft
Hawks Rd 0.3 mi 100 ft
D2R2 Cornfield Loop 2.1 mi 19 ft

With this segment list in place, you get a much better view of the course, with each significant climb covered by a single high-quality segment: