A simple Python utility to:
- Parse a
.fitfile and extract timestamp, latitude, longitude, and speed (km/h) - Export the data to a CSV
- Generate an interactive HTML map with two layers:
- Street View (OpenStreetMap)
- Satellite View (Esri World Imagery)
with your route colored blue→red by speed.
- Multiple routes are differentiated by highlighting accompanied by a legend and the ability to toggle them.
- Download
MBR-Strava-Parser.exefrom the latest releases. - Double click
MBR-Strava-Parser.exeto run the application. - It will prompt you to select a
*.fitfile, see below to extract from Strava. - It will then request you select a directory to save the files in. Inside this directory it will create a folder to store the data.
- Finally, it will open a satellite map with your data!
Note: this does not work on mobile.
- Log in to Strava on the web and open the activity you want.
- Click the ⋯ menu (middle left) and select Export Original.
- The
.fitfile will download — use this as yourinput.fit.
Or follow the instructions here: https://support.strava.com/hc/en-us/articles/216918437-Exporting-your-Data-and-Bulk-Export
--
- Python 3.7+
- Pip
git clone <your-repo-url>
cd <repo-folder>
pip install fitparse pandas folium brancapython main.py input.fit output.csv street_map.html satellite_map.htmlExample:
python main.py my_ride.fit ride_data.csv ride_street.html ride_satellite.html- input.fit Downloaded FIT from Strava
- output.csv CSV with columns:
timestamp,lat,lon,speed_kmh 2025-04-13T19:08:42,43.712345,-79.416789,70.2 - map_view.html Your track over OpenStreetMap
Open either HTML file in a browser to explore your ride, colored by speed.
To let teammates run this tool by double‑clicking an executable, you can bundle main.py and launcher.py into a single .exe using PyInstaller:
-
Install PyInstaller in your Python environment:
pip install pyinstaller
-
Bundle the launcher script into one executable:
# From the project root, where main.py and launcher.py live python -m PyInstaller --onefile --windowed launcher.py--onefilepacks all dependencies into a single.exe--windowedsuppresses the console window (GUI only)- The generated executable will be in
dist/launcher.exe.
-
Include map‑tile definitions (providers.json) so Folium can resolve custom layers. If you encounter
xyzserviceserrors, re-run with:python -m PyInstaller \ --onefile --windowed launcher.py \ --add-data "<path_to_python_site_packages>/xyzservices/data;xyzservices/data" -
Distribute the
launcher.exefile. Teammates can double‑click it, select a FIT file, choose an output folder, and instantly see the satellite map.
- Parse — read FIT “record” messages
- Convert — semicircles → decimal degrees; m/s → km/h
- Export — write
timestamp,lat,lon,speed_kmhto CSV - Visualize — draw line segments on two maps with a speed‑based legend
MIT © 2025