Convert indoor bike files to TCX for Strava, Garmin Connect,
TrainingPeaks, and Golden Cheetah. Repair speed and distance.
What is a TCX file?
TCX is Garmin's workout format: a second-by-second log of power, heart
rate, cadence, speed, and distance. Strava, Garmin Connect,
TrainingPeaks, and Golden Cheetah all read it.
Strava and Garmin want TCX. Many indoor bikes export CSV (or other
formats) instead. upload.bike reads those files and saves a TCX they
accept.
Also accepts .fit and .tcx files from Garmin
devices, MyWhoosh, Zwift, Apple Watch, or any app that records power
data. Drop one in to fix bad speed/distance or re-export as a clean TCX.
Missing your bike? Send a sample file to upload.bike@gmail.com. If it
has power, cadence, heart rate, and distance, support is usually
straightforward.
Repair speed and distance
Many indoor bikes don't measure speed and distance. They estimate it
from wheel RPM or resistance, and that estimate can be well off, so your
ride lands on Strava with the wrong distance, speed, and calories.
This option ignores the bike's figures and recomputes them from your
power and combined rider + bike weight, using the forces that act on a
real bike:
Aerodynamic drag: ½ × Cd × A × ρ × v²
Rolling resistance: mg × Crr × cos(θ)
Drivetrain efficiency: 97% power transfer
Each second, it solves for the speed your power supports at that moment.
Distance accumulates from there.
You can also use this to fix workouts that already exported as TCX or
FIT. Drop the file in, enable Repair speed and distance, and set your
combined weight. Power, cadence, and heart rate stay as recorded; speed
and distance are rebuilt from power, then saved as a clean TCX for
Strava, Garmin Connect, or TrainingPeaks.
A real example
The chart below is a 73-minute ride on a Schwinn MPower Echelon 2. The
bike logged 21.5 miles; the physics model puts it at 23.8, about 11%
higher. The reported top speed is 78 mph, which no one produces on a
trainer. The model caps it at 32 mph, the figure the power actually
supports. Reported speed that jumps around like this usually means the
console is inferring distance from cadence rather than measuring it.
Drag the mass slider to see how rider weight changes the result.
Rider + bike mass:
Loading sample data...
Bike reported
Physics model
Difference
Repair timing
Some bikes log a point every 3, 5, or 10 seconds. The bike's screen
doesn't care, but Strava and Garmin Connect expect one point per second.
Those gaps can skew your duration, leave holes in the charts, break
segment matching, or fail the import.
Repair timing (on by default) resamples the data to one point per second
using linear interpolation. It never overshoots the source min/max or
invents spikes: power and cadence are clamped at zero or above, heart
rate dropouts are forward-filled, and distance stays monotonic. Any
remaining whipsaws come from the source data, not the resampling.
Getting your file
Schwinn MPower Echelon
Insert a USB thumb drive into the slot at the top of the console
Do your workout, then stop pedalling
Press and hold AVG/MAX for 5 seconds
Wait for the flashing USB logo to stop, then remove the drive
The drive holds a file named something like MPower12.csv
USB drive problems? Some Schwinn consoles reject newer thumb drives. A
1GB drive usually works. If the USB logo won't flash or the console shuts
off, try a smaller drive.
Stages Indoor Cycles
From the console, open the ride summary or history
Both export CSV under workout history or activity settings.
TrainerRoad
Activity files end in .txt. On the
computer where TrainerRoad is installed they live in your
WorkoutRecords folder (with names such as
dca6f8c2-3171-40ad-9e17-1b6a89898af2.txt).
MyWhoosh
MyWhoosh exports FIT files. On Windows they live in your local
AppData directory:
Open upload.bike and drop your CSV workout file in the converter. The tool detects your bike model, repairs timing and distance as needed, then Download TCX saves a Garmin TCX file you can upload to Strava, Garmin Connect, TrainingPeaks, or Golden Cheetah.
How do I convert a TrainerRoad TXT file to TCX?
TrainerRoad activity files end in .txt and live in the WorkoutRecords folder on the computer where TrainerRoad is installed. Drop the .txt file into upload.bike, and it parses it automatically: the TSV rows are converted to Garmin TCX for Strava or Garmin Connect.
Why is my distance different after conversion?
Many indoor bikes estimate distance from wheel RPM or resistance, which can be off by 10% or more. The physics model recalculates distance from your actual power output, rider mass, and physical constants, so the number is more realistic.
What if my bike isn't in the supported list?
Missing your bike? Send a sample file to upload.bike@gmail.com. If it has power, cadence, heart rate, and distance, support is usually straightforward.
Is my data sent to a server?
No. All conversion runs in your browser via WebAssembly. Your data never leaves your device.
Why does the physics model need my weight?
Mass affects speed for a given power output. A heavier rider goes slower at the same wattage on flat ground. The model uses combined rider + bike mass to solve the equations of motion.
What formats are supported?
File types: .csv, .txt, .fit, and .tcx.
Supported equipment:
• Schwinn MPower Echelon (3 variants)
• Stages Indoor Cycles (metric and English, with or without headers)
• The Sufferfest
• Wahoo SYSTM
• TrainerRoad
• NordicTrack
• PRO-FORM iFit
Missing your bike? Send a sample file to upload.bike@gmail.com.
Why does Strava show a different time than my bike console?
Some bikes record every 3 or 5 seconds instead of every second. Repair timing resamples to 1-second intervals so the duration matches what fitness platforms expect.
The USB export didn't work on my Schwinn bike. What do I do?
Some consoles crash with newer USB thumb drives. A 1GB drive works best. If the USB logo fails to flash or the unit shuts off during export, try an older, smaller drive.
Troubleshooting
File won't load
Bikes and firmware versions export files differently. If yours won't
load, email it to
upload.bike@gmail.com and it
can usually be added.
Distance looks wrong in Strava
Turn on Repair speed and distance and enter your weight to replace the
bike's guess with a value derived from your power. See the
physics section above.