What's in the GPX file
A WorkoutGPX export is a plain GPX 1.1 file: one track per workout, with one segment for each piece Health recorded the route in. Every app that reads GPX opens it; the extras below are in the extensions that Strava, Garmin Connect and Komoot already understand.
Every point
Section titled “Every point”Each track point has its latitude and longitude, its time, and its elevation whenever the GPS reported a valid height. Points are written exactly as Health stored them: nothing is filtered, smoothed or snapped to a road. Hide Start and End drops the points at the ends and leaves the rest untouched.
Heart rate, cadence, power, speed and course
Section titled “Heart rate, cadence, power, speed and course”With Include Sensor Data on in Settings (the default), WorkoutGPX reads the sensor data Health holds for the workout and writes it onto each point:
| In the file | What it is | Comes from |
|---|---|---|
gpxtpx:hr |
heart rate, beats per minute | Health’s heart rate |
gpxtpx:cad |
cadence, revolutions per minute | cycling cadence (iOS 17 and later) |
<power> and gpxpx:PowerInWatts |
power, watts | running power, and cycling power (iOS 17 and later) |
gpxtpx:speed |
speed, meters per second | the GPS |
gpxtpx:course |
heading, degrees | the GPS |
A reading goes on a point when it was taken within 15 seconds of it. Speed and course are written with the sensor data, so a file made with Include Sensor Data off, or of a workout with no heart rate, power or cadence in Health, has positions, heights and times only.
Power is written twice on purpose: the plain <power> element that Strava, Zwift and RideWithGPS
exchange, and Garmin’s PowerExtension, which strict GPX validators accept. A validator may flag the plain
one; the apps read it.
An example point from a run, shortened:
<trkpt lat="38.927473" lon="-77.020161"> <ele>25.6</ele> <time>2012-10-24T23:29:40Z</time> <extensions> <gpxtpx:TrackPointExtension> <gpxtpx:hr>130</gpxtpx:hr> <gpxtpx:speed>2.85</gpxtpx:speed> <gpxtpx:course>87.4</gpxtpx:course> </gpxtpx:TrackPointExtension> </extensions></trkpt>The name and the description
Section titled “The name and the description”The file and its track are named after the kind of workout and its day, “Running - Oct 24, 2012”. The
track’s type is a plain word other apps match (running, walking, hiking, cycling, swimming,
rowing, paddling, alpine_skiing, cross_country_skiing…), and its source names the device and the
app that recorded it, such as “Apple Watch (Watch7,4) via Workout”.
The description sums the workout up as Health has it: distance, duration, active energy, elevation gain, average and maximum heart rate, average power and cadence, and the temperature when the workout recorded the weather, then “Exported from Apple Health by WorkoutGPX.” and what recorded it. The file also links to objectgraph.com/workoutgpx and names WorkoutGPX as its creator.
Units and file names
Section titled “Units and file names”Positions and heights in a GPX file are always in degrees and meters, whatever your units. Use Metric System (km) changes only the description’s distance and gain (kilometers and meters, or miles and feet) and the end of the file’s name:
Running_2012-10-24_19-29-40_mi.gpx
The name is the kind of workout, its start date and time, the units, and _2segments (or more) for a
workout recorded in several pieces.

