In the growing battle of not just trainer platforms, but training log platforms, TrainerRoad just took a big step forward. As one of the original pioneers of device-agnostic indoor training apps, they now allow you to account for your outdoor training within their platform. Not only that, but you can start doing some training load analysis from within their platform as well, including some season comparisons and PR tracking.
I’ve been playing with the features for the past week or so, and figured I’d give you a quick loop around the block. Note that I do indeed pay for my own TrainerRoad subscription, along with a disturbing number of other platforms too. Come to think of it, we probably shouldn’t tell The Girl exactly how many training log and app platforms I pay for. Shh!
The first piece to this puzzle is to understand how exactly TrainerRoad gets your outside data, and the answer is surprisingly simple: It uses the same connections that you’ve had to upload indoor data. See, TrainerRoad already integrates with Strava, Garmin Connect, and others. Now, instead of just ‘pushing’ data to those platforms, it’s also pulling data (or receiving, depending on how you want to define it). So each time you complete a ride on your ‘connected’ platforms, it’ll show up within TrainerRoad. These connected platforms are defined within your settings under ‘Ride Sync’ (Note: this is all the same as before, but it doesn’t import from TrainingPeaks, it only exports to it):
But that begs the question – what happens if you do as I’ve done and upload everything to everywhere? Won’t you get duplicates? Nope, apparently not (well, not just apparently, definitely not).
In fact, turns out my specific account was used as a bit of a test case of a worst possible scenario, because not only do I have all my networks connected, but a service like Garmin Connect can often get 3-5 copies of a given ride (since I ride with multiple head units for testing). For example, this ride a few weeks back on Garmin Connect:
But it’s actually more complex that than. See, TrainerRoad also has to deconflict between Strava and Garmin Connect in my case. So it has to decide which activity to use (and to not use both). And impressively, they seem to have done that very well.
While I didn’t go back and look at a decade’s worth of history, I did browse through this year’s data and haven’t seen any duplicates. Which gets to the next point: They are pulling in *all* of your history. It’s pretty cool in fact. I’ve got 1007 rides imported into the platform now, dating back to 2010.
Now like most of you, you might not have all of your rides back that far. For example, while I have rides from 2010 in there, that’s only rides that I’ve uploaded to one of those supported platforms, and it doesn’t appear to be importing from TrainingPeaks (because they block that API access). So I didn’t really start using Strava that heavily in that timeframe, thus those files were dependent on me uploading to Garmin Connect, which in turn was dependent on me actually using Garmin Connect. This would be in the days before Bluetooth Smart uploads via your smartphone app or WiFi (Garmin didn’t add Bluetooth to Edge units until 2013).
And in the event you had files elsewhere, you can simply drag them in bulk via the ‘Import ride’ option. The Zip file is notable, as is PWX, because that allows you to easily export out from TrainingPeaks, and import into TrainerRoad in one fell swoop.
In any event, files aside, let’s talk about what you see once you’re back to the dashboard, which is this:
It shows your latest ride, in this case today, as well as your training stress below it. As you can see, my latest ride from today was outdoors – not at all on TrainerRoad. You’ll note that below that it gives me a brief note that rides that don’t have a power meter don’t get TSS data automatically. So, for example, city-riding on my commuter bike.
Meanwhile, the training stress graph shows my overall load, as well as FTP changes marked with little dots. It also shows my 6-week running average. Of course, all of this is cycling-specific, so it doesn’t include running, swimming, or other stress inducing activities.
If I scroll down further you can see the individual weeks with the days of the week, each of those numbers is not the mileage or duration, but rather the stress (TSS) accrued. Note the ‘0’ entries in there. Those are days where I rode but didn’t have a power meter on the bike.
I can click on a week and get more detail about what was within that week. You’ll see the total TSS accumulated at the top, as well as the weekly average. Again, if I was solely riding and riding more consistently (versus also running or using bikes without power meters), you’d see logically higher values here.
There appear to be some minor bugs here, for example the ‘Speed’ shown in aero testing is using the total activity time (about 2hrs), versus the moving duration shown above. In my opinion these should match (either use moving duration or elapsed time. But I’m sure that’ll get corrected quickly.
Next, we can click on any ride anywhere to get more detail about that ride. So I’ll use this morning’s ride for the heck of it. Here’s the overall view of everything. Most of it is pretty straightforward.
For completeness, here’s what the top portion looks like from a semi-recent TrainerRoad (indoor) ride:
You can highlight sections on the graph, allowing you to get averages and maxes for that section. Also, you can then create virtual intervals (that stick beyond just this one session). So if you had certain portions of the ride you wanted to evaluate and then come back to later, they’d be there down the road (no pun intended).
As I hover over sections of the power curve graph, it’ll show me exactly where they come from in the chart.
On the graph they also allow you to look at it from a sprint or endurance standpoint. So in the case of sprinters this pulls the power curve down to 30-seconds, and then gives you more granularity. Whereas in the case of endurance athletes it gives you a much longer duration to focus on.
Next, you’ve got the comparison components. But to compare you’ll need to create seasons – or ways to compare against past chunks of time. Sure you could just create a season for the whole calendar year, but most people don’t train that way. They could have 2-3 ‘seasons’ within a year, such as a triathlon season that went to June (early Ironman race), and then a cross season for the fall. Or, just a given build to various races. Here’s a few random ones I created:
Once I do that, I can select date ranges to compare and then start slicing and dicing:
But this does expose one issue (which is mostly my fault): Bad data.
As you see above, there’s a Feb 9th ride titled ‘Quick Calibration’. That ride on a problematic trainer still ended up on Garmin Connect, and thus was sucked in here. It’s #FakeNews from a data standpoint, as you can see. And this isn’t the only ride to do so. At present, I can go ahead and delete this ride, but there’s no method to remove individual data points as there is on TrainingPeaks, Golden Cheetah, and Xert (among others). Nor is there a method like on Today’s Plan to put a cap on data points (i.e. 1,200w, discard everything above that).
Take for example the below graph when I added in ‘All Time’. You’ll see values upwards of 2400w. Those are also fake. I know that more or less my max is about 1,000w. Is what it is.
That all gets a little bit into the personal records section, which tracks your overall records (power curve bests):
The cool part is that it’s easy enough for me to know exactly where this data came from. I can highlight any point and then go and click ‘View details’ on the ride to see the offending file. At this point, I could delete it for now. TrainerRoad does agree that this problem probably needs a bit of detailing. Of course again I could manually fix a file through a tool like FitFileTools.com, or others, to remove the data spike.
[Update: TrainerRoad has also added a checkbox on a given workout so that you can remove it from PR’s, which semi-solves it until they can add removing a given data point within the workout. A good first step though!]
And what’s cool here is that I can select any point on the PR graph (be it more common times like 5 minutes, or uncommon times like 3mins 55 seconds) and then find out my PR’s for that timeframe:
Of course, in looking at all this, my data is pretty messy – it’s not as easy to see the trend lines that are far more obvious on someone that’s got a super structured training plan and a clear goal for the season. For example, if you take a look at one of the TrainerRoad guy’s stress graph, it paints a much more clear picture (mainly, that he spends more time on the bike than I):
All of this is definitely a good start, and something that competitor Zwift is missing. It’s certainly not a replacement for platforms like TrainingPeaks, but it does take things in the direction of being able to properly account for outdoor rides while indoors.
That’s more interesting once you start to look at having your indoor rides based on your overall level of fitness. Because TrainerRoad has all of their workouts structured as % of FTP, if it doesn’t know your FTP is actually higher than it is (because it’s not seeing those outside rides), then you’re potentially undertraining. In a nutshell, this aims to resolve that.
The New Arms Race?
Now anyone who’s been around the training platform game long enough can see the massive shift in the market. Back when I first started getting serious into triathlon, it was all about TrainingPeaks. And thus to this day that’s still my ‘training platform of record’, meaning the one that is ‘in theory’ the true that has all my rides dating back to the beginning (to which my coach is undoubtedly chuckling at my lack of data de-duplication there).
But there’s tons of new platforms, and really solid ones at that. For example, both Xert and Today’s Plan are pushing the boundaries of what we think of as a traditional training platform. In the case of Xert, they have a component that controls your trainer dynamically based on how you’re responding to that workout, mid-workout. Sorta like having a coach there that’s controlling the wattage on the trainer based on how he thinks you’re handling it.
And they aren’t the only ones. We’re seeing other startups like Final Surge start to expand, especially towards triathletes (which Today’s Plan also just recently announced support for). And then we look to trainer platforms (versus training), such as Sufferfest going in slightly different directions with more customized training plans, including areas like accounting for recovery workouts like structured Yoga sessions and even mental conditioning components.
Sure, not everything will stick – but it shows a lot of companies are working fairly hard at finding ways to be unique. How TrainingPeaks (or Zwift for that matter) will respond to these remains to be seen. In the case of many of these platforms (including TrainerRoad), they license the terminology (such as ‘TSS’, ‘NP’, and ‘IF’) from TrainingPeaks, but the underlying algorithms aren’t really protected. Sure, TrainingPeaks could revoke licenses if they feel a partner becomes more of a competitor (as they’ve done in other technology areas), but I’m not sure that’s TrainingPeak’s best bet.
I’d think that focusing on why these other companies are gaining ground is probably a better use of time. Beat them at their game, not through lawyers or contract folks. Certainly, TrainingPeaks is the behemoth for largely good reason. It supports an incredible number of sports and an equally high number of athletes and coaches. With that comes a lot of baggage. And as any training platform will tell you, one of the biggest challenges is satisfying coaches – whom often have very specific views and routines that they’ve long since established. In the case of TrainerRoad and to a similar extent Sufferfest, they don’t have to deal with that. Whereas companies like Xert and Today’s Plan have mostly been able to start fresh without the baggage.
In any event – definitely interesting times ahead. Though I’d caution that like cheap activity trackers, there isn’t quite as much market as the number of companies that want to get into the space believe. Eventually, you reach a saturation point of the number people willing to pay $10-$15/month for something, especially if that something isn’t providing significant value over what they already have. But at present, I’d argue that companies like TrainerRoad are doing a solid job at adding new value to their platform, all without increasing prices. Because nobody likes increased prices.
With that – thanks for reading!