TCX file format

A TCX file stores a workout as XML text, with laps and their totals, and track points with time, position, heart rate and cadence. Garmin defined the format, and training services such as Strava still accept it.

Full name
Training Center XML
Extension
.tcx
Type
XML text
Schema
Garmin TrainingCenterDatabase v2

TrackLoupe does not open TCX files yet. The tools page lists what it opens today.

What a TCX file can store

DataTCX
Recorded tracksYes
More than one trackYes
Track segmentsYes
Planned routesYesAs a Course
WaypointsYesOnly as course points
File name and titleNo
DescriptionYesActivity notes
AuthorNo
Creation timeYes
LinksNo
Track namesNo
Activity typeYesRunning, Biking or Other
ElevationYes
TimestampsYes
Heart rateYes
CadenceYes
PowerWith an extensionGarmin ActivityExtension v2
TemperatureNo
SpeedWith an extensionGarmin ActivityExtension v2

This table comes from the code of TrackLoupe, and the notes say how each field is stored. The converters use the same table to tell you what a conversion keeps and what it loses.

What is inside a TCX file

The root element is <TrainingCenterDatabase>. Recorded workouts sit in <Activities>, and each <Activity> has:

Each lap holds its totals: TotalTimeSeconds, DistanceMeters, Calories, and the average and maximum heart rate. Its <Track> holds the <Trackpoint> elements. A track point holds the time, the position in <LatitudeDegrees> and <LongitudeDegrees>, the altitude, the distance covered so far, the heart rate and the cadence.

This is a short TCX file with one lap and one track point:

<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2">
  <Activities>
    <Activity Sport="Biking">
      <Id>2026-03-14T09:30:00Z</Id>
      <Lap StartTime="2026-03-14T09:30:00Z">
        <TotalTimeSeconds>10</TotalTimeSeconds>
        <DistanceMeters>70</DistanceMeters>
        <Calories>1</Calories>
        <Intensity>Active</Intensity>
        <TriggerMethod>Manual</TriggerMethod>
        <Track>
          <Trackpoint>
            <Time>2026-03-14T09:30:00Z</Time>
            <Position>
              <LatitudeDegrees>38.7139</LatitudeDegrees>
              <LongitudeDegrees>-9.1394</LongitudeDegrees>
            </Position>
            <AltitudeMeters>45.2</AltitudeMeters>
            <DistanceMeters>0</DistanceMeters>
            <HeartRateBpm>
              <Value>128</Value>
            </HeartRateBpm>
            <Cadence>82</Cadence>
          </Trackpoint>
        </Track>
      </Lap>
    </Activity>
  </Activities>
</TrainingCenterDatabase>

What a TCX file leaves out

The TCX schema has no element for temperature or power. Garmin carries power and speed in an extension, ActivityExtension v2. A TCX file has no waypoints either, apart from the course points of a course.

Activities and courses

A TCX file can also hold a course: a planned route with a name, a track and course points, such as turns. Courses are for navigation on a device. Strava refuses them with a “Not an Activity” error, because a course does not record a real workout.

How to open a TCX file

TrackLoupe does not open TCX files yet.

Questions

What does TCX stand for?

Training Center XML.

Is TCX better than GPX?

For a workout, TCX keeps more: laps, heart rate and cadence are part of the format. For a route or a set of places, GPX fits better, because it has waypoints and more apps read it. The GPX vs TCX page compares them.

Why is there no power in my TCX file?

Power is not part of the TCX schema. It travels in Garmin’s ActivityExtension, and an app that does not write that extension leaves power out.

Why is there no temperature in my TCX file?

The TCX format has no place for it. A FIT file, or a GPX file with Garmin’s TrackPointExtension, can hold temperature.