Workoutizer is a simple web application for organizing your workouts and sports activities. It is designed to work locally on any UNIX-like system running Python.

Track your activities to get an overview of your overall training, similar to platforms like strava or garmin connect - but without uploading all your sensitive health data to some 3rd party cloud.


  • Automatic import of Garmin .fit files and .gpx files
  • Automatic naming of activities based on daytime, sport and geo location
  • Render your activity gps data on different OSM maps
  • Plot your activity specific data e.g. heart rate, pace, temperature, cadence and altitude
  • Integrate laps into both plots and maps
  • Connected plots and map via mouse hovering
  • Find sections with highest speed and max altitude gain using sportgems and highlight on map
  • Add untracked activities manually via the GUI
  • Export activities as .gpx files
  • Add as many different sports as you want


Workoutizer is still in a somewhat experimental phase. Things might change a lot from one version to another. However, I'm happy to receive bug reports and feedback.

Getting Started

Install workoutizer using pip

pip install workoutizer

Initialize workoutizer to provide some demo data and run it:

wkz init --demo
wkz run

See the help description of the CLI with wkz --help and subcommands, e.g.: wkz manage --help.

In case you want to run workoutizer on a Raspberry Pi in your local network, follow the Raspberry Pi setup instructions.

Dashboard Sport Page
68747470733a2f2f692e696d6775722e636f6d2f334355434743382e706e67 68747470733a2f2f692e696d6775722e636f6d2f7035466372487a2e706e67
Activity Page 1/2 Activity Page 2/2
68747470733a2f2f692e696d6775722e636f6d2f466e56467a39502e706e67 68747470733a2f2f692e696d6775722e636f6d2f7a70386951636d2e706e67