Skip to content

Convert FIT to TCX

Turn a Garmin FIT workout into a TCX (Training Center XML) file — the format most training platforms accept for import. Use the free, in-browser Kaiord Editor (no account, no upload), or the CLI and TypeScript SDK. Conversions go through Kaiord's canonical KRD format and stay within round-trip tolerances (time ±1 s, heart rate ±1 bpm, cadence ±1 rpm).

Three ways to convert

1. Editor (drag & drop)

Open kaiord.com/editor, drop your .fit file, choose TCX as the export format, and download workout.tcx.

2. CLI

bash
pnpm add -g @kaiord/cli
kaiord convert -i workout.fit -o workout.tcx

3. SDK

ts
import { fromBinary, toText } from "@kaiord/core";
import { fitReader } from "@kaiord/fit";
import { tcxWriter } from "@kaiord/tcx";
import { readFile, writeFile } from "node:fs/promises";

const buffer = await readFile("workout.fit");
const krd = await fromBinary(new Uint8Array(buffer), fitReader);
const tcx = await toText(krd, tcxWriter);
await writeFile("workout.tcx", tcx);

What survives the conversion

DataFITTCXResult
Step order & namesworkout steps<Step> / <Name>Preserved
Time durationssecondsTime_t secondsPreserved (±1 s)
Distance durationsmetersDistance_t metersPreserved
Heart-rate targetsbpm / zoneHeartRate_t (zone or bpm)Preserved (±1 bpm)
Speed targetsm/sSpeed_tPreserved
Cadence targetsrpmCadence_tPreserved (±1 rpm)
Power targetswatts / % FTPDropped — TCX workouts have no power target
Repeats / intervalsrepeat stepsRepeat_tPreserved
Developer fieldscustom fieldsPreserved under extensions.fit

Gotchas

My power targets disappeared. The TCX workout schema (Garmin Training Center) only defines heart-rate, speed, and cadence targets — there is no power target. If your FIT workout is power-based, convert it to ZWO or Garmin Connect instead, which keep power.

Workouts vs. activities. This page is about structured workouts (the target plan). TCX can also hold recorded activity data; Kaiord reads and writes both, but the field mapping above is for the workout definition.

Which apps accept TCX? TrainingPeaks, Strava, and Garmin Connect all import TCX, which makes it a good interchange format when a platform can't read FIT directly.