Automatically upload workout activities from Wahoo, MyWhoosh, and TrainerDay to Garmin Connect.
Version 1.0.5 | Windows Desktop Application (Nuitka onefile build)
This app automatically syncs your workout files to Garmin Connect so your activities appear in your Garmin dashboard without manual uploads.
- Wahoo via Dropbox (.FIT files)
- MyWhoosh from its local cache (.FIT files)
- TrainerDay via Dropbox (.TCX / .FIT files)
Key Features:
- β Automatic background syncing
- β Starts with Windows (optional)
- β Secure password encryption
- β Validates credentials before saving
- β Detailed activity logging
- β System tray support
The app handles the two platforms differently based on how they store files:
- Wahoo (Persistent): If you connect a Dropbox account that has a history of Wahoo rides, the app will detect those files and upload your history to Garmin Connect automatically.
- MyWhoosh (Volatile): MyWhoosh only stores the most recent activity in its local cache and overwrites it when you start a new session.
- The Catch: Your PC doesn't always have to be on for the sync to work eventually, but if you record multiple MyWhoosh activities while the app is closed (or the PC is off), the uploader will only "see" and sync the very last one when it finally boots up.
- Recommendation: Use the "Start with Windows" option so the app is always ready to catch MyWhoosh files before they are lost.
I built this originally as a personal Python script to solve my own manual upload frustrations. Because this app handles Garmin credentials, transparency is a priority:
- Local Only: Your credentials are never sent to any server except Garminβs official Garmin Connect endpoint.
- Windows Credential Manager: Your Garmin password is stored primarily in Windows Credential Manager via the
keyringlibrary. You can remove it at any time via the Windows Credential Manager control panel. - Config-file fallback (for early boot only): A simple Base64-encoded copy of your password is kept in
uploader_config.jsonas a fallback if Credential Manager is not available at boot. This is not meant as strong encryption, just enough to avoid plain text in the config file. - No custom crypto: There is no XOR or βhomeβgrownβ encryption in the current versions; standard libraries are used instead.
- No registry writes: Auto-start is handled only via a Startup-folder shortcut (
GarminUploader.lnk), never theHKCU\...\Runregistry key. - Open Source: The full source code is available here on GitHub for anyone to audit or rebuild.
Good news! The app automatically detects and updates Windows auto-start shortcuts when you first run a new version. Simply:
- Download the new
GarminUploader-v1.0.x.exe - Place it in the same folder as your old version
- Run it once - if you had "Start with Windows" enabled, the app will detect the old shortcut and offer to update it
- Your existing settings and logs are preserved automatically (no reconfiguration needed!)
Two download options are available:
| Option | File | Best for |
|---|---|---|
| Folder build (recommended) | GarminUploader-v1.0.5-folder.zip |
Most users β less likely to trigger Windows Defender |
| Single-file build | GarminUploader-v1.0.5.exe |
Advanced users who prefer a single executable |
- Download
GarminUploader-v1.0.5-folder.zipfrom Releases - Extract the ZIP to a folder (e.g.,
C:\GarminUploader\or your Desktop) - Run
GarminUploader.exefrom the extracted folder
- Download
GarminUploader-v1.0.5.exefrom Releases - Place it anywhere you like (Desktop, Documents, etc.)
- Double-click to run
Note: The single-file build is a packed Nuitka executable which may trigger Windows Defender ML heuristics. If Defender blocks or quarantines it, use the folder build instead. See Windows Defender / Antivirus Blocks the App for details.
- Enter your Garmin Connect email
- Enter your Garmin Connect password
- Click "Save Settings" button
Important: The app will test your login and show β or β. Your password is encrypted in the settings file.
You need at least one folder configured (Wahoo, MyWhoosh, or TrainerDay):
-
Click "π Help" button next to Wahoo Folder
-
Follow the instructions to:
- Create free Dropbox account
- Connect Wahoo ELEMNT to Dropbox
- Install Dropbox on PC
-
Click "Browse" and select your Dropbox Wahoo folder:
C:\Users\YourName\Dropbox\Apps\WahooFitness
-
Click "π Help" button next to MyWhoosh Folder
-
Follow the instructions to find your MyWhoosh cache folder
-
Click "Browse" and navigate to:
C:\Users\YourName\AppData\Local\MyWhoosh\MyWhoosh\Cache\Cache_Data
Tip: Press Win + R, paste %LOCALAPPDATA%\MyWhoosh\MyWhoosh\Cache\Cache_Data, press Enter
-
Click "π Help" button next to TrainerDay Folder
-
Follow the instructions to:
- Open https://app.trainerday.com and log in
- Click your user icon β Connections and connect TrainerDay to Dropbox / enable activity sync
-
After the first sync, Dropbox will contain a TrainerDay folder, for example:
C:\Users\YourName\Dropbox\TrainerDay C:\Users\YourName\Dropbox\Apps\TrainerDay -
Click "Browse" and select that TrainerDay folder.
Default is 5 minutes. Adjust if you want faster/slower checking.
Click "Save Settings" - this will:
- β Validate your Garmin credentials
- β Encrypt your password
- β Save all settings
- Click "Sync Now" button
- App will upload any new .FIT files immediately
- Check status at bottom of window
For set-and-forget automation:
- β Check "Start with Windows"
- β Check "Start Auto-Sync" checkbox
- Click "Start Auto-Sync" button
What happens:
- App checks for new files every 5 minutes (or your interval)
- Shows status updates at bottom
- Can minimize to system tray (bottom-right corner)
To minimize to tray:
- Click the [X] close button
- If auto-sync is running, you'll be asked if you want to minimize to tray
- Click YES to keep it running in background
- Look for Garmin icon in system tray
To restore from tray:
- Click the Garmin icon in system tray
- Select "Show"
Make it fully automatic:
- β Check "Start with Windows"
- β Ensure "Start Auto-Sync" is also checked (optional but recommended)
- Click "Save Settings"
- Restart your computer to test
What happens on boot:
- App starts automatically (minimized to tray)
- Begins auto-sync if you have credentials and folders configured
- Runs silently in background
- Check system tray for Garmin icon
To disable auto-start:
- Uncheck "Start with Windows"
- Click "Save Settings"
The app creates files in the same folder as the EXE:
uploader_config.jsonβ Your settings (password is encrypted)garmin_uploader.logβ Main activity log with timestamps (auto-rotates at 10MB, keeps 3 backups)garmin_uploads.logβ Dedicated uploads-only log that records successful uploads with daily separators (easier to review your upload history).
View the logs:
- Click "βΉοΈ About" button
- Click "π View Log" for the main log
- Click "π View Uploads Log" for the uploads-only log (read-only viewer)
What's logged (main log):
- App startup/shutdown
- Garmin login attempts (success/failure)
- File uploads (filename, timestamp)
- Errors and warnings with visual icons (β
success, β error,
β οΈ warning) - Auto-sync start/stop
- Settings changes
Log retention:
garmin_uploader.logautomatically rotates when it reaches 10MB- Keeps 3 backup files (~3 months of history)
garmin_uploads.logis a single running file with date markers so you can see what was uploaded each day
- Double-check email/password at garmin.com
- Click "Save Settings" again to re-test
- Check log file for detailed error
- You must configure at least ONE folder (Wahoo, MyWhoosh, or TrainerDay)
- Click Browse to select folder
- Click Help button for setup instructions
- Press
Win + R, type:shell:startup, press Enter - Look for
GarminUploader.lnkshortcut - If missing: Re-enable "Start with Windows" in app
- If present: Check log file for startup errors
- Make sure EXE location hasn't moved
- Click "Sync Now" to test immediately
- Check if .FIT files exist in your folders
- View log file for upload attempts
- Verify Garmin credentials are valid
- Check folder paths are correct
- This is normal - means Garmin already has this activity
- File is moved to "uploaded" subfolder anyway
- No action needed
- Look in bottom-right corner of Windows taskbar
- Click small ^ arrow to show hidden icons
- Garmin logo should appear there
Because this app is a small, niche tool that logs in to a website, stores credentials, and can auto-start with Windows, some antivirus programs (especially Windows Defender's ML-based heuristics) may incorrectly flag it as suspicious.
Why this happens:
- The app is not code-signed (requires an expensive certificate)
- It combines network activity + credential storage + auto-start β patterns that malware also uses
- Packed single-file executables trip more heuristics than normal installers
What you can do:
-
Try the folder build: Download
GarminUploader-v1.0.5-folder.zipinstead of the single.exe. Unpacked builds are less likely to trigger false positives. -
Add an exception: If you trust the source, add the app folder to Windows Defender's exclusion list:
- Open Windows Security β Virus & threat protection β Manage settings
- Scroll to Exclusions β Add or remove exclusions
- Add the folder containing
GarminUploader.exe
-
Report the false positive to Microsoft:
- Go to: https://www.microsoft.com/en-us/wdsi/filesubmission
- Select Home user β Incorrectly detected as malware
- Upload the
.exefile and submit
-
Build from source: If you prefer not to trust pre-built binaries:
git clone https://github.com/Inc21/Wahoo-and-MyWhoos-to-Garmin-Conect-Auto-Uploader.git cd Wahoo-and-MyWhoos-to-Garmin-Conect-Auto-Uploader pip install -r requirements.txt python uploader_gui.py
Verify authenticity: Compare the SHA-256 hash of your download against CHECKSUMS.txt in the release.
- Uncheck "Start with Windows" in app
- Click "Save Settings"
- Close the app
- Delete
GarminUploader.exe - Delete
uploader_config.jsonandgarmin_uploader.log(optional)
Developer: inc21
Buy me a coffee: β Support
MIT License