Pedaling, Clicking, and the Search for a Better Way: Stream Deck as a Zwift Accessory

If there’s anything my time on Zwift has taught me, it’s that trying to pedal while juggling a keyboard and mouse is awkward. A while back, I picked up a Stream Deck hoping for a better way to interact with Zwift, and I haven’t looked back since.

For the unfamiliar, the Elgato Stream Deck is a customizable set of programmable macro buttons that comes in several sizes. Since adding it to my setup, my keyboard and mouse have been collecting dust. It’s been a game-changer for convenience, immersion, and overall enjoyment.

What’s Wrong With the Usual Setup

As a frequent racer, group rider, and occasional ride leader, there’s always a lot happening during a ride. For what the Companion App does, it does well, but it doesn’t do much. Keyboard shortcuts help a bit but are still limited. And using a mouse or trackball? Forget it. Unless you’re willing to stop pedaling, you’re not clicking anything.

That just covers Zwift. If you’re also managing music, voice chat, or other apps, you can quickly find yourself off the back.

For me, the Stream Deck solved all of these problems. It gives me control of Zwift and every other app I need from one interface, all at the push of a button… or several. Between its built-in functionality and the add-ons available through the Elgato Marketplace, the possibilities are practically endless.

Making Zwift Control Effortless

Before diving into the cool functionality I’ve uncovered, I want to give a quick shout-out to a few developers whose tools have been key to my setup:

While I’ve done some fun customization with my deck, it’s people like this who have the real skills and are providing genuine benefits to the Zwift community.

With that out of the way, here are the controls I’ve found most useful:

  • Ride Controls – Directional arrows, select, back, Ride On (including a continuous “Ride On bomb”), powerup, U-turn, skip workout block, and a camera toggle for TTT events.
  • Communications – Push-to-talk for Discord (no more heavy breathing into the mic), Spotify controls, and in-game chat using voice input.
  • Ride Leader Controls – Announcements at the start of a ride, a random dad-joke generator, and route info pulled dynamically from the Sauce API.
  • Sauce Controls – Lap button, toggle windows on/off, and change profiles.
  • System Controls – Launch Zwift (one button starts all apps and logs in), shut down PC, reload apps, and access my audio mixer so I can play music during team events without drowning out voice chat.

Below are a few screenshots of how I have my primary pages configured. It’s not perfect, a bit of a mess of subfolders, but with time and muscle memory, I’ve made it work. For something that works well right out of the box, the Zwift Stream Deck profile (linked above) is an excellent starting point that will get you 95% of the way there.

My primary Stream Deck pages:

I’m sure there’s still plenty of potential I haven’t unlocked yet. The Sauce API is easy to work with and opens up tons of possibilities. With a few simple scripts, it’s possible to pull in and use ride data creatively, something I’d like to spend more time exploring.

As great as it is, there are still a few things the Stream Deck can’t quite handle. Pressing buttons within the Zwift interface is… well, a bit meh. There aren’t hotkeys for common actions like joining events or ending a ride, which I’ve tried to work around with macros, with limited success. I’ve mostly resigned to navigating the UI manually.

There’s also no steering, shifting, or braking like the Zwift Click or Play controllers offer. While the deck wouldn’t be ideal for those functions, it would definitely be a neat alternative.

Why I Can’t Ride Without It Now

After more than a year of using it full-time as my only way to control Zwift, I don’t think there’s any going back. Once I fine-tuned my layout and built the exact functions I needed, the experience just clicked. Now everything feels natural… smooth, consistent, and ready for any kind of ride.

The biggest difference is how it lets me stay focused on the ride instead of fumbling for the right key. It doesn’t necessarily make me faster, but it does make Zwift feel more immersive, like I’ve found a hidden upgrade most people overlook. At this point, it’s as essential to my setup as my trainer or fan.

Going Beyond the Basics

Even after all this time, I’m still finding new ways the Stream Deck could evolve with Zwift. I haven’t yet tried Pedal Games, an add-on that ties gameplay elements to ride data, but there’s a lot of potential there. Being able to trigger in-game actions or mini-game events directly from the Stream Deck could make for a fun and interactive experience. It’s on my list to explore when I have some tinkering time.

That said, the Stream Deck isn’t exactly cheap. Between the hardware cost, time investment, and a bit of technical know-how, it’s not for everyone. If you’re curious but hesitant to spend the money, there are a few alternatives worth considering:

  • Stream Deck Mobile – Elgato’s app version gives you nearly all the same functionality on your phone or tablet. It’s freemium, and the free tier is great for testing.
  • Touch Portal or Deckboard – Software alternatives for phones or tablets that offer similar customization, often for free or a small one-time cost.
  • Alternative hardware decks – Off-brand macro pads can offer much of the same functionality. They’re a bit more DIY but great if you want physical buttons on a budget.

No matter which route you take, the key is finding something that reduces friction between you and the ride. There are plenty of approaches depending on your setup, budget, and how much you like to experiment.

Final Thoughts from the Pain Cave

Looking back, this little project has become one of my favorite tweaks to my Zwift setup. What started as curiosity has turned into something I now use every single ride without even thinking about it. The Stream Deck might not make me faster, but it makes every session smoother, more immersive, and more fun.

It’s not a perfect solution, and it’s definitely not the cheapest, but for anyone who enjoys tinkering, automating, or just personalizing their indoor setup, it’s hard to beat. The best part is that it grows with you: whether you’re just using it to launch Zwift or diving deep into APIs and scripting, there’s always something new to try.

Anything that helps you spend less time fiddling with menus and more time riding is a win. And for me, that’s exactly what this setup delivers.

What About You?

Do you use Stream Deck with Zwift? What are your favorite features? Got questions? Comment below!

