Skip to content

Convert Garmin to TCX

Take a Garmin Connect workout (GCN JSON) into a TCX (Training Center XML) file so a plan from Garmin can import into another training platform. 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 Garmin Connect workout file, choose TCX as the export format, and download workout.tcx.

2. CLI

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

3. SDK

ts
import { fromText, toText } from "@kaiord/core";
import { garminReader } from "@kaiord/garmin";
import { tcxWriter } from "@kaiord/tcx";
import { readFile, writeFile } from "node:fs/promises";

const gcn = await readFile("workout.gcn", "utf-8");
const krd = await fromText(gcn, garminReader);
const tcx = await toText(krd, tcxWriter);
await writeFile("workout.tcx", tcx);

What survives the conversion

DataGarmin Connect (GCN)TCXResult
Step order & namesworkout steps<Step> / <Name>Preserved
Time durationstime durationsTime_t secondsPreserved (±1 s)
Distance durationsdistance durationsDistance_t metersPreserved
Heart-rate targetsbpmHeartRate_tPreserved (±1 bpm)
Speed / pace targetsm/sSpeed_tPreserved
Cadence targetsrpmCadence_tPreserved (±1 rpm)
Power targetswattsDropped — TCX workouts have no power target
Repeats / intervalsrepeat blocksRepeat_tPreserved

Gotchas

My power targets disappeared. The TCX workout schema covers heart rate, speed, and cadence — there is no power target. Garmin Connect stores power in watts, so any power targets are dropped in the TCX output. To keep power, convert to FIT instead, which keeps watt targets.

Where do I get the .gcn file? GCN is Garmin Connect's workout JSON. Fetch it through the Garmin Connect API with @kaiord/garmin-connect (e.g. kaiord garmin list) or the Editor's Garmin integration.

Calorie-based durations. Garmin Connect can express a step duration in calories, but TCX supports only time- and distance-based durations. A calorie-duration step therefore has no direct TCX equivalent — prefer FIT if your workout relies on calorie goals.