Guide: How to export & sync your workouts from Peloton to Garmin Connect (or Nike, Training Peaks, Runkeeper, etc)

One frustration for many people who come over to the Peloton platform is that they might be used to tracking their workout history on another platform, like Strava, Training Peaks, SportTracks, Nike, RunKeeper, or Garmin Connect. Peloton provides an integration for you to export your workout data to Strava and FitBit, however, for any other platform, you are on your own.

Today, we’re going to show you two different approaches you can take to export & sync your workouts from Peloton to Garmin Connect (or Training Peaks & other platforms). There is also a third possible solution if you are trying to upload to a platform besides Garmin, like Nike, or Training Peaks.

Method 1: Upload & Sync Peloton to Garmin Connect with RunGap

Before we begin, note that we will speak mainly about Garmin Connect here, but there are 25+ other services that RunGap can upload your Peloton workouts to, including Apple Health, Nike+, RunKeeper, Suunto, MapMyRun, Coros, FitBit, Zwift, SportsTracker, TrainingPeaks, and more. The process works the same as Garmin Connect, just swap your service of choice anywhere we mention Garmin Connect.

This solution seems to be the easiest for most people – and works by taking the workouts that Peloton can automatically upload to Strava for you, and migrating those over to Garmin Connect. There are three downsides to using RunGap.

First – the RunGap app is unfortunately only available for iOS. So if you don’t have an iPhone or iPad laying around, you will be unable to use this. However, it appears there is a similar Android app called “SyncMyTracks” you can try out, but reviews are very mixed on this on the app store, so proceed at your own risk trying that! If you don’t have a iOS device, go ahead and skip to Method 2!

Secondly – while the RunGap app is free to download, the ability to upload to some platforms (like Garmin Connect) requires a subscription. They call this their “Swag Bag”, and you can purchase it within the app. It costs $3.99 for 3 months, or $10.99 for a year. Worth noting, the 2nd method is free, as long as you only want to upload to Garmin Connect and nowhere else, and can get it set up correctly.

Thirdly – this method requires you to have turned on the Strava Peloton integration from a Peloton Bike or Tread. For some reason, it’s not possible to enable this integration from Peloton Digital. The good news is, once you turn it on once, you can set it so every future workout you take will sync and automatically upload to Strava. This means if you have a friend with a Tread or Bike, you can log in once, set up the integration, and be good to go. You could also do this from a local showroom.

Assuming you have an Apple device and have configured your Peloton x Strava integration, how does it work? Simple! In the RunGap app, you’ll want to navigate to the menu bar, and find “Accounts & Settings”. You’ll find a long list of services RunGap supports. Strava & Garmin are both at the top! You’ll need to connect both services. When adding Strava, you’ll get a popup from Strava’s site ensuring you want to authorize the connection – you’ll want to make sure to authorize it.

Screenshot of Strava authorization popup.
When adding Strava, you’ll see a screen like this making sure you authorize the connection.

As you add each service, you’ll see a screen with two options. One for “Update Activities”, and one for “Keep Source Titles”. We recommend you turn both of these on.

After both services are added, you’ll need to go back into the Accounts & Settings part of RunGap one more time. Click into the row for Strava, and click into “Advanced Settings”. For Strava, you want to make sure to change the “Use as Source” toggle to be true.

Screenshot of Strava settings page
In the Strava settings page, under Advanced Settings, make sure to change “Use as Source” to be turned on.

After setting Strava as a source, you may get a popup asking if you want to enable “Auto Sharing”. We recommend you turn this on. This simply means that when RunGap detects new workouts from the source (Strava), it can auto-upload them to your destination for you (Garmin).

Screenshot of Auto Sharing popup
You may see this popup asking you to enable Auto Sharing. Enabling it will require fewer clicks for you to get your workouts synced.

In RunGap, you’ll need to go to the Advanced Settings area for your Garmin account details as well. However, for your Garmin connection, you want to turn “Use as Destination” on.

Screenshot of Garmin settings page.
In the Garmin advance settings, make sure to set “Use as Destination” to be turned on.

