Ride Cave: Free, browser-based virtual workouts, racing, and 3D velodromes (Intervals.icu integrated)

I built Ride Cave, a free browser-based virtual cycling app for myself and it sort of ballooned from there. I’m using it personally for all my indoor riding and has replaces Zwift and TrainerRoad for me. You shouldn’t have to pay to ride indoors.

You can ride your Intervals.icu calendar directly in Ride Cave. More on that here.

It runs entirely in the browser, connects directly to smart trainers, and has no install or subscription.

Try it here: https://ridecave.com

It includes 100+ free structured workouts, a buncha mini-challenges, and 18 real-world inspired velodromes you can ride or race (CPU controlled ghost racers for now) on using your own trainer.

What makes it different:
• Real physics - “Newtonian simulation” running hundreds of times per second. Banking angles, air resistance, rolling resistance, inertia, rider weight, and power are all modeled. Physics runs fully client-side and deterministically. Milisecond accuracy.

• Energy (kWh) tracking - In addition to watts and TSS, RideCave tracks cumulative energy output in kilowatt-hours, with real-world equivalents (for example how many times you could charge a phone).

• Browser-native -Uses the Web Bluetooth API to connect directly to FTMS trainers like Wahoo KICKR, Tacx, and Saris. Works in Chrome and Edge on desktop. No plugins or installs.

• Privacy-first - people can ride as guests and data stays in browser. But I recommend you sign up for all the features.

• Track and more - Part mission to bring track racing, workouts, and fun to virtual world with formats like flying 200m sprints, pursuit-style intervals, elimination races, and mini challenges built on a new protocol we invented.

Tech stack: React 19, Vite, Three.js, Web Bluetooth API, Supabase for optional sync.

I’m a cyclist who got tired of paying $20/month for Zwift when I mostly just wanted structured track workouts. Built this for myself and figured I’d share it. May create a paid tier at some point but that’s not why I’m building it now.

Would love feedback, especially on overall UX, product direction, and experience. What would make you use something like this over existing options?

Thank you to David for helping me complete the Intervals.icu integration.

24 Likes

Looks neath! Going to give it a spin tomorrow and report back.
Are you considering using power meter as a power source? With a basic power matching function for longer steady state intervals in ERG mode?

2 Likes

If that’s a feature request then yes! Let me know how it goes for you!

Many thanks for releasing this app. Used with my Wattbike Atom Gen2 & Lenovo P12 tablet (Chrome browser set to Desktop mode). It worked well & was very enjoyable. Pairing with HRM & trainer & sync both ways were easy. I was very frustrated when it kicked me out at 30mins with some laps to go (I thought that I would have been eliminated long before then but Easy mode was true to its name perhaps). I am looking forward to trying to finish a race next time. The only problem was my 56yr old eyes struggled to read the screen font for the times during the race. Ideally if you could find a way to increase this a touch I would be grateful. It recommended an FTP increase to 212W at the end which I am unsure of. Intervals eFTP for the ride was 178w which sounds closer to my reality & last FTP test. My Garmin was ecstatic & gave me some Anaerobic credit for a change. Very rare event.

1 Like

Thank you for giving it a try, David! I have to dial in the race mechanics some more as well as the lap logic as I’m trying to balance “getting a workout in the time I have available” and “racing” (which could take a variable amount of time) - it sounds like you’d prefer for race mode to prioritize completing the event and finishing all laps?

I will look into adjusting font sizes and the FTP accuracy. Thank you for the feedback!

1 Like

Perhaps a warning might be useful to explain that 30mins would be insufficient to get down to the final few riders if their ability suggested. it was possible Or a method of adding time if a rider still feels fresh & wanting to extend beyond what they expected?

In fairness to you, I suppose that I should have realised that it would exit the race early with 24 competitors & only one eliminated per 3 laps. So my fault (first time using it) as much as the app’s really. Now I will know to do the maths if my pre-race energy levels would take me well into the race. And to be honest, if I had been riding in a more competitive race, then I might well have been long eliminated in the 30 mins anyway, especially if my compeitors were based on my FTP being 212W. Though it has not updated my FTP to 212W fortunately.

I am looking forward to perhaps also using the Concept 2 SkiErg in the app in the future if you could get it to pair, as there are few apps that offer races with that machine. And with it being used in Hyrox races then many users are perhaps the quite competitive types. (I am not particularly but really enjoyed your app today & am left wanting more). And the velodrome setting would be an easy fit presumably, at least visually, if not in terms of replicating the physics perhaps. And the C2 SkiErg intensity can be based on watts as well as pace/500m. Painsled allows skierging on Zwift though would likely be disallowed for races. So there is an addressable market ready & waiting probably?

