Introduction
ElegantOTA is a C++ library that serves a web portal for over-the-air firmware and filesystem updates on ESP32, ESP8266, RP2040 and RP2350.
ElegantOTA adds an over-the-air (OTA) update portal to your microcontroller. The portal is served by the device itself at /update: you select a .bin file, the portal checks that it fits the target flash region, and the device writes it while the portal reports progress and the result. You do not need to write HTML, CSS or JavaScript; the integration takes three lines of code.
ayushsharma82/ElegantOTA

Key capabilities
- Three-line integration: include the library, call
ElegantOTA.begin()and callElegantOTA.loop(). - Firmware and filesystem updates: write a firmware image or a LittleFS/SPIFFS filesystem image.
- Capacity check: the portal compares the image size with the target region before any data is written, and refuses an image that does not fit.
- Integrity verification: the portal computes the MD5 digest of the file in the browser, and the device rejects the update if the written data does not match.
- Progress and status: live progress, transfer rate and byte counts during the update.
- HTTP Basic Authentication: optional username and password protection for the portal and its endpoints.
- Synchronous or asynchronous web server: works with the platform's built-in
WebServeror withESPAsyncWebServer. - Light and dark portal themes.
Supported boards
| Platform | Notes |
|---|---|
| ESP32 | Including the ESP32-S2, ESP32-S3, ESP32-C3 and ESP32-C6 variants. |
| RP2040 (Raspberry Pi Pico W) | Requires a LittleFS partition. |
| RP2350 (Raspberry Pi Pico 2 W) | Requires a LittleFS partition. |
| ESP8266 | Maintained for existing projects. Prefer ESP32 or RP2350 for new designs. |
RP2040 and RP2350
These boards stage the incoming image inside the filesystem region, so a LittleFS partition is mandatory. In the Arduino IDE, select a flash layout with a filesystem, for example Tools > Flash Size > 2MB (Sketch 1MB, FS 1MB). ElegantOTA requires a board with a Wi-Fi chip, such as the Pico W or Pico 2 W; on an RP2040 or RP2350 board without Wi-Fi, ElegantOTA.begin() does not register any routes.
ElegantOTA Lite and ElegantOTA Pro
This documentation covers both editions of ElegantOTA. ElegantOTA Lite is open source and licensed under AGPL-3.0. ElegantOTA Pro is a commercial edition that adds:
- Two additional OTA modes: Direct Download, in which the device downloads firmware from a URL, and Auto Update, in which the device checks an update channel on a schedule.
- Runtime control over the available OTA modes and update targets.
- Hardware ID, firmware version and a custom title in the portal.
- Custom branding.
- A commercial license.
Pages for features that are available only in ElegantOTA Pro are marked accordingly. See Commercial License for a comparison, or visit store.softt.io.