On either the Garmin or Strava settings area of RunGap, if you don’t want to import workouts before a certain date, there is a section in the Advanced area to configure that. Also, if you only want to import cycling, and not yoga workouts, you can configure that there as well.

With all of that set up, you are now ready to sync your workouts. Using the menu, navigate back to your Activities page. At this point, it is likely blank. Pull down to refresh, and you’ll get a message at the bottom showing that it is connecting to Garmin & Strava. It will add any workout you have in Strava to your list on this page. Assuming you turned “Auto Sharing” on, after it imports them, it will then immediately upload them to Garmin Connect for you.

Screenshot of RunGap syncing with Strava
In RunGap, you can see at the bottom a dialog of it connecting and importing workouts from Strava. Workouts it has already imported are shown in a list.

As currently set up, any time you go into RunGap and swipe to refresh, the app will pull in your latest workouts through Strava, and upload them to Garmin Connect. If you want it to be more automatic, there is an “Automatic Refresh” option. To turn this on, go back into “Accounts & Settings”. Do not click into either Garmin or Strava, but scroll to the bottom. There, you will find a toggle for “Background Refresh”. Without opening the app, RunGap will periodically check for new workouts and sync them for you. This might have some impact on your battery life though – you can read more details about this option on RunGap’s support page here. There is also a separate option to “Refresh on Open” – which will have it sync every time you open the app, without having to pull to refresh.

Once the app has run, you can log into Garmin Connect and view your workout details there.

Screenshot of a workout in Garmin Connect uploaded by RunGap
A workout that RunGap synced from Strava is shown here in Garmin Connect.

As we mentioned at the start of this section, RunGap has the ability to sync with 25+ other services – so you can use this to migrate your data to a number of places.

Method 2: peloton-to-garmin Python Script for uploading workouts from Peloton to Garmin Connect

If you are comfortable setting up a script to run on your computer and making sure dependencies are installed (for Windows it is even easier as you are just downloading a .zip and running an .exe file), you might want to try this method first, as it is free, doesn’t require the Strava connection, and doesn’t require a Apple/iOS device. However, unlike RunGap, this method can only automatically upload to Garmin Connect. It does create a folder of TCX files for you that can easily be manually uploaded to other platforms though.

The project, called “peloton-to-garmin”, is available for free on Github. It was originally developed as a way to export a TCX file from Peloton, which is the file format that could then be used to manually upload to Garmin Connect (and other platforms like Training Peaks, RunKeeper, etc). However, in recent months the project has been updated so that it now supports auto-uploading to Garmin Connect for you when you run the script!

The script supports Windows, Linux, and MacOS. You can find full install instructions on the project page.

Screenshot of config file of Peloton to Garmin
This is what you will see when modifying the config file. You simply need to update your Peloton & Garmin usernames & passwords.

If you have Windows, it’s as simple as downloading the zip file from their page. After unzipping the file, you’ll need to edit the config.ini file and add your Peloton & Garmin usernames & passwords – make sure to also set the “UploadEnabled” setting to true in the config file. After saving the file, you run the peloton-to-garmin.exe file – it will ask how many workouts you wish to download & upload. The program will run for a minute, and then your Peloton workouts will magically show up in Garmin Connect! The program will also create .TCX files for all the workouts in a subfolder as well.

For Mac OSX as well as Linux, the process is slightly more complicated, in that you need to make sure to download & install Python 3. Full instructions on the setup are on their project page though – but it’s basically the same as Windows, with an extra step of making sure Python is installed & dependencies are downloaded. One thing to note is that the installation guide notes to use the following command:

pip install -r requirements.txt

The directions includes a disclaimer that Ubuntu users need to use “pip3” instead of “pip”. Some OSX users will need to do this as well – our setup on Mac OSX 10.15 required us to use pip3, so the command that worked for us was:

pip3 install -r requirements.txt

If one doesn’t work, try the other – whichever one works should get you set up and ready to run the project. You’ll then need to modify the config.ini file to store your Peloton & Garmin usernames and password, and you can also update the “UploadEnabled” setting to true. Once you’ve done all this, you can run the project and you’ll get a screen that looks something like this:

