Cookies de statistiques et de publicité
Nous utilisons des cookies de statistiques et de publicité, tous deux destinés à Google. Si vous refusez, rien ne change visiblement pour vous.Aller à la page de confidentialité
Vous pouvez convertir TCX en CSV gratuitement et sans compte : déposez le fichier ci-dessus et, une ou deux secondes plus tard, le résultat est prêt à télécharger. La conversion se fait dans votre propre navigateur : le fichier n’est donc jamais téléversé. Cela marche sous Windows, macOS et Linux comme sur iPhone et Android, et continue de marcher si vous coupez le réseau.
Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.
Ils sont convertis les uns après les autres et reviennent ensemble dans un ZIP.
TCX en CSV
Training Center XML a été conçu par Garmin pour décrire une séance d’entraînement. Sa structure le dit : une `TrainingCenterDatabase` contient des Activities, chaque Activity contient des Laps, chaque Lap déclare une durée, une distance, un nombre de calories, une fréquence cardiaque moyenne et maximale, et une raison de déclenchement, et ce n’est qu’alors qu’elle contient une Track de points individuels. Le parcours est un flux enregistré parmi plusieurs, et sans doute pas le plus important.
Le CSV produit ici ne reprend que cette dernière partie et rien d’autre. Chaque point de trace qui a une position devient une ligne de latitude, longitude, altitude et heure, dans l’ordre, et toute la couche d’entraînement au-dessus est écartée. Si vous veniez pour un parcours à tracer ou à mesurer, c’est un résultat propre. Si vous veniez pour la séance, la majeure partie de ce que vous vouliez est restée dans le fichier, et le reste de cette page concerne exactement quelles parties.
Un Trackpoint dans un TCX peut porter un `<Time>`, un `<Position>` avec latitude et longitude dans des éléments enfants séparés, un `<AltitudeMeters>`, un `<DistanceMeters>` cumulé, un `<HeartRateBpm>`, un `<Cadence>` et un bloc `<Extensions>`. Quatre d’entre eux sont lus : le temps, les deux moitiés de la position, et l’altitude. Ils deviennent les colonnes `time`, `latitude`, `longitude` et `elevation`, avec une colonne `type` qui dit toujours `track` et une colonne `name` qui porte le sport de l’activité.
L’omission la plus susceptible de surprendre est `<DistanceMeters>`. Il est présent sur la plupart des points de trace écrits par un appareil Garmin, c’est la lecture de l’odomètre à cet instant, et il n’est pas lu — donc le CSV ne contient aucune distance cumulée même si la source en avait une à chaque ligne. La recalculer à partir des coordonnées consécutives donne une réponse légèrement différente, parce que l’appareil mélange les données de roue ou de capteur de pied dans son propre chiffre et qu’une différence de coordonnées ne le peut pas.
La fréquence cardiaque est un enfant direct du Trackpoint, écrit comme `<HeartRateBpm><Value>148</Value></HeartRateBpm>`. La cadence en est un frère. La cadence de course, les watts et la vitesse instantanée sont un niveau plus bas, dans un bloc `<Extensions>` utilisant le namespace d’extension d’activité de Garmin. Tous sont des valeurs par échantillon posées à côté des coordonnées qui, elles, passent.
La raison pour laquelle aucune d’elles n’apparaît tient à ce que ce convertisseur lit chaque format GPS à travers une forme partagée — un point avec une position, une altitude optionnelle et un temps optionnel — et écrit chaque sortie à partir de cette forme. C’est ce qui permet au même code de transformer un TCX en GPX, KML ou tableau sans quatre implémentations séparées, et le prix est que tout ce qui sort de ces quatre valeurs lui est invisible. C’est une vraie limitation et pas un manque temporaire, ce qui explique pourquoi elle est énoncée ici plutôt qu’enterrée dans une note.
Les tours sont aplanies. Les points de trace de chaque tour d’une activité sont concaténés en une série continue de lignes, donc douze répétitions de quatre cents mètres sortent comme un effort ininterrompu de six kilomètres. Rien dans le CSV n’indique où un tour s’est terminé, et aucune colonne n’enregistre à quel tour appartenait une ligne.
Les résumés disparaissent avec eux, et c’est la partie qu’un coach regretterait le plus : `TotalTimeSeconds`, `DistanceMeters`, `MaximumSpeed`, `Calories`, `AverageHeartRateBpm` et `MaximumHeartRateBpm` sont tous déclarés par tour dans la source et aucun n’atteint le tableau. Si la structure par tours est ce que vous analysez, lisez le TCX directement — c’est du XML brut et les éléments Lap sont près du haut de chaque activité, ce qui les rend inhabituellement faciles à extraire avec un court script.
Un Trackpoint sans `<Position>` est écarté, et cela explique presque tous les cas où le CSV a moins de lignes que le fichier n’a de points de trace. Ce n’est pas de la corruption. Une montre échantillonne la fréquence cardiaque une fois par seconde avec ou sans verrouillage satellite, donc une séance qui commence en intérieur, passe sous un pont ou traverse une rue couverte écrit des points de trace parfaitement valides qui portent un temps et une fréquence cardiaque et pas de coordonnées.
Une séance sur tapis roulant ou sur home-trainer est le cas extrême : aucun point de trace n’a de position, donc rien ne peut être écrit et la conversion signale qu’aucune trace ou waypoint n’a été trouvé. Ce message est exact — le fichier ne contient réellement aucune géométrie — et c’est le signal le plus net possible qu’une sortie en forme de parcours n’allait jamais fonctionner pour cette séance.
Une activité TCX n’a pas de nom. Ce qu’elle a est un attribut `Sport` sur l’élément `<Activity>`, et le schéma le restreint à `Running`, `Biking` ou `Other`. Cette valeur devient la colonne `name`, répétée à chaque ligne, parce que c’est le seul identifiant lisible que le format offre.
Le titre que vous voyez dans Garmin Connect ou Strava — « Intermardi », « Trajet retour » — n’est pas du tout dans le TCX ; il appartient à la base de données de la plateforme plutôt qu’à l’export. Donc un dossier de fichiers TCX convertis l’un après l’autre produit des tableaux dont la colonne `name` dit `Running` à répétition, et les distinguer ensuite dépend des noms de fichiers et de la colonne `time` plutôt que de quoi que ce soit dans les données.
L’élément `<Time>` est copié tel quel dans la colonne `time` sans reformatage, parce qu’ISO 8601 est déjà une norme et le réécrire n’imposerait qu’une préférence. Les appareils Garmin écrivent en général en UTC avec un `Z` final, et certains écrivent des secondes fractionnaires, donc `2026-03-14T06:41:07.000Z` arrive avec ses millisecondes intactes.
Cela a deux effets pratiques. Trier par la colonne marche comme du texte brut, puisque ISO 8601 s’ordonne lexicalement, ce qui veut dire qu’un tableau fusionné de plusieurs séances trie correctement même dans un outil qui n’a pas reconnu la colonne comme une date. Et les heures sont en UTC, donc une ligne à 6:41 est un départ à 7:41 en heure d’hiver d’Europe centrale — une différence assez grande pour déplacer une séance matinale dans le jour précédent quand on regroupe par date.
Si l’analyse que vous avez en tête concerne la fréquence cardiaque, la puissance ou la cadence, cette conversion ne vous y mènera pas et aucune quantité de post-traitement ne récupérera des valeurs qui n’ont jamais été écrites. Le TCX lui-même est le chemin le plus court : c’est du XML brut, les éléments sont nommés de manière cohérente, et une douzaine de lignes de Python avec `xml.etree` extraira `HeartRateBpm` et `Time` dans un dataframe avec les coordonnées à côté.
L’autre option honnête est la plateforme qui a produit le fichier. Garmin Connect, Strava et TrainingPeaks exportent tous des données par activité avec les colonnes des capteurs déjà aplaties, et leurs exports incluent des valeurs que le TCX ne porte pas du tout — puissance normalisée, charge d’entraînement, calculs de zones de l’appareil lui-même. Convertir un TCX est le bon mouvement quand on veut le parcours ; c’est le mauvais quand on veut la séance.
`<AltitudeMeters>` est copié dans la colonne elevation exactement comme l’appareil l’a écrit : mètres, pas d’arrondi, pas de correction. Sur une montre avec un altimètre barométrique c’est une lecture de pression étalonnée au début de la séance. Sur une sans, c’est la solution d’altitude satellite, qui est le nombre le plus bruité qu’un GPS produise et qui dérive de dizaines de mètres alors que le récepteur est immobile.
Le chiffre qu’une plateforme d’entraînement vous montre n’est souvent pas ce nombre. La correction d’altitude — aller chercher chaque position dans un modèle de terrain et substituer la hauteur nivelée — est une valeur par défaut courante, et elle produit un profil plus lisse et un total de dénivelé différent. Aucune des deux valeurs n’est fausse ; elles mesurent des choses différentes. Attendez-vous donc à un écart quand vous comparez le tableau converti à l’application, et attendez-vous à ce qu’il soit plus grand un jour de vent ou au passage d’un front, parce que c’est exactement ce à quoi un baromètre non étalonné réagit.
Le XML est analysé et les lignes sont écrites dans votre navigateur. Aucune requête ne transporte le TCX ailleurs, ce que le panneau réseau peut confirmer pendant qu’une conversion tourne, et la page continue de fonctionner avec la connexion coupée une fois qu’elle a chargé.
Cela compte davantage pour les données d’entraînement que l’extension du fichier ne le suggère. Un TCX est un enregistrement minute par minute de l’endroit où quelqu’un était, de la dureté de son effort et de la réponse de son cœur, ce qui est une donnée de santé dans tous les sens qui importent et une donnée de localisation par-dessus. Un CSV converti est la même information sous une forme que n’importe qui peut lire d’un coup d’œil, donc cela vaut la peine de le garder sous le même soin que l’original plutôt que de le traiter comme un fichier de travail dérivé.
| TCX | CSV | |
|---|---|---|
| Nom complet | Training Center XML | Comma-Separated Values |
| Extension de fichier | .tcx | .csv |
| Type de média | application/vnd.garmin.tcx+xml | text/csv |
| Première publication | 2007 | 1972 |
| Publié par | Garmin | — |
| Spécification | Training Center XML | RFC 4180 |
| Licence | Publié, non normalisé | Standard ouvert |
| Situation actuelle | Actuel | Actuel |
| S’ouvre dans un navigateur | Aucun navigateur | Aucun navigateur |
| Envisagé à la place | GPX, FIT | XLSX, JSON, Parquet |
Les logiciels habituels ne se recoupent pas : TCX s’ouvre dans Garmin Connect, Strava et TrainingPeaks, CSV dans Microsoft Excel, LibreOffice Calc et pandas — celui qui reçoit le résultat a donc besoin d’un logiciel de la seconde liste.
Les deux visent des usages différents : TCX le suivi sportif, CSV l’échange entre programmes. Cela mérite d’être pesé avant, car ce qui justifie l’un est souvent ce qui rend l’autre malcommode.
TCX est le format de Garmin, publié en 2007. La spécification est Training Center XML, et elle mérite d’être connue si le fichier doit survivre à l’outil qui l’a écrit.
CSV date de 1972, décrit par RFC 4180. Microsoft Excel, LibreOffice Calc et pandas le lisent.
CSV a été publié en 1972 et TCX en 2007. Le plus ancien est en général le fichier le plus sûr à remettre ; le plus récent fait le même travail en moins d’octets.
Non. Cette conversion se fait entièrement dans votre navigateur : le fichier ne quitte donc pas votre appareil. Vous pouvez le vérifier vous-même — ouvrez l’onglet réseau des outils de développement et convertissez quelque chose. Vous verrez la page elle-même et les requêtes de statistiques et de publicité qui financent ce service, et pas une seule qui transporte votre fichier.
Oui. Pas de compte, pas de filigrane et pas de quota journalier à dépenser : cela tourne sur votre propre machine, vous pouvez donc revenir autant de fois que vous voulez. Le navigateur traite des fichiers jusqu’à 100 Mo, 100 à la fois.
TCX et CSV décrivent le contenu de façons radicalement différentes. La conversion est donc une reconstitution et non une copie : fidèle, mais pas identique octet pour octet. Une ligne par point enregistré. Tout ce que le fichier contenait au-delà de la position, de l’altitude et de l’heure n’entre pas dans un tableau.
Pas pour la conversion : elle se fait dans le navigateur que vous avez déjà ouvert. Pour ouvrir le résultat, il vous faut ensuite le logiciel avec lequel votre appareil affiche habituellement Comma-Separated Values.