Via vs qmk

So I’m just getting started in the hobby and my first board is a gmmk pro that just arrived yesterday. I’m super hyped to build it but then remembered that there was a whole debatical about it not supporting via. Which brings me to my question. What’s the major differences between qmk and via and how come this is a big deal?


VIA is just a UI for QMK. I’m not sure what the big deal is. I thought if a board supports QMK it meant VIA was supported too.


That’s what I thought too, that’s why I was just so supprised when a bunch of people on Twitter and reddit were ready to write the board off for not having via out of the box.

VIA is not just a UI for QMK. VIA consists of two parts:

  • desktop app (UI)
  • firmware

Desktop app is UI for VIA firmware. Appears to Electron-based but I don’t think its source is public AFAIK.

VIA firmware is based on QMK, adding protocol to update keyboard map at runtime. Not all QMK-ready keyboard supports VIA . VIA-ready means, after VIA firmware is installed, the keyboard will be recognized by and configured using VIA desktop app.

Note that VIA firmware is keyboard-specific. This means, unless your keyboard comes with VIA firmware pre-installed, you’ll need to:

  1. check list of supported keyboards
  2. download VIA firmware for your keyboard
  3. reset and flash your keyboard

I’ve installed VIA on most of my keyboards except for weird DZ60RGB variant. I also failed to get VIA working on my Planck.


Ye, itt feels odd that a “big” keyboard like Planck don’t have a simple flash for it.


Ahhh got it. It’s all starting to make sense now, especially since I just checked the VIA website and there’s no support for this board as of yet. I wonder when they’ll roll it out.

It probably won’t be long; someone already got code for VIA-compatible GMMK Pro firmware merged into QMK. So technically you can use it with VIA now if you compile that and flash it to your keyboard.

As for the practical differences, with QMK if you don’t want to get into code you have to use QMK Configurator to configure your keymap. When you’re done choosing your layout you hit “compile”, download the hex file, and use QMK Toolbox (linked on the webpage) to flash the hex file to your keyboard. You’ll also want to download the “keymap.json” file which you can re-upload to the site to continue editing the layout from where you left off. Any time you want to change the keymap you have to go back to that web app, upload the json, make your changes, recompile, download the new hex and json, and go into QMK toolbox to flash the new keymap to the keyboard.

With VIA, you use QMK Toolbox to flash the firmware one time then you use the VIA desktop app to make changes to the keymap. Any changes you make in the software instantly update what the keyboard does; no compiling, no flashing, no trying to figure out where you saved that old json file.

Frankly, VIA is a better solution for people who don’t care about learning about how firmware works and just want to customize their keyboard layout. But if you don’t make changes to your layout much then QMK is easy enough to work with.


Also the GMMK Pro already works out of the box with it’s own programming software like VIA.
And I’m not sure there is support yet by VIA to rotary encoders.
So as of now it looks like you are not missing much by not having VIA/QMK.

Also this is a 75% layout, already a layout with a big number of keys and the use of layers is less critical than on smaller layouts like 40% or 60%.


Are there some feature of QMK that can’t be done via VIA? For example, home row mods or tap dance type things? I’ve only used QMK so far, thinking maybe I should give VIA a shot if it supports everything.

I just want to drop in these: (An open-source project to recreate something like VIA.) (Similar browser-based app.)

That said, I use my local building environment to update my keymaps once a year… :wink:


Support for rotary encoders is planned for VIA, dunno when it will come out (maybe soon).
As for tap dance, I’m not sure it has been planned at all.

@phitz Most functions in QMK can be added with VIA by using the (ANY) function. You select (ANY) and then type in the QMK Code that you want it to use.


THANK YOU. Wow. As a 40s user this will really come in handy. I was messing with via for the first time today actually.

Oh, didn’t know that!

ANY is nice but I’d like to see a smart BUMP_LAYER key/function that wrapping increment layer then emit layer number. At L0, tapping three times types out “L1L2L3” and keyboard is mapped to layer 3. This allows displayless macropads to switch layers easily with one-key only.


So ive built my first custom Keyboard a month ago and as far as i know you need qmk to get the VIA supported firmware on the pcb but i could be false.

It depends what kind of controller you have. If you have a controller that uses .uf2 rather than .hex files, you should be able to drag & drop the firmware to the keyboard, which will show up as a USB drive on your desktop.

I am looking to buy a budget QMK compatible keyboard. I see VIA and QMK being used interchangeably. I feel QMK is more powerful as you see the source code and also modify/add features if needed in code. My issue is all the Chinese keyboards like epomaker, cidoo, etc. only give you VIA json no QMK source code, is there a way to create QMK yourself from VIA.

If they are using VIA, then they use QMK for their firmware, then they must provide their source code firmware to comply with the GPL v2 licence.
They don’t have to make the access easy though, but may have something in their website or at least give access to the source code if you request them to provide it.

1 Like

@olivia is not only the designer of one of the most popular GMK keycap sets, but is also one of the folks behind VIA (as in OliVIA) and one of the OG members on this site.

Their site also has a great bit of info about getting VIA working on QMK compatible boards with a great video from Joe Scotto.

And of course, there is always their Discord.

1 Like