Convertir TCX en CSV

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.

  • Où cela s’exécute Dans votre navigateur. Le fichier n’est pas téléversé.
  • Reconstruit CSV ne fonctionne pas comme TCX. Il ne s’agit donc pas de la dégradation progressive d’un codec avec perte : ce que CSV sait exprimer est reproduit fidèlement, et ce qui n’y a pas d’équivalent ne subsiste pas du tout.
  • Limite de taille Jusqu’à 100 Mo par fichier, gratuitement et sans compte.
  • Bon à savoir 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.

Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.

Un TCX est une séance, et le tableau que vous obtenez est un parcours

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.

Les quatre valeurs qui survivent, et les six colonnes qu’elles remplissent

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.

Fréquence cardiaque, cadence et puissance : où elles sont et pourquoi elles restent là

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 frontières de tour et les résumés de tour disparaissent tous les deux

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.

Des lignes disparaissent quand le GPS n’avait pas de fix

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.

L’attribut Sport est la seule étiquette qu’une activité a

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.

Les horodatages passent exactement comme l’appareil les a écrits

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.

Vers quoi se tourner quand les données de capteur sont le sujet

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.

La colonne d’altitude ne correspondra pas au graphique de l’application

`<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.

Les fichiers d’entraînement sont personnels, et rien de tout cela ne quitte l’onglet

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é.

Comment convertir TCX en CSV

  1. Déposez votre fichier TCX sur cette page, ou cliquez pour en choisir un.
  2. Choisissez CSV comme destination. La conversion se fait dans votre navigateur et le fichier n’est pas téléversé.
  3. Téléchargez le fichier CSV terminé.

TCX et CSV : ce qui change

TCX face à CSV
TCXCSV
Nom completTraining Center XMLComma-Separated Values
Extension de fichier.tcx.csv
Type de médiaapplication/vnd.garmin.tcx+xmltext/csv
Première publication20071972
Publié parGarmin
SpécificationTraining Center XMLRFC 4180
LicencePublié, non normaliséStandard ouvert
Situation actuelleActuelActuel
S’ouvre dans un navigateurAucun navigateurAucun navigateur
Envisagé à la placeGPX, FITXLSX, JSON, Parquet

Ouvrir le résultat

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.

À quoi sert chaque format

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.

De TCX à CSV : questions fréquentes

Mon fichier TCX est-il téléversé quelque part ?

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.

Convertir TCX en CSV est-il gratuit ?

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.

Y a-t-il une perte de qualité en convertissant TCX en CSV ?

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.

Dois-je installer quelque chose pour ouvrir un fichier CSV ?

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.

En savoir plus sur ces formats