Convert TCX to KMZ

Converting TCX to KMZ turns a training file into a single compressed Google Earth attachment: the route becomes a line, the sport becomes its label, and the whole document is zipped. It is what to send when the recipient wants to see where you went and has no way to open a Garmin export.

  • Where it runs In your browser. The file is never uploaded.
  • Rebuilt KMZ works differently from a TCX, so this is not the gradual degradation a lossy codec applies. What KMZ can express is reproduced faithfully; what it has no equivalent for does not survive at all.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Positions, elevation and timestamps are carried across. Sensor streams, styling and embedded imagery are not.

Up to 100 files at once. Mixed formats are fine.

The attachment problem this solves

A TCX is unopenable for most people. It has an extension nobody recognises, it is XML rather than anything a double-click will render, and the software that reads it properly is the training platform the recipient may not use. Sending one to a club secretary or a race director produces a reply asking what it is.

A KMZ produces a globe with a line on it. That difference — between a file that has to be explained and a file that opens — is the whole reason for this conversion, and it is worth being clear that it is a presentation decision rather than a data one. Nothing about the route is improved. What changes is whether the person on the other end can see it without being talked through anything.

Where the factor of forty-eight comes from

Measured on a 7,200-point session — two hours at one sample a second, carrying time and altitude — the TCX was about 2.2 MB, the intermediate KML about 258 KB, and the finished KMZ about 47 KB. That is roughly 315 bytes a trackpoint reduced to under seven.

Two unrelated effects are stacked and it is worth keeping them apart. The first drop, nearly nine to one, is the training file becoming a drawing: the verbose `<Position>` markup, the timestamps and the sensor elements all leave, and none of that is recoverable. The second, five and a half to one, is the deflate, and it is fully reversible. Only the second is compression, and describing the whole thing as compression would suggest the original is still in there somewhere.

One document, no assets, nothing hidden

Renaming the output to `.zip` and opening it reveals a single member called `doc.kml` at the root of the archive. That name and that position are what every KML reader looks for first, so the file opens without any fallback logic.

There is nothing else inside — no images folder, no icons, no second document, no manifest. Most KMZ files in circulation carry assets alongside the KML, which is what the format was designed for; this one is doing the narrower job of compressing a single document into a single filename. It also makes the archive trivially auditable: if you want to know exactly what your coach will see, extract that one file and read it.

What the coach will not be able to do with it

Everything a training platform reads is absent. Heart rate, cadence, power, the running distance on each point, calories, the lap divisions and every per-lap average are dropped, because a Google Earth document has no element that could hold any of them. So there is no analysis to be done on the file, only a route to be looked at.

The timestamps go with them, which is the loss that catches people out. Google Earth's time slider — the control that replays a track — needs a gx:Track with parallel `<when>` values, and this conversion writes a plain LineString. If the person you are sending it to actually wants to study the session, send the TCX itself, or convert it to GPX, which keeps the clock and which most training software will import.

What arrives on the recipient's screen

One placemark per activity, named after the sport — `Running`, `Biking` or `Other`, since a TCX activity has no name field and the platform title you know it by lives in a database rather than in the export. The line follows the terrain rather than cutting through it, because a tessellation flag is set on each LineString, and it is drawn with Google Earth's default appearance since no style is written.

There are no pins. A TCX has no waypoint concept, so nothing in the file becomes a marker, and the recipient sees a bare line in the sidebar. If a start, a summit or a meeting point needs highlighting, the practical route is to add the placemarks in Google Earth after opening the file and save it back — which takes a minute and produces a better briefing document than any converter could.

Explaining the straight segments before they ask

Trackpoints with no `<Position>` are dropped, and watches record them whenever the receiver has no sky: tunnels, underpasses, multi-storey car parks, deep street canyons. In the KMZ those stretches are absent, so the line runs straight from the last fix to the first one after the gap, sometimes across a river or through a hillside.

It looks like an error and it is not — the file never contained those positions, and no conversion can restore them. Worth a sentence in the covering email if the route has an obvious one, because the alternative is the recipient concluding the file is broken. An entirely indoor session has no fixes anywhere and produces no geometry at all, at which point the conversion says that no track or waypoints were found, which is the correct description.

Choosing between the archive and the original

Send the KMZ when the question is "which way did you go" and the recipient is not a training platform. Send the TCX when the question is about the session — pacing, effort, splits — and the recipient has software that reads it. Send both when you are not sure, since together they are still under three megabytes and the ambiguity costs more time than the bytes do.

