Track My Indoor Workout's Mission: improve people's health by preventing fitness machines from becoming laundry drying racks

Track My Indoor Workout is a free and open source application to record stationary workouts of smart fitness machines via Bluetooth Low Energy protocol. Workouts can have GPS routes - generated based on speed - and can be uploaded to SUUNTO, Strava, Training Peaks, Under Armour (meaning MapMyFitness or MapMyRun), or can be downloaded as FIT, TCX, CSV, or JSON files for analysis or ingestion to other fitness portals.

KayakPro, SwimFast, SpeedStroke Pro kayak, canoe, and swim ergometer support

via Genesis Port smart console

SUUNTO integration

Upload workouts to Sports Tracker

Strava integration

Upload workouts to Strava

Training Peaks integration

Upload workouts to Training Peaks

Under Armour integration

Upload workouts to MapMyFitness or MapMyRun


FIT and TCX download

Download workouts in FIT, TCX, CSV, or JSON formats


Supporting Bluetooth Fitness Machines

BLE FTMS Indoor Bikes, Treadmills and Rowers (kayaking, canoeing, rowing, and swimming)


This is a hobby project.

  • Generate GPS track based on the speed readings, so you can participate in challenges requiring GPS data.
  • Upload activities to Strava
  • Upload activities to SUUNTO (Sports Tracker fitness portal)
  • Upload activities to Under Armour (MapMyFitness or MapMyRun fitness portals)
  • Upload activities to Training Peaks
  • Downloading activities in FIT or TCX format
  • KayakPro, SwimFast, and SpeedStroke Pro support via Genesis Port Smart Console
  • Handle multi-sport devices, for example KayakPro's Genesis Port could cover kayaking, canoeing, rowing, or swimming activity. Sport can be picked per activity.
  • Ability to pair heart rate monitors directly to the app (especially useful if the fitness machine's console doesn't have heart rate monitor capability)
  • Split screen support (landscape mode is strictly for that purpose for now)
  • Target Heart rate range support: configurable by explicit heart rate lower + upper values or lower + upper zones indexes. Visual warning if you are in-range, over, or under, and also audio warning is possible (one time or periodic) from a selection of sound effects
  • Display zone index besides measurements, optional coloring of the measurement row based on zones
  • Personal leaderboard: comparison of current effort with previous effort (based on past average speeds)
  • Pacelight: speed coloring with blue or green based on behind or ahead positions
  • Display leaderboard ranking below the speed reading and also optionally on the track
  • Tune the calorie count by providing the expected calories vs the measured
  • Tune power reading based on percentage adjustment for miscalibrated devices. Power reading tune may affect other measures if they are calculated based on power (for example calories or speed in some cases)
  • Expand power tune adjustments to speed or calorie measurements (even in case they are not directly calculated from power)
  • Configurable intermittent heart rate data gap handling: repeating last known value, mark as zeros or record nulls
  • Limit maximum heart rate: configurable threshold and how the exceed events should be handled (keep it at the threshold, zero it out, or nullify)
  • Ability of calculating calories based on heart rate and athlete age, weight, and gender. Optional extra VO2max value could make the equation even more precise.
  • Dark / light mode support
  • Suporting BLE FTMS standard Spin-Down (calibration) procedure sequence, tested with KayakPro
Bugs or Missing Features
Please report any application bugs or feature request by email or directly to the application's GitHub repository if you have a GitHub account. (For issues of this website you can use this GitHub repository).