How to Import TCX Files from Fitbit to Garmin Connect

Anyone who has tried to export a tcx file from Fitbit and subsequently import into Garmin Connect has probably experienced the "An error occurred with your upload. Please try again." error.
For example: https://forums.garmin.com/showthread.php?369561-Error-uploading-TCX-from-Fitbit

I've found that you can get it to import successfully if you make the following changes to the .tcx file (which can be opened in a text editor)...

1. The first line will look something like this...
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Remove the standalone="yes" part so it looks like this...
<?xml version="1.0" encoding="UTF-8"?>

2. The end of the file will look something like this...
</Trackpoint>
</Track>
</Lap>
<Creator xsi:type="Device_t" xmlns:xsi="www.w3.org/.../XMLSchema-instance">
<Name>Fitbit Charge 2</Name>
<UnitId>0</UnitId>
<ProductID>0</ProductID>
</Creator>

</Activity>
</Activities>
</TrainingCenterDatabase>

Remove the following section of the above block...
<Creator xsi:type="Device_t" xmlns:xsi="www.w3.org/.../XMLSchema-instance">
<Name>Fitbit Charge 2</Name>
<UnitId>0</UnitId>
<ProductID>0</ProductID>
</Creator>

It should now look like this...
</Trackpoint>
</Track>
</Lap>
</Activity>
</Activities>
</TrainingCenterDatabase>


If you make these two simple changes, the file should import just fine.

Unfortunately, the total calories burned value gets lost in the import... so you'll have to add that manually. I couldn't figure out how to fix that.
Parents
  • Update: Only a couple days have passed since I posted the above, but it seems like something has changed and those two things alone don't do it anymore.

    Now, a third change appears to be needed in addition to the two given above.

    It seems Garmin Connnect doesn't like this type of time notation...
    2017-04-03T16:36:57-04:00

    You need to do a find and replace to convert all of the "-04:00" to "Z"
    So the above should look like...
    2017-04-03T16:36:57.000Z
    Note: Depending on your time zone, your files may have a number other than "4" in "-04:00"

    I'm 100% sure I didn't have to do this a couple days ago, but that seems to be par for the course with this crazy Garmin Connect import tool.
    Also interesting is the fact that, in my imports a couple days ago, the total calories figure wasn't being imported, but now it is. ¯\_(&#12484;)_/¯

    Something to note about this new wrinkle...
    Because you're effectively removing the time zone information, the time of your activity will import wrong. In my example above... 2017-04-03T16:36:57-04:00 should be 4:36PM in my local time, but because I removed the time zone information, Garmin imports it as 12:36PM. Since I have many files that I need to import, I am scripting the whole thing. So it's not a big deal to add the 4 back to the time number when I remove the "-04:00" If you're just importing a handful of these, you'd probably just need to fix it manually.
Reply
  • Update: Only a couple days have passed since I posted the above, but it seems like something has changed and those two things alone don't do it anymore.

    Now, a third change appears to be needed in addition to the two given above.

    It seems Garmin Connnect doesn't like this type of time notation...
    2017-04-03T16:36:57-04:00

    You need to do a find and replace to convert all of the "-04:00" to "Z"
    So the above should look like...
    2017-04-03T16:36:57.000Z
    Note: Depending on your time zone, your files may have a number other than "4" in "-04:00"

    I'm 100% sure I didn't have to do this a couple days ago, but that seems to be par for the course with this crazy Garmin Connect import tool.
    Also interesting is the fact that, in my imports a couple days ago, the total calories figure wasn't being imported, but now it is. ¯\_(&#12484;)_/¯

    Something to note about this new wrinkle...
    Because you're effectively removing the time zone information, the time of your activity will import wrong. In my example above... 2017-04-03T16:36:57-04:00 should be 4:36PM in my local time, but because I removed the time zone information, Garmin imports it as 12:36PM. Since I have many files that I need to import, I am scripting the whole thing. So it's not a big deal to add the 4 back to the time number when I remove the "-04:00" If you're just importing a handful of these, you'd probably just need to fix it manually.
Children
No Data