TCX

What is a TCX file?

Garmin training data — heart rate, laps and cadence alongside the track.

What TCX is

TCX is a plain-text format you can open in any editor. It is used for fitness tracking.

The extension is .tcx, and the full name is Training Center XML. Both matter less than what the file can hold, which is what the rest of this page is about.

Where TCX came from

Garmin published it in 2007. The specification is Training Center XML.

Age is worth knowing here for one practical reason: the older a format is, the more programs have had time to learn it.

The specification is published, but by its owner

It is written down and implementable, though the vendor decides what the next version looks like. In practice that is enough for the file to keep opening; it is not enough to be sure of it.

Nothing is thrown away

TCX stores its content exactly. Saving it again changes nothing, so it can be opened, edited and re-saved as often as you like without accumulating damage — which is what makes it a working format rather than a delivery one.

What opens TCX

Garmin Connect, Strava and TrainingPeaks read it, and so do most programs of the same kind.

If a file will not open, the format is rarely the problem — it is more often that the program predates it. Converting to something older is the reliable way past that, and it is what the rest of this site is for.

Opening it in a browser

No browser reads it.

That is the single most common reason to convert it: not that the format is bad, but that the place you want to show the file cannot read it.

It is a working format

TCX is meant to be opened and changed. Keep the file in this format for as long as the work is going on, and export from it whenever a finished copy is needed.

Built for the training data, not the map

GPX records where you were. TCX records what you were doing: heart rate, cadence, calories, and — the part that matters most — laps, as first-class structures with their own totals rather than as marks on a line.

That difference is the whole reason the format exists. An interval session is not a track with some notes attached; it is eight efforts with a recovery between each, and every one of them has a duration, a distance, an average heart rate and a maximum. GPX has nowhere to put that. TCX was designed around it.

An activity with no track is still an activity

A treadmill run, a turbo session, a rowing machine, a swim in a pool: no satellites, no coordinates, and a great deal of data. TCX handles these natively because the position on each trackpoint is optional — an activity can consist entirely of time, distance, heart rate and cadence.

GPX cannot really do this. It is a format about coordinates, and an indoor session exported as GPX either fails or arrives as an activity with no data in it. This is the most common practical reason to choose TCX over GPX when a platform offers both.

Laps are the structure everything hangs from

A TCX file is a sport, containing an activity, containing laps, each containing a track of points. The lap carries its own summary — total time, distance, calories, maximum and average heart rate, intensity, and whether it was triggered manually, by distance, by time or by position.

So the structure preserves the workout as it was performed. Import it somewhere else and the intervals are still intervals, with their own numbers, rather than a continuous line somebody has to re-segment. That is exactly what is lost when the same session is exported as GPX.

It is verbose, and that is a real cost

TCX is XML, and it repeats a full set of element names on every trackpoint. A one-hour ride recorded once per second is 3,600 points, each carrying time, position, altitude, distance, heart rate and cadence in tagged form, which comes to one to two megabytes where the underlying numbers are a fraction of that.

Garmin’s own FIT format is the binary answer to this and is what the devices actually record in — an order of magnitude smaller, and unreadable without a library. TCX is the readable interchange format that sits between FIT and everything else, and its size is the price of being plain text.

Where TCX files come from

Garmin Connect exports them, as do most training platforms — Strava, TrainingPeaks, Zwift, Wahoo, Polar. The format is old enough and simple enough that support is close to universal in the fitness world, even among companies that have never sold a Garmin.

The usual reason for exporting is moving between platforms or keeping a personal archive. Coaching is the other: a coach who needs to see the intervals rather than the route wants TCX or FIT, because the lap structure is the analysis.

What survives a conversion, and what does not

TCX to GPX keeps the track, the timestamps and the elevation. It loses the lap structure entirely, and the heart rate and cadence survive only as vendor extensions that the receiving platform may or may not read. For an indoor activity with no track, the conversion has almost nothing left to produce.

The other direction adds nothing that was not recorded. A GPX converted to TCX is a track wearing a training format — one lap, no heart rate, no cadence — because the data was never in the source. Convert down when a platform demands GPX, and keep the TCX as the copy that holds the session.

Fixing an activity by hand

It is XML, so a wrong sport type, a bad date or a spurious section at the end can be corrected in a text editor. Deleting the trackpoints recorded while the watch sat in the car is the commonest repair, and it is straightforward as long as the lap summary above them is adjusted to match.

That last point is the trap. Unlike GPX, a TCX stores both the detail and the totals, and nothing recalculates one from the other. Delete ten minutes of points and leave the lap saying 42 kilometres, and every platform will believe the summary. Edit both or edit neither.

The facts, in one place

Identifiers and provenance for the TCX format.
Extension.tcx
Media typeapplication/vnd.garmin.tcx+xml
Published byGarmin
First published2007
SpecificationTraining Center XML

TCX files: common questions

What is the difference between TCX and GPX?

GPX records where you went; TCX records what you did. TCX carries laps as real structures with their own totals, plus heart rate and cadence, and it handles indoor activities that have no coordinates at all. GPX has none of that.

How do I open a TCX file?

Upload it to a training platform such as Strava, Garmin Connect or TrainingPeaks. It is also plain XML, so a text editor shows the raw structure — useful for checking the sport type or the date before an import.

What is the difference between TCX and FIT?

FIT is Garmin’s binary format and is what the devices actually record in — much smaller and not human-readable. TCX is the XML interchange format, larger but readable and supported almost everywhere in the fitness world.

Does converting TCX to GPX lose data?

Yes. The track, times and elevation survive; the lap structure is lost entirely, and heart rate and cadence become vendor extensions that the receiving platform may ignore. An indoor activity with no coordinates has almost nothing left after the conversion.

Can a TCX file hold a treadmill or turbo session?

Yes — position is optional on each point, so an activity can consist entirely of time, distance, heart rate and cadence. That is the main reason to choose TCX over GPX when a platform offers both.

Why is my TCX file so large?

It is XML repeating full element names on every trackpoint, and a one-hour activity recorded once per second has 3,600 of them. A megabyte or two is normal. FIT stores the same session in a fraction of the space, at the cost of being unreadable without a library.