Skip to content

Convert Garmin to TCX ​

Scope

Converts structured workouts (steps and targets), not recorded activities. See Workouts vs. activities.

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 (in the browser) ​

Open kaiord.com/app, choose your Garmin Connect workout file (TCX is already selected 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 targetswatts—Dropped — 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.