🎉🎉🎉 Introducing Machine Learning-Based TSS Estimation! 🎉🎉🎉

Introducing a really cool and useful new feature, available now to all TR athletes: Machine Learning-Based TSS Estimation, for outside rides with heart rate but no power data.

Training Stress Score (TSS) is a convenient way to track training stress over time. But TSS relies on power data, and almost none of us are lucky enough to ride with a power meter all the time. For outdoor rides without power it can almost feel like you don’t get credit for your work, or like the ride somehow doesn’t count.

RPE and Heart rate-based TSS calculations have long been available for these rides, but these estimates use simple mathematical formulas and tend to be wildly inaccurate, and we knew we could improve this with insights from our enormous data set of real-world rides. After analyzing hundreds of thousands of workouts with machine learning models, we developed a more nuanced and accurate TSS estimator, derived from heart rate and other metrics recorded during outside rides. No, it’s not a replacement for power in all your training. But as a supplement for rides when power is unavailable, it’s a powerful tool that helps you track ALL your hard work.

ML-Based TSS estimation can be activated via TrainerRoad.com (click on “Account” and then head to “TSS Estimation” under the “Profile” menu). You can choose to apply it to individual rides, all future rides with heart rate but no power, or all past and future rides that meet these criteria (existing RPE-based or manual TSS estimates on past rides won’t be automatically overwritten). Once you set it up, it automatically syncs to the latest versions of all TrainerRoad apps, but you can always adjust or turn it off, too.

For more info and a short FAQ, head over to the feature announcement on our blog:
Machine Learning-Based TSS Estimation for Rides Without Power Data

Give it a try on your next power meter-less outside ride, and let us know what you think!


This is cool. Looking forward to trying this out!

Is there a good place to send or post feedback or should we put it in this thread?

1 Like

I’d recommend sending it over to support@trainerroad.com but you’re more then welcome to bring it up here, too.


My HR rides are mostly before October 2016. Now that I’ve toggled the setting to All Past and Future Rides, how long should I expect it to take to backfill TSS for all the HR-only rides?

Good question! Since we’ve just deployed the feature, it might take a moment. I’ll follow up with our engineers tomorrow if it seems like it’s taking an inordinate amount of time.


Was going to check in the morning, just curious as it wasn’t covered in the FAQ.

1 Like

I tried to set this up but heart rate and day of birth setting wasn’t saved when I returned to my profile, even I did select future rides option and got saved pop up message.

1 Like

Same, my max hr and dob are slightly incorrect, change them, says “saved” but when I come back they remain the unchanged

am I in the beta now ? :wink:

1 Like

Is the ML setup using age and max HR to place an individual within a population model, or learning weights etc. from the individual’s historical data to tune for them?

I’m guessing the former, so that it can be applied to everyone easily without needing past data for that individual. It’d be nice to start with a population based set of weights and then personalise to an increasing extent of and when a body of data is acquired, but I do see downsides to that with the complications of equipment variations and changes affecting the data set.

In any case, this doesn’t seem to work very well for me, at least in terms of consistency with TSS values that I get from outside rides with a power meter.

My HR profile is a bit unusual, which would affect the applicability of any population derived parameters. Also my outside FTP is definitely quite a bit higher than inside, so any estimates of power from HR that were based on a training set (pun!) of my data that has a lot more inside data than outside would throw things off when applied to outside rides. For me, for this to work well, I’m pretty sure it’d need to be a model trained on my outside ride data to get a decent estimate of NP as a fraction of outside FTP.

It’s very possible that in TSS terms, the HR based estimate could actually be more accurate than calculations based on outside rides with a power meter for people who have a difference between indoor and outdoor FTP. But I wouldn’t want to override the direct measurements. Ideally, it would be possible to estimate an outdoor FTP and have that applied to outdoor TSS values.

For the vast majority of people this is all too fine-detailed to be relevant though. My outdoor FTP is probably only 5% or so different from indoor, so the numbers don’t make any difference to anything. I just like thinking about the calculations I guess!

Can the model differentiate between different types of riding? I.e. all my indoor and road riding has power but none of the trailriding does.
Will this skew the estimation or would it still be ball park accurate?

All my road bikes and my TT bike give me power through the pedals. However my Gravel bike does not (I don’t want to risk them). Does this apply any distinction between types of riding?

…or does it simply not matter in the grand scheme of TSS things…

“All past and future rides” is greyed out and won’t let me save. The other 2 options appear to be functioning.

I’m having the same issue as others have noted here - the setup doesn’t seem to be working at the moment. When I select “all past or future rides”, click confirm, then navigate away from the page it doesn’t remember my selection, and my rides aren’t being with the TSS estimation in the calendar.

1 Like

Interesting, the team is on the case now. Thanks for letting us know.

1 Like

doesn’t appear to be working, no signs that any past rides have been automatically updated. Last night I manually updated a couple of pre Oct 2016 rides (before I put a PM on bike). All other rides haven’t updated as you can see here:

Unlike other reports above, the settings page looks correct:

Our team of highly-trained professionals has been deployed :wink:


If you select “all future and past rides”, will it override TSS estimations that were previously filled in based on manual input or the 1-10 RPE scoring? Context: I would like to keep those, just fill in the past rides for which I didn’t have a TSS estimation yet.

It will add estimates only for the old rides with no TSS, so your existing RPE scores should be safe. If you want to override those you can individually edit them and switch the TSS estimate to ML-Based.

Side note: thanks for asking this question, it’s not one that occurred to me to include in the blog post. I added this info to the post to avoid confusion for others.


Got to work and this is now working from my desktop. So either it was a mobile glitch or has since been fixed. @SeanHurley


Our engineers have been making some adjustments for the last hour or so. It’s probably up and running more smoothly now but I’m awaiting confirmation that fixes have been finalized. Good to hear it’s working for you now, though!