Indoor training for macOS, Windows and Linux

Ride your .zwo workouts in ERG mode.

zwoTrainer controls your smart trainer second by second, turns folders of workouts into training plans and uploads every ride to Garmin Connect, Strava and Intervals.icu. There is no video, no subscription and no account.

Bluetooth FTMS trainers · heart-rate straps · Zwift Ride, Click and Play

zwoTrainer ride screen during a sweet-spot interval: live power, cadence, speed and heart rate, current and next segment, and the workout chartzwoTrainer ride screen during a sweet-spot interval: live power, cadence, speed and heart rate, current and next segment, and the workout chart
ERG every secondTargets and ramps update once per second
5 FTP testsRamp, Ramp Lite, 20 min, 8 min, Power Profile
FIT uploadsGarmin Connect, Strava via Garmin, Intervals.icu
FreeNo subscription, no account, no ads
Ride screen

Readable in the middle of an interval.

Three panels sit above the workout chart. The numbers are large, the background is pure black or pure white, and the zone colours are the ones you know from Zwift.

  • Live: a watt gauge with target and actual power, plus power, cadence against its target, speed and heart rate.
  • Current and next segment: target in % and watts, target cadence, segment length and the time left.
  • Workout chart: your power, cadence and heart rate drawn over the planned blocks.
  • Intensity: scale all targets by 1 % next to the play button, from the keyboard or a Zwift controller, or by 10 % with Shift.
Ride screen in the middle of an intervalRide screen in the middle of an interval

Light and dark mode follow your system, or pick one in Settings.

Plans

Open the app, press Start.

A folder of .zwo files sorted by week and day becomes a plan. Workouts unlock in order, skips can be undone, and a Markdown file in the folder is shown as the plan description.

  • Progress is saved per plan, so you can switch plans and pick up where you left off.
  • Every session shows week, day, duration, dominant zone and TSS.
  • Stopped early? Save the ride as done, count it as skipped or discard it.
Plan page with week-by-week sessions, progress bar and the next workout highlightedPlan page with week-by-week sessions, progress bar and the next workout highlighted
FTP tests

Live pacing during the test.

All-out efforts turn ERG off, and you control the power with your gears, real or virtual. In efforts of five minutes or longer you see your average so far. The 8- and 20-minute tests also show the FTP it works out to, and you get a warning if you ride more than 10 % above the pacing target.

  • Ramp, Ramp Lite, 20-minute, 8-minute and Power Profile tests, plus test workouts from your library.
  • Completed efforts only: an all-out effort stopped early gives no FTP, because it would come out too low.
  • W/kg and VO2max estimates, a test history and an FTP trend chart.
20-minute FTP test during the all-out effort with live estimated FTP and pacing20-minute FTP test during the all-out effort with live estimated FTP and pacing
After the ride

Uploads to Garmin, Strava and Intervals.icu.

Each ride is saved as a FIT file and uploaded to Garmin Connect under the workout's name instead of “Indoor Cycling”. If your Garmin account is linked to Strava, the ride continues there. Intervals.icu gets a direct upload, and for COROS the app prepares a file to import.

  • Summary: time, average power, NP, average heart rate, cadence and energy.
  • Garmin sign-in happens on Garmin's own page, with MFA. zwoTrainer stores a session token, never your password.
  • Rider sync between computers through iCloud Drive, Dropbox or Nextcloud.
Workout summary with time, power, NP, heart rate, cadence and energy, uploaded to Garmin ConnectWorkout summary with time, power, NP, heart rate, cadence and energy, uploaded to Garmin Connect
Connections settings with profile sync and Garmin ConnectConnections settings with profile sync and Garmin Connect
Devices

Pair once.

Devices are remembered per rider and reconnect at launch and after a dropout.

Smart trainers

Any Bluetooth FTMS trainer, such as Wahoo KICKR, Zwift Hub, Tacx, Elite, Saris or JetBlack, in ERG mode or flat-road simulation.

Power and heart rate

Bluetooth power meters (power only, no ERG) and any strap or watch that broadcasts heart rate.

Virtual shifting

24 virtual gears with road physics, shifted from a Zwift Ride, Click or Play controller, the keyboard or on-screen buttons.

Uploads

Garmin Connect (and Strava through it), Intervals.icu and COROS. A plain FIT file for anything else.

Left out on purpose
Video courses3D worldsWorkout builderMusic playerSubscriptionAccount
Support zwoTrainer

Like the app? Buy me a coffee.

zwoTrainer is free, has no ads and needs no account. If you use it for your training, a coffee helps me keep working on it.

Starring the repository or reporting a bug on GitHub helps too.

Free for macOS, Windows and Linux

Get zwoTrainer.

Download the app, choose your workouts folder and pair your trainer.