The one combination worth avoiding is sending only the KMZ and treating it as an archive of the session. It is not one, and it cannot be converted back: the training data does not exist in the file and no tool can reconstruct it. Keep the TCX wherever you keep your records, and think of the KMZ the way you would think of a PDF exported from a document.

Changing anything means unpacking it first

A KMZ cannot be edited in place. To rename the placemark, colour the line or trim a stray point, rename the file to `.zip`, extract the document, edit the XML, and rezip it with that document at the root of the archive rather than inside a folder. The root detail is the one people get wrong, and the symptom is a file that opens to an empty map in some readers and works fine in others.

If you expect more than one round of changes, keep a KML as the working copy and produce a KMZ each time you send one. That is the same discipline as keeping a source document and exporting from it, and it avoids the position where the only copy of a corrected route is inside an archive somebody else already has.

A bulk export arrives as a stack of identical labels

A TCX downloaded as a bulk export from a training platform can hold many activities in one document, and every one becomes its own placemark in the archive. They all take their name from the sport, so a month of riding lands in the recipient's sidebar as a column of entries all reading `Biking`, drawn on top of each other on the globe with nothing to say which is Tuesday and which is Sunday. Toggling them one at a time to find the right one is the only way through, and it is a poor thing to hand somebody.

Splitting before converting is the fix. Activity boundaries are unmissable in the XML — each `<Activity>` element opens with its own `<Id>` timestamp — so cutting the file into one session per document is mechanical, and converting them separately gives one archive per ride with a filename that says which. Where they genuinely belong together, the alternative is to edit the `<name>` of each placemark in the KML before it is zipped, which takes about as long and produces a sidebar somebody can actually read.

Packed on your machine, not on somebody's server

The TCX is parsed, the KML written and the archive zipped inside this browser tab. No request carries the file anywhere, which the network panel will show during a conversion, and the page works with the connection switched off once it has loaded.

The alternative most people reach for is a web converter or a file-compression site, which means a document holding your heart rate and your home address goes through a stranger's machine so that an email attachment would be smaller. You are going to send the result to somebody by design; that is one recipient you chose. Doing the conversion locally keeps it at one.

How to convert TCX to KMZ

  1. Drop your TCX file onto this page, or click to choose one.
  2. The route is drawn into a KML and zipped in your browser.
  3. Download the KMZ and send it — it opens in Google Earth.

A TCX session packaged as a KMZ archive

TCX compared with KMZ
TCXKMZ
Full nameTraining Center XMLZipped KML
File extension.tcx.kmz
Media typeapplication/vnd.garmin.tcx+xmlapplication/vnd.google-earth.kmz
First published2007
Published byGarminKeyhole
SpecificationTraining Center XMLOGC KML 2.3
LicensingPublished, not standardisedOpen standard
Standing todayCurrentCurrent
Opens in a browserNo browserNo browser
Considered insteadGPX, FITKML, GPX

Opening the result

The usual programs do not overlap: TCX opens in Garmin Connect, Strava and TrainingPeaks, KMZ in Google Earth and QGIS — so whoever receives the result needs something from the second list.

What each format is for

The two are aimed at different work: TCX at fitness tracking, KMZ at mapping. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.

TCX is Garmin's format, published in 2007. The specification is Training Center XML, and it is worth reading if the file has to outlive the tool that wrote it.

KMZ comes from Keyhole, specified as OGC KML 2.3. Google Earth and QGIS all read it.

TCX to KMZ: sending a route somebody else can open

Are my TCX files uploaded anywhere?

No. This conversion runs entirely inside your browser, so the file never leaves your device. You can confirm it yourself: open the network tab of your browser's developer tools and convert something. You will see the page load, plus the analytics and advertising the site is paid for with — and nothing carrying your file.

How small does a TCX get?

Very. A 7,200-point session measured at about 2.2 MB as TCX came out at roughly 47 KB as KMZ — and most of that reduction is the training data being dropped rather than compression.

Does my coach get the heart-rate data?

No. A KMZ holds a Google Earth document, which has no element for a sensor stream. If the coach needs the numbers, send the TCX itself or a GPX alongside.

What does the recipient need installed?

Google Earth, in a browser or on the desktop, opens a KMZ directly. Most GIS software reads it too. No account, no plugin, and no copy of this converter.

Will they be able to replay the ride?

No. The route is written as a LineString with no timestamps, so Google Earth shows a static line and no time slider.

Why does the line jump in places?

Trackpoints without a GPS fix are dropped, so a tunnel or an underpass becomes a straight segment between the last position before it and the first one after.

Can the recipient edit it?

Only by renaming it to `.zip` and extracting the document inside. If they need to work with the file rather than look at it, send a KML or a GPX instead.

More about these formats