Why does my ESP32 reboot or crash when connecting to WiFi or using high current?

The ESP32 is fast, but it's also picky about power. WiFi creates current spikes, and high-current loads create voltage drops and noise. Put those together on a weak supply and you get resets, crashes, and random behavior.

How to prove it's power (fast test)

  1. Disconnect motors/servos/LED strips and run the ESP32 on USB only.
  2. Move the ESP32 close to your router and connect to WiFi.
  3. If it becomes stable with “just USB,” your project power wiring is the problem.

The usual causes

  • Sharing a weak 5V rail between ESP32 and motors/LEDs.
  • Voltage drop in wiring (thin jumper wires, long runs, bad breadboard rails).
  • No bulk capacitor near the ESP32.
  • Noise/back-EMF from motors/relays coupling into the logic supply.

Fixes that work in real builds

  1. Give the ESP32 its own stable 5V source (or a buck converter with headroom).
  2. Share ground between supplies (GND to GND).
  3. Add a capacitor near the ESP32. 470µF-1000µF is a good starting range for “WiFi + stuff.”
  4. Keep noisy loads off the logic rails. Use drivers/transistors/relays properly and add flyback diodes where needed.

Quick rule

If the reset happens exactly when “the power changes” (WiFi connects, motor starts, LEDs brighten), treat it as power/noise until proven otherwise.

If you're seeing brownout messages

If Serial Monitor mentions brownout, that's the ESP32 calling out a voltage dip directly. Fix power first.

Bottom line

WiFi + high-current loads expose weak power fast. Separate supplies (with shared ground), add bulk capacitance near the ESP32, and keep noisy loads off the logic rails.

Related: Brownout detector reset · USB vs external power · External power safely