Screenshot of the program running on a Mac
This is what the program looks like after it runs on a Macbook. Note that we used a shortcut and passed “-num 3” when running the program, telling it we wanted it to download the most recent 3 files from Peloton.

The end result of all that text? You should now be able to log in to Garmin Connect and see your most recent workouts are showing up in Garmin Connect with all your data. Speed, heart rate, cadence, and power data all will now pull in and you can see the charts you are used to seeing in Garmin Connect. This also means that your Peloton workouts will now be a factor Garmin can use to calculate your Body Battery.

Screenshot of a Garmin Connect workout imported from Peloton
A workout in Garmin Connect that was imported from Peloton, showing graphs of all the data.

One other thing to note is that if you are not comfortable having your logins stored in plain text in the config file, you can always pass those in via the command line when you run the program. The command could then become:

peloton-to-garmin.py -email PelotonEmail@email.com -password PelotonPassword -garmin_email YourGarminEmail@email.com -garmin_password YourGarminPassword

Both the config file and command line prompts ask for your Peloton email address as well is Garmin Connect email address (which may or may not be the same). However, the program will also work if you use your Peloton username and/or Garmin Connect username in those fields – whichever you prefer.

Advanced options allow you to configure the Peloton-to-Garmin program to continue running in the background and automatically check for new workouts at a certain interval, like every hour.

As we noted, the script will also create TCX files for every file it parses from Peloton. If you are wanting to upload to other platforms besides Garmin Connect, most have a way to manually upload or import workouts. The TCX file format is fairly universal & standard, so most major platforms will be able to read & import these TCX files.

Screenshot of the TCX Folder
When the script finishes, a folder is created that has TCX files for each activity from Peloton. Those TCX files can then be uploaded to other platforms.

Method 3 – Sync to other platforms besides Garmin with Tapiriik

One popular free solution for uploading from Peloton to Garmin Connect used to be Tapiriik. This worked similar to RunGap, in that it would grab your Peloton workouts from Strava, and upload them to Garmin Connect. It also didn’t require an app, so was just a free website to sign up for.

Unfortunately, Garmin updated their developer program and API, and blocked uploading access to Tapiriik. This means Tapiriik is only able to *download* workouts from Garmin Connect, not upload. When you try to sync your Garmin Connect account, you get the following message now:

“Due to new limitations in Garmin Connect’s API, tapiriik can no longer upload activities to your Garmin Connect account, download historical activities from before you connected to tapiriik, or detect private activities (all activities uploaded to your Garmin Connect account will be synchronized).

However, if you wish to sync from Peloton to one of the other platforms they support (runKeeper, SportTracks, TrainerRoad, TrainingPeaks, etc), this might be worth checking out. As we mention above, you must have the Strava x Peloton integration enabled in order for this to work.

Chris L
Chris is the founder of Pelo Buddy. He purchased his Peloton in 2018, and has been riding and running ever since. You can find him on the leaderboard at #PeloBuddy.

5 Comments

  • Spiffman says:

    Option 4 – syncmyworkout.com (Subscription, similar to RunGap) That’s what I use.

  • Holly Kay says:

    This was SO useful! Thanks so much for writing about this, this is something I’ve been frustrated by since I swapped from Fitbit to Garmin at Christmas. I’ve now got all the power metrics etc (power curves, time spent in zones etc) on my garmin connect from my peloton rides and can see that I’ll be getting so much more out of my garmin from now on.

  • Jake says:

    Still waiting for a broadcasting solution, i.e. one that will let my Garmin F6 Watch process the ride data (power curve, VO2 etc.). Hopefully DFC will get there for the Bike+.

  • Patrick says:

    Thanks for posting this. Am I correct in assuming that when you import a run or hike from Peloton that you’re unable to import elevation data into Garmin? I’ve tried importing a few files and elevation data is missing from all of them.

  • Tricia says:

    Chris! This was super helpful! And I’m so technically challenged! The only part that I didn’t quite follow was that I needed to first get my bike synced with Strava AND that I needed to log into and get an account with Strava. But I did figure it all out. So much detail. I’m very appreciative of the work you put into this!

Leave a Reply

Your email address will not be published.