New indoor cycling app: Biketerra

Hey all,

A small team and I have been working on an indoor cycling app called Biketerra.

Biketerra is a browser-based 3D app. Among other things, it lets you upload any route and ride it virtually… with accurate physics, terrain, and landscapes.

You can also upload and ride structured workouts (in zwo format).

I posted this as a “feature request” because we’d love to include TrainerRoad integration. If this ever becomes a possibility (either via an API, or letting users download today’s .zwo workout), we’d be quick to adopt.

I’d love to hear your impressions!

  • Matt

Hey all,

Just thought I’d share some screenshots of Biketerra thus far, in hopes that some of you would be willing to give it a try and let us know how it goes?

Here’s the in-ride interface (let us know how we can improve this):

The riders in red jerseys are “pacer bots”, and you can control their power. During workouts, they’ll also hold the current workout interval’s power… meaning that if you’re not a fan of ERG mode, you could do a workout in SIM mode and use pacers as “guide posts”.

There are a handful of camera modes, here’s the fully zoomed-out view:

Biketerra lets you upload any .ZWO workout. Here’s an example of the workout interface (fully functional, but still a work in progress):

Biketerra is an in-browser app. If you’re using Chrome or Edge, you can actually connect your bluetooth devices entirely from your browser too:

Here’s the route selection interface. You can also upload & ride your own routes (see the following screenshot):

Route editor (the sliders can be used to trim out both inner- and outer route sections):

After a ride, you’ll see the activity details. Download the activity .FIT file or upload to Strava in 1-click.

We’re rolling out a Challenges feature too. The latest challenge, “Paris-Nice 2024”, rewards you for riding the finale of all 8 stages. We’re aiming to add new challenges every couple weeks.

Our next big goal will be multiplayer, and we hope to have something ready to show for it soon :blush:

Thanks for reading,


I fired this up the other day to try it. Connection process went pretty smoothly (tried both thru iOS and browser) but my trainer does not like being connected to more than one device without a dance of turning bluetooth off and power cycling the trainer so I couldn’t really get it running (not your fault). I did connect it to the wife’s trainer briefly to see if it worked and it worked right away. One day when I’m not time crunched I’ll give it a real go but it looked cool.


Will give a try at some point this week based on the ability to control the pacer bots alone - this is a great feature. The ability to chase a carrot without erg is something missing from other platforms I’ve tried. It’s what I’d like for the Zwift pacer bots to be able to do, but a 3.2w/kg ride ranges anywhere from 2.9-3.5 based on course and others. This could be great


Out of curiosity, which trainer are you using?

Elite Direto XR is the troubled one.

Tacx Neo 2T worked fine.

1 Like

Oh, are you the same guy that joined our Discord the other day?

Perhaps a coincidence, but we just fixed an issue involving that exact trainer :slight_smile:

I am not that guy, lol.

The Direto XR must be a popular trainer then, haha.

Regardless, the issue you ran into before should be resolved now :crossed_fingers:

Hope you’re having a good week!

So I tried again really quickly last night. This time it connected and looked liked power changed and it read some cadence…but the baseline power was about 35000W. Turns out I’m not actually that strong. I’ll try again when I have some more time.

Yeah, 35 kW sounds like quite an ambitious target :wink: :laughing:

Thanks again for giving it another spin. I’ve applied some more changes, hopefully they work better the next time around.

Happy to share the technical details behind the most recent fix, if it’s something you’re interested in.

Those graphics remind me of the pole position video games in the late 80’s.

Haha, it’s not quite that retro… but we’re (intentionally) starting out lower-poly to ensure the app runs smoothly across devices. Visuals will improve over time :slight_smile:

Keep in mind that Biketerra is a browser app, so there are some limitations in that regard when it comes to hardware / GPU access.

Browsers are evolving rapidly though :innocent: