WiFiManager is a WiFi connection manager library for ESP8266 and ESP32 microcontrollers that provides a captive portal for network configuration.
The library solves the problem of configuring WiFi credentials on embedded devices without hardcoding them. When an ESP starts, it attempts to connect to a previously saved access point in station mode. If no saved network exists or connection fails, the device switches to access point mode and launches a web server with a captive portal. Users can connect to this access point from any WiFi-enabled device, and the captive portal automatically redirects browser traffic to a configuration page where they can select a network and enter credentials. The device then attempts connection and returns control to the application if successful.
The tool suits projects where WiFi configuration must happen in the field without serial console access or pre-programmed credentials. It works with both the ESP8266 Arduino platform and ESP32 Arduino platform. The library supports custom parameters beyond SSID and password, allowing developers to configure application-specific settings through the same portal. It offers non-blocking modes for integration into existing application loops and can be triggered on-demand rather than only at startup. The configuration portal can be password-protected and includes options to filter low-quality networks and customize IP configuration.
The project acknowledges that its documentation is out of date and identifies this as a known issue requiring attention. Development activity includes ongoing code cleanup and streamlining efforts. The maintainers have completed several wishlist items including removing EEPROM dependencies, moving HTML strings to program memory, and adding the library to both Arduino Library Manager and PlatformIO, though some items like multiple credential sets and documentation rewrite remain incomplete.