BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
翻訳待ち
Accidentally stopped and saved your run or ride halfway, or forgot to stop it at the end? Join the two FIT files back into one, or trim off the extra, with no data lost, and upload it to Garmin Connec
翻訳待ち
スポーツ・フィットネスPython · JavaScriptGitHub @jmallachオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
Join accidentally split FIT activities back into one, or trim one you forgot to stop, losslessly. Files from any device (Garmin, Suunto, Wahoo, Coros…); the result uploads to Garmin Connect, Strava and other sports apps.
翻訳待ち
Loading the full README.
Read the full README ↗Stitch FIT activities that were accidentally split (stopped and saved halfway) back into one, offline and without losing data. The result is the activity you would have had if you had pressed pause instead of saving.
It also trims an activity you forgot to stop at the end (or started too early), as if the watch had been stopped at the right moment.
It works with FIT files from any device (Garmin, Suunto, Wahoo, Coros…), and the stitched file uploads to Garmin Connect, Strava and other sports apps.
$ fit-stitch part1.zip part2.zip -o run.fit
Part 1 Part 2 Stitched
Start 2026-10-25 12:39:12 2026-10-25 13:43:54 2026-10-25 12:39:12
Distance 7.27 km 4.19 km 11.46 km
Timer time 0:53:51 0:26:08 1:19:59
Elapsed time 1:04:03 0:27:12 1:31:54
...
Pause between part 1 and 2: 0:00:39
[ok] file structure and CRC are valid
[ok] Garmin FIT SDK decodes the file without errors
[ok] all 16929 data messages preserved
...
https://jmallach.github.io/fitstitch/ runs the same code in your browser, with nothing to install, on phones too. Your files are not uploaded: the page runs fitstitch locally with Pyodide (Python compiled to WebAssembly). Add two or more files to stitch them, or a single file to trim it on a chart of its speed and heart rate. It is available in 38 languages, from Arabic and Hindi to Catalan and Japanese; corrections are welcome (see CONTRIBUTING.md).
pipx install fitstitch
or pip install fitstitch. For the latest code, use
pipx install git+https://github.com/jmallach/fitstitch, or pip install .
from a checkout.
Requires Python 3.9+ and the official garmin-fit-sdk package. That package
is used for field names and units, and to check the output independently.
fit-stitch PART1 PART2 [PART3...] [-o OUTPUT] [-n] [-f] [--overwrite]
.fit files, or .zip files holding one (such as Garmin
Connect's Export Original). You can give them in any order; they are
sorted by start time.-n/--dry-run shows the result and the checks without writing anything.-f/--force stitches parts even if the sport or the recording device
differ.fit-trim FILE [--start WHEN] [--end WHEN] [--auto] [-o OUTPUT] [-n] [--overwrite]
fit-trim only shows where it would suggest cutting:
stretches of at least three minutes at either end spent standing still or
moving at vehicle speed. --auto applies the suggestion.WHEN is an elapsed time from the start (1:02:30, 45:00, 90s) or
a distance (10.4km, 850m); with a leading - it counts back from the
end, so --end -23:00 removes the last 23 minutes.fit-stitch (or fit-trim), or use the web page.The FIT file is read and written byte by byte. Every message and field is copied as it was, including undocumented Garmin messages and developer (Connect IQ) fields. The tool only changes fields whose meaning it knows.
This is the beginning of the README. Read the rest at the original. Read the full README ↗