IRONMAN Shift Data Analysis

Shifts on Map

After waiting most of the summer to update my Di2 system’s firmware, I finally stopped by Endure It to have Erik update my system. With this update and the D-Fly module I am now able to record shift data within my Garmin fit files. There are many training benefits from having this information alongside my heart rate, power, cadence, and speed data. Unfortunately, Garmin has not decided how they want to deal with this data, so you’re stuck figuring out to do with it on your own.


Thankfully a professor at Samford University has built a website ( that helps us visualize Di2 shift data in several helpful ways. Without Brian’s help, I don’t think there’s a consumer facing way to do anything with this valuable data. While this site is still in “project” mode, according to Brian, it is complete enough to help me see several errors I made during my first IRONMAN. What follows is a quick overview of the data we can glean from, areas the site can improve, as well as where I went wrong on my ride and how the site can help me fix it. If you don’t like data, this is probably not the post for you. If you’re a data nerd like me, grab a bourbon and get comfy.

Ride Stats

Di2Stats starts out giving you the basic info about your ride, including how many shifts you made during the ride. Amazingly, I shifted 2,123 times in 112 miles and 6 hours, or an average of one shift every 10.3 seconds. Holy crap! Ride Stats While I know dropping from 53/11 to 39/28 is a total of 12 shifts for each hill end/start, that’s still a whole lot of shifting! I attribute this large number to the ease of shifting the Di2 system offers. It’s easy to be lazy when you have to mechanically shift your gears. Making a shift an effortless and mindless push of a button removes any excuse not to shift and stay in your optimal cadence range.


I have my Garmin set to auto-lap every 5 miles. Di2Stats separates out each lap and shows you how often you shifted during each lap. This chart is not very useful to me due to my auto-lapping a two-loop out-and-back race course. Had I been on a shorter course and manually lapped, I could have compared power/speed/cadence between each lap and how often I shifted, uncovering the most efficient shifting pattern for my bike and body. Laps  

Big vs. Little Chainring

This little pie chart quickly shows you how much time you spent in each of your crank’s rings. I’m not entirely sure of this was the optimal ratio for me, given my errors in power output. Chances are I should have stayed in the small ring more often, but perhaps not, as the larger ring sees the least bit of drivetrain friction (more on that below). BigVsLittle

Time in each gear combo

The next pie chart shows you visually how much time you spent in each of your bike’s gear ratios. As labeled, on the site itself you can hover to see what gear each slice corresponds to. Thankfully, the legend to the right lets us know as well. In my case, I am not exactly sure what I should have been aiming for here, but again, I thing my errors in power output show that I should have shifted up into an easier gear more often. Most of my time was spent in 53×17 and 53×19. Perhaps I would have been better off if that was 53×19 and 53×21. However, without more data it’s hard to tell. This chart can also show you how often you suffer from cross chaining. According to Friction Facts, as reported by Bike Radar, gear selection can save/waste several watts. While this doesn’t mean a whole lot for an amateur like myself, pros need every watt they can find and seeing proof of a clean or dirty ride when it comes to gear selection can be quite valuable. Perhaps Di2 states could use the data from Friction Facts to point out poor gear choices automatically. Gear Ratio by Time I wonder what I could uncover if each of the following charts could be isolated by gear ratio. Would I be able to see that I tended to push to hard in this gear, or was lazy? Could glaring errors pop out with the reduced data set? Perhaps the site could be expanded by allowing us to click on a gear ratio and isolate all applicable reports to only that ratio.

Average Power By Gear

This is an amazingly cool chart. If I’m reading this chart correctly, the highest average power output (242 watts) occurred in my smallest gear ratio (39×28) and accounted for 8.8% of the total power output during my ride. Similarly, my second smallest ratio (39×25) averaged 212 watts for 7.7% of power output during my ride. Now, I must admit, I’m guessing what those numbers mean in the above paragraph. The site says it will update descriptions int he future, so right now it’s up to the reader to understand how “242, 39×38, and 8.8%” relate to the ride. I think I have it right, but could be very wrong. TimeByPower Regardless of my interpretation, this uncovered a problem. I wanted to stay below 180 watts for the entire ride and I ended up pushing up hills WAY too hard. In the end, nearly a third of my power was output above my goal output of 180 watts. I think this is a huge issue. While it was nice to do the ride in just over six hours, I have a strong feeling that my issues at mile 17 in the run are related to pushing it too hard on those hills.

Heart Rate by Gear

This chart tells a similar story as the one above. High heart rates were recorded when in higher gears, meaning I was working harder when climbing then I was when on flat and downhill portions of the course. Gears and Heart Rate Again, I am not 100% sure that I’ve interpreted the chart correctly, so Di2Stats would benefit by the addition of more thorough chart explanations. I am somewhat happy that I was able to keep my heart rate down when I was not climbing. I stayed in zone 2 for 75% of the ride and spent no appreciable time above zone 3.

Cadence by Gear

This chart show you your average cadence in each gear combo. It’s a pretty straightforward metric. Cadence by Gear The only real complaint I have here is that I’d prefer to see this chart ordered by gear and not by cadence. It’s hard to uncover patterns when ordered by cadence. If it started at 12:00 with the smallest gear and moved larger clockwise you could easily see if you tend to muscle through the lower gears while spinning the higher gears fast. A quick glance at the legend shows that it is as I suspect. On the harder gears I tend to push with low cadences and the easier gears see me spinning faster. Ideally this would show 90 rpm across the board, however, if you statistically analyzed the data it would show that the variance was relatively low, 80% of my ride varied less than 10%.

Shift Timeline

This is a neat, though somewhat less than useful, visualization of your shifting choices. It’s simple to read; the horizontal axis is time and the vertical axis shows what gear you are during said time. Shift Map One unfortunate side effect of riding for six hours is that there is a ton of data to visualize. In order to display this timeline in a sane manner, I have to shrink it down from 14,000 pixels wide to a still huge 6000. Thankfully, this is not an issue in a normal one or two hour ride. I like to have this chart, it’s neat to look at, but beyond its novelty, I don’t get much from it. Perhaps there’s something I’m missing, but right now I just look at it, say, “cool,” and move on.

Raw Data

As intimidating as this sounds, the raw shift data feature of Di2stats is quite useful. It simply shows all data in the fit file, sorted by gear. Here you can find out how long you were in a gear, how often you shifted to/from it, as well as your average/max heart rate, power, cadence, and speed in that gear. Raw Time In Gear There’s little to critique here. The data is the data, if you don’t like it, you can’t blame the website. However, I would not mind seeing a bit more analysis here. Obviously, the goal with a geared bike is to use the gears to smooth out pedaling force so that your body is always working the same amount not matter the external conditions. You shift into a faster gear on the downhills and and easier gear on the uphills and keep the work the same throughout. Unfortunately, showing average and max numbers doesn’t tell me how well I achieved this goal. Is that max an outlier, or was there a huge amount of variance in my heart rate/power/cadence/speed? Perhaps a little basic statistical analysis could be applied here. Maybe a column for standard deviation could show how “smooth” you were.

Additionally, I wonder if the analysis could be more accurate if the website had the option to drop from the data set gear selections that lasted for fewer than a second or so. This would filter out gears that were skipped over during a large up/downshift in preparation for a hill or sprint. (Thanks to u/skot123 for this idea) 

Raw Time by Gear I find this section useful in many ways. Take, for example, the time spent in 53×17. The course was relatively flat when I was in this gear, if not slightly downhill. What really stands out here is that, despite the ease in shifting that come with Di2 electronic shifting, I was lazy. My average power was 100 watts yet my max was 369. Lacking a standard deviation, it’s impossible to tell if that 369 watt peak was a statistically insignificant outlier or if it was meaningful. It’s also quote interesting to look at my max speed by gear, when sorted by gear inches. Ideally the smaller the gear, the slower you’d go and vice-versa. Unfortunately, this did not occur during my ride. In general, I did increase in speed as gear size increased, but the line would not be a perfect upward slope. A little excel work shows this: Speed By Gear The red line is my average speed by gear and the blue is the max. Clearly I need to shift even more than once every 10 seconds!

Shift on Map

This is a map I never thought I’d be able to see. What you see below is a map with my course overlaid and color coded by gear selection. You can clearly see where I shifted and, if you were to zoom in closer, you could see if my gear choice differed by lap. (I added the pie chart on top.) Pretty amazing, if you ask me. Shifts on Map I have to admit, having access to shift data is a bit overkill, but it does uncover problems that may not have been so obvious when only looking at the traditional speed/cadence/heart rate/power data we’ve all come to expect at the end of a ride. Thanks to Brian at, we can now visualize our shifting data set and make changes when problems are uncovered. Personally, this analysis uncovered several easy ways to increase the smoothness of my ride and save some more energy for the run.