Open-source project
betaflight/betaflight-configurator avatar
betaflight/betaflight-configurator

Betaflight App: configuring a flight controller from a browser, a desktop installer or Android

Cross platform configuration and management application for the Betaflight firmware

3,324 stars1,145 forksJavaScriptGPL-3.0

At a glance

What is it?
The Betaflight App is the cross platform configuration tool for Betaflight flight controllers, now delivered as a Progressive Web App with standalone builds for Windows, Linux, macOS and Android. It is a hardware-facing tool, so the install path matters as much as the UI.
Who is it for?
Adopt Betaflight App if you fly a Betaflight target and need to flash firmware, set up modes and tune rates, and prefer the PWA at app.betaflight.com so you are not chasing installers. Do not adopt it if you are looking for a general purpose serial terminal, or if you need a configuration tool for a different flight control firmware.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the Betaflight App is for, and who actually needs it

Betaflight is flight control firmware. The App is the desktop or browser side of it: the program you open after you have soldered a flight controller into a frame and before you arm the motors. The README describes it as a crossplatform configuration and management application for the Betaflight flight control system, and notes that the tool and the firmware support quadcopters, hexacopters, octocopters and fixed-wing aircraft. That list is the audience. If you build or repair multirotors or fixed-wing models running Betaflight, this is the interface between you and the board. If you fly a different firmware stack, nothing here applies. The App is not a general serial terminal and it is not a firmware project in its own right; it is the client that talks to firmware you already flashed or are about to flash. The repository itself is JavaScript, licensed GPL-3.0, and the package manifest names the product Betaflight and the package betaflight-app.

Progressive Web App, Capacitor and Tauri: three delivery paths in one repository

The interesting design decision is that this is no longer only an Electron-style desktop program. The README states the App is a Progressive Web Application and that the most recent release is served at app.betaflight.com. The build section says future versions use Node, npm, Vite and Vue, with Capacitor as the Android wrapper over the PWA. The repository layout confirms a second wrapper: there is a src-tauri directory alongside android/, and package.json carries tauri, tauri:dev, tauri:build, tauri:android:dev and tauri:ios:dev scripts. So the same Vue front end is shipped three ways: as a web app you load in a browser, as a Capacitor-packaged Android app, and as a Tauri-packaged native binary. That is a real architectural choice with a real consequence. A browser build cannot open a serial port the way a native binary can, which is why the App at app.betaflight.com depends on browser support for connecting to hardware rather than on a bundled serial driver. The standalone installers exist precisely for people whose browser or operating system does not give that access. The README does not document which browsers are supported for the PWA connection, so treat that as something to confirm on your own machine before you rely on it in the field.

Installing the standalone build on Linux, Windows, macOS and Android

The README points to Releases for the standalone installers, with builds for Windows, Linux, Mac and Android. Windows 8 is stated as the minimum. For Linux the README gives a wget example against a specific release asset, then a set of prerequisites. The serial permission step is the one people miss: without it the App starts but cannot see the flight controller.

bash
sudo usermod -aG dialout ${USER}

After running that you must log out and log back in for the group change to take effect. The README also warns that installation can succeed while the App fails to start, because of a missing shared library, and gives the fix for Debian and Ubuntu:

bash
sudo apt install libatomic1

Two more Linux notes from the README: make sure /usr/share/desktop-directories exists before installing, and on Ubuntu 23.10, 24.10 and above follow the alternative steps the README lists, because some deprecated modules are no longer available through apt. On macOS the README documents a specific failure: recent macOS security changes produce an error saying the app is damaged and should be moved to the Trash. The stated workaround is to clear the quarantine attribute after installing. If fonts look smudged or the graphics are wrong, the README suggests launching the executable with --disable-gpu, or turning off your GPU's antialiasing option. The README does not document an uninstall procedure for any platform.

First run: language, connection, and the version that can corrupt your settings

The first screen asks for a language; the App otherwise tries to detect your system language and falls back to English if no translation exists. Translations are managed through Crowdin, and the README explicitly asks people not to open pull requests for translation changes. After that you connect to the board and configure it. One warning in the README deserves to be read twice. The unstable PWA snapshot at master.app.betaflight.com is described as intended for testing and feedback only, may be buggy or broken, and can cause flight controller settings to be corrupted. That is not a hedge, it is a stated failure mode: the bleeding-edge build writes to the same non-volatile storage your working configuration lives in. If you use it, do it on a board you can reflash and reconfigure from scratch. For development the README says to install the exact Node version in .nvmrc, and the package scripts give the usual entry points:

