What is brownout detector reset on ESP32 and how do I fix it?
If your Serial Monitor shows something like Brownout detector was triggered, the ESP32 is telling you: my supply voltage dropped too low, so I reset to protect myself.
Why it happens (especially with WiFi)
- WiFi is spiky. Connecting and transmitting pulls short bursts of current. A weak supply sags.
- Weak USB ports/cables. Thin cables and hubs can drop voltage under load.
- Undersized/cheap regulators. Some dev boards have marginal 3.3V regulation.
- Long jumper wires. Resistance adds up. Voltage at the ESP32 can be lower than what you “think” you're feeding it.
Fixes that actually stop brownouts
- Use a better power source. Try a known-good 5V USB charger (not a laptop port) and a short data cable.
- Add bulk capacitance near the board. Start with 470µF-1000µF across 5V and GND near the ESP32 (plus the usual 0.1µF decoupling).
- Shorten and thicken power wiring. Treat power like it matters (because it does).
- Separate “noisy loads.” Motors/servos/LED strips should not share the same weak 5V rail without planning.
Quick check
If brownouts happen when WiFi starts, you almost certainly have a power sag. Fix power first before chasing code bugs.
What not to do
- Don't “fix” it by disabling brownout detection unless you're debugging and you understand the tradeoff. You're masking a real power problem.
- Don't power big loads from the ESP32 3.3V pin. It's not a bench supply.
Bottom line
Brownout resets are voltage dips. Use a stronger 5V source, better wiring, and add bulk capacitance near the ESP32. If the reset lines up with WiFi activity, it's almost always power.
Related: USB vs external power · How do I use external power safely? · ESP32 reboots when connecting to WiFi