Modify your Garmin activity files to simulate different performance levels. Change activity speed, adjust timestamps, and re-import into Garmin Connect or Strava.
Disclaimer: This tool is for testing, training simulation, and educational purposes only. Do not use to artificially boost your public activity records on Strava or Garmin Connect.
- β GPX File Support - Adjust timestamps to simulate faster/slower activities
- β TCX File Support - Full support including cadence adjustments
- β Speed Multiplier - Precise control over activity speed changes
- β Detailed Output - View before/after duration and speed changes
- β Error Handling - Graceful handling of missing or invalid files
- β Easy Integration - Re-import modified files into Garmin Connect or your device
# Clone the repository
git clone https://github.com/snmslavk/strava-cheater.git
cd strava-cheater
# No dependencies required! The script uses only Python standard library.
# Tested with Python 3.7+# Increase speed by 10% (activity completes 10% faster)
python modify_activity.py activity.gpx --speed 1.1
# Decrease speed by 20% (activity takes 20% longer)
python modify_activity.py activity.tcx --speed 0.8
# Save to custom output file
python modify_activity.py activity.gpx --speed 1.15 --output my_modified_activity.gpx- Parses all trackpoints from the GPX file
- Calculates the original activity duration
- Computes new duration based on speed multiplier:
new_duration = original_duration / speed_multiplier - Adjusts all trackpoint timestamps proportionally
- Saves the modified file
- Parses all trackpoints from the TCX file
- Adjusts timestamps (same as GPX)
- Bonus: Proportionally adjusts cadence values to simulate faster/slower movement
- Saves the modified file with all metrics updated
π Processing GPX file...
π Speed multiplier: 1.1x
β
GPX file modified successfully!
π Original file: my_run.gpx
π Modified file: my_run_modified.gpx
β±οΈ Duration changes:
Original: 00:30:45
Modified: 00:27:54
Time saved: 00:02:51
π Speed multiplier: 1.10x
π Effective speed change: +10.0%
π Done! You can now import 'my_run_modified.gpx' into Garmin Connect or your device.
| Multiplier | Effect | Use Case |
|---|---|---|
| 0.8 | 20% slower | Simulate easier pace |
| 0.9 | 10% slower | Simulate recovery run |
| 1.0 | No change | Keep original |
| 1.1 | 10% faster | Simulate faster pace |
| 1.2 | 20% faster | Simulate hard effort |
| 1.5 | 50% faster | Simulate sprint |
- Connect your Garmin device to your computer
- Navigate to:
Garmin/Activities/ - Copy the
.fitfile to your computer - Convert
.fitto.gpxor.tcxusing:
- Go to Garmin Connect
- Find your activity
- Click the download icon (β¬οΈ)
- Select "GPX" or "TCX" format
- Save the file
- Go to your activity on Strava
- Click "Export this activity"
- Choose "GPX" format
- Save the file
Process multiple files:
for file in *.gpx; do
python modify_activity.py "$file" --speed 1.1
done# First increase speed by 10%
python modify_activity.py activity.gpx --speed 1.1 --output activity_v1.gpx
# Then increase by another 5%
python modify_activity.py activity_v1.gpx --speed 1.05 --output activity_v2.gpxSince TCX files store cadence, modifications will adjust it proportionally:
- Speed 1.2x: Cadence increases by 20%
- Speed 0.9x: Cadence decreases by 10%
- Go to Garmin Connect
- Click "Import Activity" button
- Select your modified
.gpxor.tcxfile - The activity will appear in your feed with updated metrics
- Convert
.gpx/.tcxback to.fitusing BaseCamp or converter tool - Connect device to computer
- Copy file to
Garmin/Activities/ - Sync with Garmin Connect
- Go to Strava
- Click the "+" button β "Upload Activity"
- Select your modified
.gpxfile - Choose activity type and details
- Upload
- GPX: GPS Exchange Format (XML-based)
- TCX: Garmin Training Center XML format
The script applies proportional time adjustments:
for each trackpoint:
proportion = (trackpoint_time - start_time) / total_duration
new_time = current_time - (time_adjustment * proportion)
This ensures smooth, realistic time distribution throughout the activity.
β Modified:
- Trackpoint timestamps
- Activity duration
- Derived metrics (speed, average pace, etc. - calculated by Garmin/Strava)
- Cadence values (TCX only)
β Not Modified:
- GPS coordinates
- Elevation data
- Heart rate data
- Temperature
- Other sensors
- Your GPX file may be corrupted or empty
- Try exporting the activity again from Garmin Connect or Strava
- The GPX/TCX file is missing timestamps
- This typically means it's an unsupported format variant
- Try converting with official Garmin tools
- The file structure might have been corrupted
- Verify the file can be opened with a text editor (should see XML)
- Try exporting from the device again and re-modifying
- Remember: multiplier is inverted for time
- 1.1x speed multiplier = activity takes 1/1.1 = ~91% of original time
- Duration decreases, but speed multiplier increases
# Original: 10 km in 60 minutes (10:00/km pace)
python modify_activity.py training_run.gpx --speed 1.25
# Result: 10 km in 48 minutes (4:48/km pace)# Original: 5 km in 30 minutes (6:00/km pace)
python modify_activity.py hard_run.gpx --speed 0.85
# Result: 5 km in 35 minutes (7:03/km pace)# Create multiple scenarios
python modify_activity.py my_run.gpx --speed 0.9 --output scenario_slower.gpx
python modify_activity.py my_run.gpx --speed 1.0 --output scenario_original.gpx
python modify_activity.py my_run.gpx --speed 1.1 --output scenario_faster.gpx
# Compare all three by importing to Garmin Connect- Ethical Use Only - Use for testing, training simulation, and analysis
- Don't Cheat Public Records - Artificially boosting public activities is against Strava/Garmin terms
- Backup Original - Keep your original activity file as backup
- Device Sync - Re-imported activities might get flagged as "manual" entries
- Privacy - Only modify your own activities
- Python 3.7+
- No external dependencies
strava-cheater/
βββ modify_activity.py # Main script
βββ README.md # This file
βββ .gitignore # Git ignore file
Feel free to fork, modify, and improve this project!
MIT License - Feel free to use for personal and educational purposes.
This tool is provided as-is for educational and personal use. Users are responsible for:
- Using it ethically and responsibly
- Not violating Strava/Garmin Terms of Service
- Obtaining necessary permissions for activity data
- Backing up original files before modification
The authors accept no responsibility for misuse or damages caused by this tool.
Happy training! πββοΈπ΄ββοΈπββοΈ