bash
npm run dev
npm run build
npm test

The test script runs vitest, and pretest runs the linter first, so a failing lint blocks the test run. The lint script itself runs eslint over src, scripts and the top-level .mjs files, then vue-tsc --noEmit for type checking.

Where the App is the wrong tool

The App assumes a Betaflight target. Point it at a board running a different firmware and the configuration model does not match. It is also the wrong tool for diagnosing a board that will not enumerate at all: if the operating system never sees the USB device, no amount of clicking in the App helps, and the Linux dialout group and libatomic1 steps above are the boundary of what the App's own documentation covers. The browser path adds another boundary. The README does not state which browsers can open a serial connection to a flight controller, so if your browser does not expose that capability, the PWA is a viewer rather than a configuration tool and you need the standalone installer instead. Finally, the App is not a translation contribution channel; the README routes that to Crowdin. Anyone who treats the repository as the place to fix a mistranslated string has misread the project.

Betaflight App compared with a plain serial terminal

The obvious alternative for a developer is a serial terminal such as screen or minicom talking to the CLI that Betaflight exposes over the same USB connection. The difference is the layer each one operates at. A terminal sends text commands and prints text back; it knows nothing about the firmware's configuration model, so it cannot validate a value before writing it or show you the current state of a setting in a structured way. The App parses that model and presents it as forms, which is why it can refuse a nonsensical value and why it can show you the whole configuration rather than one key at a time. The trade-off runs the other way too. A terminal works over any serial link and needs no browser, no installer and no GPU; the App needs a supported platform, a working serial permission and, on the PWA path, a browser that can reach the hardware. For scripted or headless work the terminal is the better fit. For a pilot setting up a new build, the App's structured view is the reason it exists.

Licence, release cadence and what upgrading costs you

The repository is GPL-3.0, and there is a DEFAULT_LICENSE.md and a LICENSE file at the top level. For anyone embedding or redistributing the App, that licence is the thing to read before shipping it inside a product; this is a statement about what the repository contains, not legal advice. On cadence, the last push to the default branch was on 2026-09-23 and the most recent release listed is 2026.6.2 from 2026-09-16, with 2026.6.1 and a 2026.6.0-RC3 before it. The version in package.json is 2026.12.0-alpha, which tells you the repository is ahead of the released build. The upgrade cost is not in the download. It is in the fact that a newer App can carry a newer firmware target list and different configuration defaults, and the README's own warning about the master snapshot shows the project treats pre-release builds as capable of corrupting settings. Back up your configuration before you move to a build you have not used before, and keep the installer for the version you know works.

Editorial conclusion

Adopt Betaflight App if you fly a Betaflight target and need to flash firmware, set up modes and tune rates, and prefer the PWA at app.betaflight.com so you are not chasing installers. Do not adopt it if you are looking for a general purpose serial terminal, or if you need a configuration tool for a different flight control firmware. Before you flash anything, verify three things: that your browser is Chromium-based for the Web Serial connection, that your Linux user has been added to the dialout group, and that the firmware target you intend to write matches your board, because the app will happily write whatever you select.

Frequently asked questions

Is Betaflight App free?

Yes. The repository is licensed GPL-3.0, and the README offers the App both as a web application at app.betaflight.com and as standalone installers from Releases at no cost.

Can I use Betaflight App on my phone?

The README states that standalone programs are provided for Windows, Linux, Mac and Android, and the App is a Progressive Web Application that the README says makes it easier to support phones and tablets. There is no iOS standalone build documented in the README.

How do I download Betaflight App?

Download the installer for your platform from the Releases page, or use the hosted version at app.betaflight.com without installing anything. The README describes the hosted build as the most recent release of the App.

What is the Betaflight App used for?

It is the configuration and management application for the Betaflight flight control system, used to configure the firmware running on supported Betaflight targets. The README notes that it and the firmware support quadcopters, hexacopters, octocopters and fixed-wing aircraft.

How do I install Betaflight App on Linux?

Download the installer from Releases, add your user to the dialout group with usermod -aG dialout, log out and back in, and install libatomic1, since the README warns the App will not start without it. The README also lists alternative steps for Ubuntu 23.10 and for 24.10 and above.

What is the latest version of Betaflight App?

The most recent release listed in the repository is 2026.6.2, published on 2026-09-16. The version in package.json is 2026.12.0-alpha, so the development tree is ahead of the released build.

Official sources

  1. betaflight/betaflight-configurator on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/betaflight-betaflight-configurator.svg)](https://hysenlabs.com/projects/betaflight-betaflight-configurator)