NetWizard is a user-friendly yet robust WiFi manager and captive portal library for wireless microcontrollers. Eliminate the trouble of hard-coding WiFi credentials by letting NetWizard handle the networking for your device!
Additionally, NetWizard lets you create a custom configuration page of your choice which is shown at the time of setup. The possibilities are endless!
- 🛜 No hard-coded WiFi credentials
- ⚙️ Create a custom configuration page using just C++
- ⚡ Intuitive step-by-step setup flow which makes user interaction easier
- 📱 Responsive portal, full-screen on phones and a focused card on desktop
- 🌐 Available in 12 languages (with right-to-left support) and a language picker for your users
- 📍 Shows the device's network and IP address once it's connected
- 🎷 No need to learn HTML/CSS/JS
- 🛫 Ready to use within 4-5 lines of code
NetWizard works on the following microcontrollers/boards:
- ESP32
- RP2040 + W (Pico W etc.)
- RP2350 + W (Pico 2W etc.)
- ( more coming soon )
Learn more about Installation & Usage: Click Here
Once you have integrated NetWizard library in your code, you can connect to your device's AP and then this captive portal will pop up for you to configure your device:
On a laptop or desktop, the same steps appear in a centered card:
Ask for your own settings on the portal's last step. Each field has a type, so you get the value back as that type:
NetWizardHeader mqtt(&NW, "MQTT");
NetWizardInput host(&NW, "Host", "", "mqtt.example.com"); // String
NetWizardInput port(&NW, "Port", 1883); // int
NW.onConfig([&]() {
String h = host.getValue();
int p = port.getValue();
return true; // return false to reject the values
});NetWizardInput holds a String, int, float or double. Numeric fields bring up the number keyboard and are checked on the device, so a value that doesn't parse is rejected instead of being saved. NetWizardDivider and NetWizardSpacer add separation between fields.
The portal is translated into English, Spanish, French, German, Portuguese, Italian, Russian, Chinese, Japanese, Korean, Arabic and Hindi. By default it follows the language of the visitor's browser, and visitors can switch it from the language picker next to the close button.
To choose the default language yourself, call setLanguage() before autoConnect():
NW.setLanguage("hi"); // en, es, fr, de, pt, it, ru, zh, ja, ko, ar or hiA language the visitor picks is remembered on their device and takes priority over this default.
Netwizard Pro comes with the following extended functionality:
- Static IP configuration (set from code or by your users in the portal)
- Exclusive settings fields (password, toggle and textarea)
- Links
- Statistics
- Whitelabel / Branding
- UI Source
- Softt Commercial License 1.3
Available here:
Every contribution to this repository is highly appreciated! If you spot any bug or problem, open a issue or pull request so that it can be rectified for everyone.
For feature requests: Please open a issue and I'll add the feature in a future release once I get some time in my hands.
NetWizard open-source edition is licensed under Affero General Public License v3.0 ( AGPL-3.0 ).
If you are intending to use NetWizard in a commercial project, please consider purchasing NetWizard Pro which comes with a less restrictive SOFTT Commercial License 1.3 (SCL-1.3).


