It varies a lot—by MCU family, clock speed, voltage, peripherals, and sleep mode. Also: the MCU chip current is often much lower than the [dev board](https://www.onzuu.com/category/development-boards-kits-programmers) ([Arduino](https://www.ampheo.com/c/development-board-arduino)/ESP board) current because boards add regulators, USB chips, LEDs, etc.

**Typical current ranges (rule-of-thumb)**
**Active (CPU running)**
* Ultra-low-power MCUs ([STM32L](https://www.ampheo.com/search/STM32L) / [MSP430](https://www.ampheo.com/search/MSP430) / nRF in CPU-only mode): ~0.1–5 mA
* Mainstream 8-bit / Cortex-M MCUs (AVR, [PIC](https://www.ampheo.com/search/PIC), [STM32F](https://www.ampheo.com/search/STM32F), [SAMD](https://www.ampheo.com/search/SAMD)): ~2–30 mA
* High-performance MCUs (fast clocks, lots of peripherals): ~10–100 mA
**Sleep / standby**
* Sleep (RAM kept, wake on interrupt): ~1–50 µA (often)
* Deep sleep / standby: ~0.05–5 µA (good low-power parts)
* Worst case cheap/older parts: can be tens to hundreds of µA even in sleep
**Wireless MCUs (important special case)**
Wi-Fi/BLE transmit bursts (ESP32-class): typically 80–300+ mA in bursts
Average can still be low if it sleeps most of the time.
**What determines the current**
1. Supply voltage (V): higher V usually increases power.
2. Clock frequency (f): faster clock → more current.
3. Peripherals: [ADC](https://www.onzuu.com/category/analog-to-digital-converters), timers, USB, crypto, displays, etc. add current.
4. I/O loading: LEDs, pull-ups, driving low-impedance loads can dominate.
5. Sleep strategy: most battery designs rely on spending 99% time asleep.
**Don’t forget I/O current (often the “real” drain)**
An MCU might only need a few mA, but:
* A single LED at 5–10 mA already matches/exceeds the CPU.
* Multiple GPIO outputs, [sensors](https://www.ampheo.com/c/sensors), level shifters, and pull-ups add up.
Also check datasheet limits:
* Max current per pin
* Max total current for all pins (and per port)
**How to estimate average current (battery planning)**
Use duty cycle:
𝐼𝑎𝑣𝑔=∑(𝐼𝑖⋅𝑡𝑖)/𝑇
Example: 10 mA for 10 ms each second + 10 µA sleep for the rest
→ 𝐼𝑎𝑣𝑔≈(10𝑚𝐴⋅0.01𝑠+0.01𝑚𝐴⋅0.99𝑠)/1𝑠≈0.11𝑚𝐴
**Quick “sanity” examples**
* Bare [MCU](https://www.ampheoelec.de/c/microcontrollers) doing simple control at moderate clock: often a few mA.
* [Arduino Uno](https://www.ampheo.com/product/a000046-25542493) board powered from USB: often tens of mA even if your sketch is idle (board overhead).
* ESP32 with Wi-Fi active: can spike hundreds of mA during TX, so size your regulator accordingly.
**Best way to know for your case**
Check the datasheet tables for:
* Run current at your V and f
* Sleep/stop/standby current
* Peripheral adders (ADC, USB, etc.)