How the estimate works
A battery-powered node spends almost all of its life asleep. Every few minutes it wakes up, reads its sensors, turns on the radio to send the data and goes back to sleep. Runtime depends on the average current over one full cycle, not on the peaks.
I_avg = (I_active × t_active + I_radio × t_radio + I_sleep × t_sleep) / T
+ I_regulator + I_peripherals + I_self-discharge
runtime = usable capacity / I_avg
Self-discharge is converted into an equivalent constant current. A 2000 mAh LiPo losing about 2% per month behaves like an extra 55 µA load, more than five times what an ESP32 draws in deep sleep.
With the default preset (bare ESP32 module, HT7333 regulator, 2000 mAh LiPo, a wake-up every 15 minutes with 2 seconds of Wi-Fi) the average current is about 379 µA and the battery lasts roughly 6 months. Wi-Fi accounts for 70% of the charge, so shortening the connection is the most effective change.
Typical deep sleep currents
| Chip | Mode | Typical current |
|---|---|---|
| ESP32 | Deep sleep, RTC timer | ≈ 10 µA |
| ESP32-C3 | Deep sleep | ≈ 5 µA |
| ESP32-S3 | Deep sleep, RTC timer | ≈ 8 µA |
| ATmega328P (Uno, Nano, Pro Mini) | Power-down with watchdog | ≈ 4 µA |
| nRF52840 | System ON with RTC | ≈ 2–3 µA |
| RP2040 (Raspberry Pi Pico board) | Dormant | ≈ 0.8 mA |
Indicative chip-level values from manufacturer datasheets, at about 3.3 V and room temperature. A development board adds its regulator, LEDs and USB-serial chip, often hundreds of times more.
Why an ESP32 dev board drains the battery in deep sleep
The ESP32 chip drops to about 10 µA, but a typical DevKit keeps drawing several milliamps. The AMS1117 regulator alone takes about 5 mA of quiescent current, the power LED stays lit and the USB-serial chip stays powered. On a 2000 mAh LiPo that turns months into about a week.
Pick the "ESP32 DevKit as-is" preset above to see the difference. For battery use, move to a bare module or a board designed for low power, with a low-quiescent regulator such as an MCP1700 or HT7333.
Frequently asked questions
How long does an ESP32 last on a battery?
It depends mostly on how often it wakes up and how long Wi-Fi stays on. A bare ESP32 module with a low-quiescent regulator, waking every 15 minutes for about 2 seconds of Wi-Fi, lasts around 6 months on a 2000 mAh LiPo, and more than a year if it wakes once an hour. A development board used as-is lasts about a week.
Can I power an ESP32 from a CR2032 coin cell?
Not reliably with Wi-Fi. Transmission peaks go above 200 mA, while a CR2032 is designed for loads of a few milliamps, so the voltage collapses and the chip resets. For coin cells use a BLE chip such as the nRF52, or switch to a LiPo or AA cells.
Which voltage regulator should I use for a battery-powered ESP32?
A low-dropout regulator with low quiescent current, such as an MCP1700 (about 1.6 µA) or an HT7333 (about 4 µA). Check that its maximum output current suits the Wi-Fi peaks and add a bulk capacitor close to the module. Avoid the AMS1117 found on many boards: it draws about 5 mA even with no load.
How do I measure deep sleep current?
A multimeter in series on the µA range works for the sleep current, but its shunt can drop enough voltage to reset the board when it wakes up. A power profiler such as Nordic’s PPK2 records the whole cycle, from microamps to hundreds of milliamps, and its numbers can go straight into this calculator.
Why does battery self-discharge matter?
With long wake-up intervals the average current becomes so small that the battery’s own losses dominate. A LiPo losing 2% a month equals about 55 µA on 2000 mAh. For multi-year runtime, a Li-SOCl₂ primary lithium cell loses around 1% a year.