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

  1. Use a better power source. Try a known-good 5V USB charger (not a laptop port) and a short data cable.
  2. 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).
  3. Shorten and thicken power wiring. Treat power like it matters (because it does).
  4. 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