2 Likes

Very nice looking app! but without power match it’s no-go for me unfortunately.

1 Like

I’ll update this thread when the next update is released. It will contain:

  • Power matching via power meters
  • Improved race logic so you can complete all competitors (with some improvements to the race UI for little fonts).

Feel free to sign up to get updates as I release them weekly.

2 Likes

Great work Ben Snyder! Looks really good.

1 Like

This workout wasn’t imported correctly :

-5m ramp Z1-Z2

3x
-2m 100%
-1m Z1

-4m Z1

10x
-30s 385W 100rpm
-15s 210W 

-5m Z1

10x
-30s 370W 100rpm
-15s 210W 


-5m Z1

10x
-30s 365W 100rpm
-15s 210W 

-6m Z1

1 Like

looks like there is an issue with calendar sync

Edit: might help to know that I"m using 24 hr format?

1 Like

Thanks for the feedback. Btw we have an active beta discord if you’d like to join and continue to provide feedback Ride Cave

Fixes for these items will be out this week. I’m wrapping up Workout Plans and will push them with that update

Can you send me the workout? File or screenshot of it from intervals would do.

The way our platforms define, implement, and structure workout data is different for a variety of use cases so I need more people hammering it. Thank you for reporting this one.

1 Like

First impressions:

  • I was able to start the workout in above example even though it was on the wrong date in the calendar
  • Starting the workout and pairing HR strap and trainer, all went smoothly and fast
  • Just used it as an ERG workout player (which will always be my main use). Can’t yet comment on the visual aspects of track racing. Got a bit confused because I couldn’t see cadence until I realized that my trainer does not broadcast cadence… I normally get that info from my Assioma’s. Saw that the pedals were detected but didn’t pair them for this first test.
  • Trainer control feels fine and smooth. No dropouts, hick-ups, etc.
  • After the workout was done, I uploaded from the interface directly to Intervals. It came in without any delay, but in Intervals it is classified as a walk. Are you sending it as a Virtual or Indoor Ride?

Ride Cave certainly has my attention because all I’m looking for is a smooth user-friendly workout player which integrates with Intervals. Power match is quit important for me, because my trainer takes about 20-25 min to ‘warm-up’. In the beginning, the trainer has significant more resistance and the difference in wattage compared to my pedals is 15-20W. At my age, I like to ‘ease into it’, especially for an endurance ride. That’s what makes me appreciate the simple Power match function used in BikeTerra. Nothing fancy, just something that corrects the resistance for steady state endurance rides. All the ‘graphics and immersion’ stuff in Zwift/MyWhoosh/BikeTerra has none of my attention. I tend to simply watch TV or listen to a PODcast while getting my base hours in. I don’t care about ‘likes’ or ‘kudo’s’, it’s just not my thing. It then comes down to the fact that I’m using plenty of resources from my laptop, for things that I don’t care about and don’t even look at.
So, to wrap-up, my first impressions:

  • Your app is technically well designed and suits my demands
  • Power-match would be highly appreciated
  • Some small quirks left and right, that will certainly be ironed out within a small time-frame

Congrats on your work!

2 Likes

Thank you MedTechCD! The product is still Beta so I appreciate the feedback and areas of improvement. I will look into those tweaks and fix accordingly.

Power-match is in progress and should be out in the next 1-2 releases. I will update this thread when it is!

1 Like

At first glance, everything looks simple and clear. The only thing missing is a zoom/size setting (like in icTrainer). On a 12" tablet (even in a full-window Chrome browser), I had difficulty making out the numbers. I also need larger icons for finger control. Thanks!

1 Like

In IcTrainer you can zoom

1 Like

And not only zoom, there is also a compact view.

2 Likes

Thanks all for the feedback. An update was released this morning:

  • Fix for activities appearing on wrong day (they were not using local time)
  • Fix for activities uploading as Walks (now upload as virtual rides)
  • Race seeding is now based on the number of participants you want to race. You will race that number and the race will complete when done, not based on a set time.
  • Increased some font sizes of track player.
  • Fix for improperly rendering of workouts with fixed watts in Intervals.icu (note: Intervals.icu sends ranges, Ride Cave uses the mid-point for those ranges to structure the workout)

Among other updates. I will work on power matching and better mobile/touch friendly design next.

I really appreciate the feedback! Product is still beta right now so you are helping me refine it.

4 Likes