Ryan Liden
Ryan Liden
Ryan has been riding on Zwift for years and takes his cycling outdoors whenever the weather allows. A self-confessed tech nerd, he loves experimenting with gadgets and finding new ways to make indoor training more immersive and fun.

28 COMMENTS

Subscribe
Notify of
guest

28 Comments
Oldest
Newest Most Voted
Mike
Mike
10 months ago

I see you have a zwift focus button. I assume to get the window selected. Does yours work consistently ? And defined via Windows and number key?
I’ve added bike swap to mine with AHK in addition to what you have. Easier than remembering the keyboard combo with simple text on the buttons that are in order.
I’m only running on a mini, but still a great tool.
Will look into some of your other set ups.

GiGo
GiGo
10 months ago

For people on windows with an android phone or tablet I highly recommend Macrodeck (https://macro-deck.app) It’s kindof like thesoftware version of streamdeck but then for free. Combine it with AutoHotKey and you can do loads of fun stuff. 🙂

Paul
Paul
10 months ago

I have used a stream deck for 3 or 4 years now. I use it for sending often used messages (thanks, take a pull, …), telling jokes, swapping helmets, swapping socks, control of OBS, starting sauce for zwift, audio output selection, discord, volume control for my head phones, and the most important reason is the now 3-4 second bike or wheel swaps. My bike swap amounts to stopping the bike, and pushing a button. Stopping takes how ever long, but the actual bike swap is 3-4 seconds and NEVER fails. The one I use has 32 buttons and I use the all.

Paul
Paul
9 months ago
Reply to  Ryan Liden

Use Stop (enters pairing screen), stop pedaling, wait until bike stops, use Go to get out of the pairing screen, swap the bike. Lately I have been using both brakes on the zwift play controllers to stop as it is a little faster and less prone to error. You can start pedaling as soon as the bike has been selected (no need to wait for all the screens to close). Note if you pedal when you shouldn’t bad things will happen. Swapping bikes when going fast costs a lot of energy that is hard to make up. Swapping bikes on a 10% grade when you are going slowly is almost free and loses almost no time because you are resting for the 4-5 seconds. A 10 second burst of power gets you right back in things. Swap the bike at the bottom of the hill, and just before the top of the hill.

Here is my Stop macro for stopping the bike

A

Here is my Go macro for going after the bike has been stopped

Esc

Here is my macro for swapping the current bike for the third bike

T
Return
Return
Down Arrow
Down Arrow
Return
Esc
Esc
Esc
Delay 400ms
Esc

Neil Allonby
Neil Allonby
10 months ago

How does the and in-game chat using voice input work? I can’t reach my keyboard & I’m poor at typing on my phone whilst riding (or at all 🤦‍♂️) so that really interests me. I’ve got a microphone sat there which I use for discord when racing so if I could utilise this somehow that would be great. Windows PC BTW.

Paul
Paul
9 months ago
Reply to  Neil Allonby

I have three buttons that I use

Voice message == “M” + “Windows key H”
Send message == “Windows key H” + return
Cancel message == “Windows key return” + “Esc key”

I press the Voice message button, then I speak, Then I press send or cancel depending on how bad the speech to text was.

Neil Allonby
Neil Allonby
9 months ago
Reply to  Paul

Thanks Paul. 👌

Neil Allonby
Neil Allonby
9 months ago
Reply to  Ryan Liden

Thanks Ryan 👍

Mark Middleton
Mark Middleton
9 months ago

I use mine a lot. Its main uses for me are Start/stop screen recording, camera views, start stop skip music, start Sauce if ive forgotten and use pre programmed messages. Pretty cool to minimise all the faffing that can happen. I used to do bike swaps really fast when that was more of a thing too.

Ben
Ben
9 months ago

It’s nowhere near as elegant as this, but my current workaround is a combination of the companion app and the Unified Remote app on my phone giving me mouse and keyboard control of my PC. It’s a little clunky, but does work for most scenarios.

J D
J D
9 months ago

For a budget version, use a $10 numpad and a stick-on garmin quarter turn mount. With the autohotkey guide, you configure it how ever you want.

I printed symbols then taped them to the keycaps. Then I cut a section out of a ziplock bag and covered the numpad for sweat protection. I’m coming up on 5 years with mine and never had to replace the plastic cover. Just make sure you tape it on with a little slack so the keys can be pressed and rebound without issue.

Joshua Farrow
Joshua Farrow
9 months ago

Ryan,

Do you have information you can send me on how you are grabbing the event/route details from the Sauce API? I think that sounds really cool and would love to know more on how you’re doing that with the Stream Deck.

Joshua Farrow
Joshua Farrow
9 months ago
Reply to  Ryan Liden

I will check this out!

brick-climber
brick-climber
9 months ago

I find this very interesting. I look forward to any future articles on this subject.

Christophe Rémond
Christophe Rémond
9 months ago

My DIY hardware deck based on bluetooth numpad (I re-map the keys to AHK macros) 😎

IMG_2102
Last edited 9 months ago by Christophe Rémond
brick-climber
brick-climber
9 months ago

One thought that hit me. This would be super helpful if one was leading a group ride. Especially one with a theme to store a bunch of text messages to later use during the ride.

Tutnix Zursache
Tutnix Zursache
9 months ago

Hi Ryan, may i ask you to share your elgato setup, because i am struggeling to control s4z. my skills to do this to low to do that.

Man rides stationary Zwift bike trainer in advertisement. Text reads The Zwift Ride Big Weekend Sale Sept 24-28. ZWIFT: RIDE $999.99. Colorful shapes and a Save Now button appear below.

Get Started on Zwift

Newest Featured Posts

Support This Site

Write a post, shop through us, donate or advertise. Learn more

NEWSLETTER SIGNUP

Zwift tips and news every 2 weeks! Click to subscribe.

More Posts