Cookies für Statistik und Werbung
Wir setzen Cookies für Statistik und Werbung ein, beides geht an Google. Wenn du ablehnst, ändert sich für dich sichtbar nichts.Zur Datenschutzseite
TCX kannst du hier kostenlos und ohne Konto in CSV umwandeln: Datei oben ablegen, und ein, zwei Sekunden später steht das Ergebnis zum Herunterladen bereit. Die Umwandlung läuft in deinem eigenen Browser, die Datei wird also nie hochgeladen — das klappt unter Windows, macOS und Linux ebenso wie auf iPhone und Android, und es funktioniert selbst dann noch, wenn du das Netz abschaltest.
Bis zu 100 Dateien auf einmal. Gemischte Formate sind kein Problem.
Sie werden nacheinander umgewandelt und kommen zusammen als ZIP zurück.
TCX in CSV
Training Center XML wurde von Garmin entworfen, um eine Trainingseinheit zu beschreiben, und das zeigt sich am Aufbau: Eine TrainingCenterDatabase enthält Activities, jede Activity enthält Laps, jede Lap trägt eine Dauer, eine Distanz, einen Kalorienwert, einen mittleren und maximalen Puls und einen Auslösegrund — und erst danach folgt ein Track aus einzelnen Punkten. Die Strecke ist nur einer von mehreren aufgezeichneten Datenströmen und vermutlich nicht einmal der wichtigste.
Die hier erzeugte CSV-Datei übernimmt genau diesen letzten Teil und sonst nichts. Jeder Trackpoint mit Position wird zu einer Zeile aus Breite, Länge, Höhe und Zeit, in der Reihenfolge der Aufzeichnung, und die gesamte Trainingsebene darüber fällt weg. Wer eine Strecke zum Plotten oder Vermessen wollte, bekommt genau das. Wer das Training wollte, findet den größten Teil davon nicht in dieser Tabelle wieder.
Eine TCX-Datei ist eine minutengenaue Aufzeichnung, wo jemand war, wie stark der Puls dabei arbeitete und wie hart trainiert wurde. Nach Artikel 9 der DSGVO gelten Gesundheitsdaten als besondere Kategorie personenbezogener Daten, die einen strengeren Schutz genießen als eine gewöhnliche Adresse — und ein TCX aus einer Pulsuhr ist beides zugleich: Gesundheitsdatum und Standortdatum in einer Datei.
Genau deshalb läuft diese Umwandlung ausschließlich im Browser: Das XML wird geparst und die Zeilen werden auf dem eigenen Gerät geschrieben, ohne dass eine Anfrage die Trainingsdatei irgendwohin trägt. Für einen Verein oder eine Trainerin, die Athletendaten ernst nehmen, ist das kein Komfort, sondern der Unterschied zwischen einem Werkzeug, das keine Auftragsverarbeitung braucht, und einem, bei dem erst geklärt werden müsste, wer die Datei sonst noch sieht.
Ein Trackpoint in einer TCX-Datei kann ein Time, ein Position mit Breite und Länge in eigenen Kindelementen, ein AltitudeMeters, ein laufendes DistanceMeters, ein HeartRateBpm, eine Cadence und einen Extensions-Block tragen. Gelesen werden vier davon: Zeit, die beiden Hälften der Position und die Höhe. Sie werden zu den Spalten time, latitude, longitude und elevation, dazu eine type-Spalte, die immer track sagt, und eine name-Spalte mit der Sportart der Activity.
Die überraschendste Auslassung ist DistanceMeters. Fast jeder Trackpoint eines Garmin-Geräts trägt diesen Wert, es ist der laufende Kilometerstand zu diesem Moment, und er wird nicht gelesen — die CSV-Datei enthält also keine kumulierte Distanz, obwohl die Quelle sie in jeder Zeile hatte. Sie aus aufeinanderfolgenden Koordinaten neu zu berechnen ergibt ein leicht anderes Ergebnis, weil das Gerät zusätzlich Rad- oder Fußsensordaten in seine eigene Zahl einfließen lässt.
Der Puls ist ein direktes Kindelement des Trackpoints, geschrieben als HeartRateBpm mit einem Value darin. Die Trittfrequenz steht daneben. Laufkadenz, Watt und Momentangeschwindigkeit liegen eine Ebene tiefer, in einem Extensions-Block mit Garmins eigenem Namensraum. Alles davon sind Werte pro Messpunkt, direkt neben den Koordinaten, die durchkommen.
Der Grund, warum keiner davon erscheint: Dieser Konverter liest jedes GPS-Format über dieselbe gemeinsame Form ein — eine Position mit optionaler Höhe und optionaler Zeit — und schreibt jedes Zielformat aus genau dieser Form heraus. Das erlaubt demselben Code, aus einem TCX ein GPX, ein KML oder eine Tabelle zu machen, ohne vier getrennte Implementierungen, und der Preis ist, dass alles außerhalb dieser vier Werte für ihn unsichtbar bleibt. Das ist eine echte, dauerhafte Grenze, keine vorübergehende — deshalb steht sie hier statt in einer versteckten Fußnote.
Runden werden platt gemacht. Die Trackpoints jeder Lap einer Activity werden zu einem durchgehenden Lauf aus Zeilen zusammengefügt, sodass zwölf Vierhundertmeter-Intervalle wie ein ununterbrochener Sechs-Kilometer-Dauerlauf aussehen. Nichts in der CSV-Datei markiert, wo eine Runde endete, und keine Spalte hält fest, zu welcher Runde eine Zeile gehörte.
Die Zusammenfassungen gehen mit, und das ist der Teil, den eine Trainerin am ehesten vermisst: TotalTimeSeconds, DistanceMeters, MaximumSpeed, Calories, AverageHeartRateBpm und MaximumHeartRateBpm sind in der Quelle pro Runde angegeben, keins davon erreicht die Tabelle. Wer Rundenstruktur analysieren will, liest das TCX direkt — es ist reines XML, und die Lap-Elemente stehen weit oben in jeder Activity, was sie mit einem kurzen Skript ungewöhnlich leicht herauszuziehen macht.
Ein Trackpoint ohne Position wird verworfen, und das erklärt fast jeden Fall, in dem die CSV-Datei weniger Zeilen hat als die TCX-Datei Trackpoints. Das ist keine Beschädigung. Eine Uhr misst den Puls einmal pro Sekunde unabhängig vom Satellitenempfang, also schreibt eine Einheit, die in einem Gebäude beginnt, unter einer Brücke hindurchläuft oder durch eine überdachte Straße führt, vollkommen gültige Trackpoints mit Zeit und Puls und ohne Koordinaten.
Eine Einheit auf dem Laufband oder Rollentrainer ist der Extremfall: Jeder Trackpoint hat keine Position, also lässt sich nichts schreiben, und die Umwandlung meldet, dass keine Strecke oder kein Wegpunkt gefunden wurde. Diese Meldung ist zutreffend — die Datei enthält tatsächlich keine Geometrie —, und sie ist das klarste Signal, dass eine streckenförmige Ausgabe für dieses Training nie funktionieren konnte.
Eine TCX-Activity hat keinen Namen. Was sie hat, ist ein Sport-Attribut am Activity-Element, und das Schema begrenzt es auf Running, Biking oder Other. Dieser Wert wird zur name-Spalte, wiederholt in jeder Zeile, weil es der einzige lesbare Bezeichner ist, den das Format hergibt.
Der Titel, den man in Garmin Connect oder Strava sieht — „Dienstagsintervalle", „Arbeitsweg" — steht gar nicht in der TCX-Datei; er gehört zur Datenbank der Plattform, nicht zum Export. Ein Ordner mit mehreren nacheinander konvertierten TCX-Dateien liefert also Tabellen, deren name-Spalte immer wieder Running sagt, und das Unterscheiden hinterher hängt vom Dateinamen und der time-Spalte ab, nicht vom Inhalt der Daten selbst.
Das Time-Element wird ohne Umformatierung wörtlich in die time-Spalte übernommen, weil ISO 8601 bereits ein Standard ist und ein Umschreiben nur eine Präferenz durchsetzen würde. Garmin-Geräte schreiben üblicherweise UTC mit angehängtem Z, manche mit Sekundenbruchteilen, sodass 2026-03-14T06:41:07.000Z mit den Millisekunden ankommt.
Das hat zwei praktische Folgen. Nach dieser Spalte zu sortieren funktioniert als reiner Text, weil ISO 8601 lexikografisch sortiert — eine zusammengeführte Tabelle mehrerer Einheiten sortiert also selbst in einem Werkzeug korrekt, das die Spalte nicht als Datum erkannt hat. Und die Zeiten stehen in UTC, eine Zeile um 6:41 Uhr ist im mitteleuropäischen Winter also 7:41 Uhr Ortszeit — ein Unterschied groß genug, um ein frühes Training beim Gruppieren nach Datum in den Vortag zu verschieben.
Geht es um Puls, Leistung oder Trittfrequenz, führt diese Umwandlung nicht dorthin, und keine nachträgliche Bearbeitung holt Werte zurück, die nie geschrieben wurden. Die TCX-Datei selbst ist der kürzeste Weg: reines XML, konsistent benannte Elemente, und ein paar Zeilen Python mit xml.etree ziehen HeartRateBpm und Time zusammen mit den Koordinaten in eine Tabelle.
Die andere ehrliche Alternative ist die Plattform, die den Export erzeugt hat. Garmin Connect, Strava und TrainingPeaks exportieren aktivitätsbezogene Daten mit bereits abgeflachten Sensorspalten, und ihre Exporte enthalten Werte, die die TCX-Datei gar nicht hat — normalisierte Leistung, Trainingsbelastung, die eigenen Zonenberechnungen des Geräts. Eine TCX-Datei zu konvertieren ist die richtige Wahl für die Strecke, die falsche für das Training.
AltitudeMeters wird genau so in die elevation-Spalte übernommen, wie das Gerät es geschrieben hat: Meter, ohne Rundung, ohne Korrektur. Bei einer Uhr mit barometrischem Höhenmesser ist das ein Luftdruckwert, kalibriert zu Beginn der Einheit. Ohne einen solchen Sensor ist es die Satellitenhöhenlösung — die verrauschteste Zahl, die ein GPS liefert, und sie driftet um Dutzende Meter, während das Gerät stillsteht.
Der Wert, den eine Trainingsplattform anzeigt, ist häufig nicht diese Zahl. Höhenkorrektur — jede Position in einem Geländemodell nachzuschlagen und die vermessene Höhe einzusetzen — ist ein üblicher Standard und ergibt ein glatteres Profil und eine andere Gesamtsumme an Höhenmetern. Keiner der beiden Werte ist falsch, sie messen nur Verschiedenes — eine Abweichung gegenüber der App ist deshalb zu erwarten, und sie fällt an einem windigen Tag oder bei durchziehendem Wetter größer aus, weil genau darauf ein unkalibrierter Luftdrucksensor reagiert.
Enthält eine TCX-Datei mehrere Activities — ein Trainingslager mit Laufen am Morgen und Radfahren am Nachmittag, in einer gemeinsamen Exportdatei zusammengefasst —, wird jede zu einem eigenen, ununterbrochenen Zeilenblock, unterschieden allein durch die name-Spalte. Die Reihenfolge in der CSV-Datei folgt der Reihenfolge in der Quelle, nicht etwa dem Zeitstempel.
Für eine Trainerin, die mehrere Athletinnen betreut, ist das der Grund, warum sich eine Umwandlung pro Athletin lohnt statt einer gemeinsamen Sammeldatei: Sobald mehrere TCX-Exporte zu einer einzigen CSV-Datei zusammengeführt werden, verschwindet die Information, welche Zeile zu welchem Gerät oder welcher Person gehörte, komplett — dafür bräuchte es eine zusätzliche Spalte, die diese Umwandlung nicht anlegt.
Das XML wird geparst, die Zeilen werden geschrieben — beides im Browser. Keine Anfrage trägt die TCX-Datei irgendwohin, was sich im Netzwerk-Panel während einer Umwandlung nachvollziehen lässt, und die Seite funktioniert nach dem Laden weiter, selbst wenn die Verbindung getrennt wird.
Das zählt bei Trainingsdaten mehr, als die Dateiendung vermuten lässt. Eine TCX-Datei ist eine minutengenaue Aufzeichnung, wo jemand war und wie hart trainiert wurde — Gesundheits- und Standortdaten in einem. Eine konvertierte CSV-Datei ist dieselbe Information in einer Form, die jeder auf einen Blick lesen kann, und sollte deshalb mit derselben Sorgfalt behandelt werden wie das Original, nicht als beiläufige Nebendatei.
| TCX | CSV | |
|---|---|---|
| Vollständiger Name | Training Center XML | Comma-Separated Values |
| Dateiendung | .tcx | .csv |
| Medientyp | application/vnd.garmin.tcx+xml | text/csv |
| Erstmals veröffentlicht | 2007 | 1972 |
| Herausgegeben von | Garmin | — |
| Spezifikation | Training Center XML | RFC 4180 |
| Lizenzlage | Veröffentlicht, nicht standardisiert | Offener Standard |
| Heutiger Stand | Aktuell | Aktuell |
| Öffnet im Browser | Kein Browser | Kein Browser |
| Stattdessen erwogen | GPX, FIT | XLSX, JSON, Parquet |
Die üblichen Programme überschneiden sich nicht: TCX öffnest du in Garmin Connect, Strava und TrainingPeaks, CSV in Microsoft Excel, LibreOffice Calc und pandas — wer das Ergebnis bekommt, braucht also eines aus der zweiten Reihe.
Die beiden zielen auf verschiedene Arbeit: TCX auf die Sportaufzeichnung, CSV auf den Austausch zwischen Programmen. Das lohnt sich vorher abzuwägen — der Grund, aus dem es das eine gibt, ist meist der Grund, aus dem das andere unpraktisch ist.
TCX stammt von Garmin und wurde 2007 veröffentlicht. Festgehalten ist das in Training Center XML — lohnt sich zu kennen, wenn die Datei das Programm überleben soll, das sie geschrieben hat.
CSV stammt aus 1972, festgehalten in RFC 4180. Microsoft Excel, LibreOffice Calc und pandas lesen das Format.
CSV wurde 1972 veröffentlicht, TCX 2007. Das ältere ist in der Regel die sicherere Datei zum Weitergeben, das jüngere erledigt dieselbe Aufgabe mit weniger Bytes.
Nein. Diese Umwandlung läuft vollständig in deinem Browser, die Datei verlässt dein Gerät also nicht. Du kannst das selbst nachprüfen: Öffne den Netzwerk-Tab der Entwicklerwerkzeuge und wandle etwas um. Zu sehen sind die Seite selbst und die Statistik- und Werbeanfragen, mit denen dieser Dienst bezahlt wird — und keine einzige, die deine Datei trägt.
Ja. Kein Konto, kein Wasserzeichen und kein Tageskontingent, das sich verbraucht — es läuft auf deinem eigenen Rechner, du darfst also so oft wiederkommen, wie du willst. Dateien bis 100 MB verarbeitet der Browser, 100 auf einmal.
TCX und CSV beschreiben Inhalte auf grundverschiedene Weise. Die Umwandlung ist deshalb ein Nachbau und keine Kopie: originalgetreu, aber nicht Byte für Byte dasselbe. Eine Zeile je aufgezeichnetem Punkt. Alles, was die Datei über Position, Höhe und Zeit hinaus enthielt, steht in einer Tabelle nicht mehr.
Für die Umwandlung selbst nicht — sie läuft in dem Browser, den du ohnehin offen hast. Zum Öffnen brauchst du danach das Programm, das auf deinem Gerät üblicherweise Comma-Separated Values anzeigt.