Tp2intervals - Copy TrainingPeaks and TrainerRoad workouts\plans to Intervals


I made a software which allows you to copy your workouts from TrainingPeaks or TrainerRoad to It calls tp2intervals.

Some of you already used the tool to sync planned workouts from Intervals to TrainingPeaks (to push workouts for Wahoo devices, before native API was implemented).
The app still can do it, and now I released a version 0.5.0 with some new features.

Current set of features

For TrainingPeaks

  • Copy planned workouts from Intervals to TrainingPeaks
  • Copy whole training plan or workout library from TrainingPeaks to Intervals
  • Copy planned workouts from TrainingPeaks to Intervals training plan or workout library

For TrainerRoad

  • Copy workout from TrainerRoad library to Intervals workout library
  • Copy planned workouts from TrainerRoad to Intervals training plan or workout library

You can download the app from GitHub. There are executables for Mac (DMG), Windows (Exe) and Linux (AppImage). Executable jar and Docker image also available.

This is a standalone app, you need to configure it to gain access to Intervals and another platform(s). You can find information how to do it in readme and this post [IMPLEMENTED] Push workout to Wahoo - #87 by nasatt has very nice explanation. More information you can find in this topic [IMPLEMENTED] Push workout to Wahoo - #68 by Someone_Else.

Information regarding planning workout for tomorrow with free TP account you can find here

If you have any questions or problems, contact me here or on GitHub.


That works very well with TP thanks.

With regard to the syncing of the Intervals calendar to TP (option 1), i get an error that suggests i need a paid subscription to TP for it to work. Is that correct?

No, it’s not.
Syncing workouts for today and tomorrow is available for free TP account.
Could you tell me what date range you have in this section? Are these days in your case represent today and tomorrow?

And what your time zone is?

1 Like

Not needed anymore for Wahoo, but works flawlessly for Zwift (via TP), thank you for putting this together.

I just tried again, and it worked fine. Not sure what is different

Thanks for your work

1 Like

This works great. Under advanced options is intervals.power-range used? I thought it might turn a single value power to a range of powers (which is nice when used w/ garmin).

I just didn’t implement steps with single value. All steps interpreted as steps with range, even if min and max and the same values.
Eventually, I think I will fix it.


To upload workouts for Zwift you also can try this method Upload workouts to Dropbox for Zwift etc

Great job. Does it include workout instruction text for TrainerRoad workouts?

Sadly, no. They are not available via web, so I can’t grab them

1 Like

That’s OK, I think I’m migrating to Join anyway!

For Zwift users this is a great way to get workouts sync’d to Zwift.

I just got the payment error again when trying the TP sync. The workout is scheduled for today (29/3) on Intervals and the date range is correct in tp2intervals.

I assume it is a time zone issue. My time zone is UTC+12:00 Auckland/Wellington New Zealand.

Thanks for the report. I’m going to look at it today.

1 Like

Just released version 0.5.1

  • Added support for swim workouts
  • Fixed issue when TP returns Payment Required error during workout planning
  • Added configuration for log level, for troubleshooting purposes

As usual, latest version available on GitHub

I wasn’t able to reproduce the issue, but I found that somewhere I use date time instead of date. I fixed it.
If you still will have same issue. Go to Configuration, check Show advanced configuration, set log level to DEBUG, Confirm, reproduce the issue. Then send me log file (where to find logs) here via PM or directly to


Thank for sharing, I now finally have the perfect setup! Much appreciated!

Thanks for looking at this.

Unfortunately, I got the same error on the latest version. I have emailed you the log file.

Hi, thanks for your work on this. I have over 3000 workouts in TP so pulling them/some across is of interest. I have a paid coach account and a free athlete account with TP.

The tp2intervals config saves. I get a green confirmation. Unfortunately, I then get the following error message (when I select TP in the top bar):

Error while extracting response for type [java.util.List<org.freekode.tp2intervals.infrastructure.platform.trainingpeaks.plan.TPPlanDto>] and content type [application/json;charset=utf-8]

Apologies I can’t find a log file. No tp2intervals folder in .config on Ubuntu 22.04.

If you can help me, I’d greatly appreciate it.


Sure, I can help.

When TP page is loaded, the app requests all training plans and workout libraries. Without logs hard to tell, what could be missing. I hope it’s description. I’m gonna take a look at it.

New version 0.5.2 already available on GitHub

  • Added buttons Today, Tomorrow for quick workout planning in TP
  • Improved time to load platform pages
  • Fixed retrieving plans from TP without description

You can try the new version

I haven’t tested the app on such amount of workouts. My biggest plan has ~150 workouts, it took about 5-10 sec to sync. In your case to sync 3000 workouts can take…some…time. Just be prepared to wait about 3-5 min.