Parts
ESP32 and ESP32-WROOM-32E: pinout, strapping pins, ratings and a minimal circuit
By Bulan Sarkar
On the ESP32-WROOM-32E module, pad 2 is 3V3, pad 3 is EN, pads 1, 15 and 38 are ground, and GPIO0, the BOOT pin, is pad 25. The whole part runs on 3.0 to 3.6 V and no pin is rated for 5 V. Five GPIOs are read at reset to choose how the chip starts (GPIO0, GPIO2, GPIO12, GPIO15, GPIO5), GPIO34 to GPIO39 are inputs only, and readings on the ADC2 pins can fail while Wi-Fi is on.
This page covers which ESP32 you are holding, the pad map of the WROOM-32E and the QFN pinout of the ESP32-D0WD-V3 chip inside it, the strapping pins and boot modes, the limits in Espressif's ESP32 Series Datasheet v5.3 and the module datasheet v2.1, the current the radio pulls, and a minimal working circuit with its numbers worked out.
Datasheet: Espressif ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet (PDF)Ask Datasheet Guru about the ESP32-PICO-D4
Pinout by package
Top view, pin 1 (VDDA) top left: pins 1 to 14 down the left side, 15 to 24 along the bottom, 25 to 38 up the right, 39 to 48 back along the top; pin 49 is the ground pad underneath.
GPIO6 to GPIO11 (pins 28 to 33) are the flash bus. Leave them to the flash.
Source: Espressif ESP32 Series Datasheet, p. 11 (Table 1-1: ESP32-D0WD-V3 is dual core, chip revision v3.0/v3.1, no in-package flash, QFN 5*5); Espressif ESP32 Series Datasheet, p. 13 (Figure 2-2, ESP32 pin layout, QFN 5*5 top view); Espressif ESP32 Series Datasheet, p. 14 (Table 2-1, pin overview, pins 1 to 21); Espressif ESP32 Series Datasheet, p. 15 (Table 2-1, pins 22 to 47); Espressif ESP32 Series Datasheet, p. 61 (Table 6-1 note 2: GPIO34 to 39 are input-only, with no output driver and no pull-up or pull-down)
Top view, antenna end up: pads 1 to 14 down the left edge, 15 to 24 along the bottom, 25 to 38 up the right edge; pad 39 is the ground pad underneath. Pad pitch 1.27 mm.
Pad 14 (IO12) must be low at power-up, or the chip sets its flash supply to 1.8 V and will not boot.
Source: Espressif ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet, p. 10 (Figure 3, pin layout, top view, with the antenna keep-out zone); Espressif ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet, p. 11 (Table 3, pin definitions, pads 1 to 27); Espressif ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet, p. 12 (Table 3 continued, pads 28 to 38; note 2: GPIO6 to GPIO11 go to the module flash and are not led out); Espressif ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet, p. 40 (Figure 10, module dimensions: 18.0 × 25.5 × 3.1 mm, 38 pads at 1.27 mm pitch)
Which one do you have?
"ESP32" is printed on three different things. The chip is a 5 × 5 mm QFN with 48 pins and a ground pad; the current one is the ESP32-D0WD-V3: dual core, no flash inside, chip revision v3.0 or v3.1. The module is that chip under a metal shield with its 40 MHz crystal, the flash and an antenna, on a small board with 38 castellated pads; the one to buy is the ESP32-WROOM-32E. The dev board is a module plus a USB-serial chip, a regulator and two buttons, with pin headers. Its header labels are the module's GPIO numbers, so the module pad map below is the one to read.
The suffix on a WROOM-32E is the memory: -N4, -N8 and -N16 carry 4, 8 or 16 MB of flash, an R2 adds 2 MB of PSRAM (and then GPIO16 belongs to the PSRAM), and -H4 or -H8 are rated to 105 °C instead of 85 °C. The WROOM-32UE is the same module with an antenna connector. The older ESP32-WROOM-32 has the same pads but an older chip, and Espressif no longer recommends it for new designs. Espressif makes all of them; there is no second maker of the ESP32 to compare.
ESP32-WROOM-32E module pinout
The module has 38 pads at 1.27 mm pitch plus a ground pad underneath, on a board 18.0 × 25.5 mm. The pitch is half that of a breadboard, so the module needs a breakout or its own PCB. Pads 17 to 22 and 32 are not connected: inside the module, GPIO6 to GPIO11 go to the flash and are not brought out (module datasheet p. 12).
Of the 26 GPIOs on the pads, 4 are inputs only (pads 4 to 7), 5 are strapping pins, and GPIO1 and GPIO3 are the serial port that loads the firmware and prints the boot log. That leaves 15 pins with no job at reset (Figure 4). Pad 14, GPIO12, is the one to treat with care: the reference schematic on p. 39 prints "IO12 should be kept low when the module is powered on".
ESP32-D0WD-V3 chip pinout (QFN-48)
The bare chip is for your own RF board, with a crystal, flash and a matched antenna line; most projects never touch it. Its 48 pins count anticlockwise from pin 1 at the top left, 14 down each side and 10 across the top and bottom, with the ground pad as pin 49. Here GPIO6 to GPIO11 come out as the SD_ pins 28 to 33, and they are the bus to the external flash.
The chip has four supply domains: VDDA and VDD3P3 for the analog and radio parts, VDD3P3_RTC for the RTC pins, VDD3P3_CPU for the digital pins, and VDD_SDIO, an output that feeds the flash at either 1.8 V or the RTC supply voltage (pp. 17 to 19). On the module the only supply pad is 3V3.
Strapping pins and boot modes
At reset the chip latches the level on five pins and keeps it until the next reset. After that the pins are ordinary GPIOs again. Each has an internal pull-up or pull-down that sets its default, so a pin left unconnected gives the normal start-up. Anything you wire to these pins must not overpower that default while EN rises and for 1 ms after (the hold time tH, p. 23).
GPIO0 picks the boot mode. Held high, which its pull-up does, the chip runs the program in flash. Held low at reset, with GPIO2 also low, it waits for new firmware over the serial port; that is all the BOOT button on a dev board does. GPIO12 (MTDI) sets the voltage of the flash supply: low gives 3.3 V, high gives 1.8 V. The WROOM-32E's flash runs on 3.3 V, so a sensor or pull-up that holds GPIO12 high at power-up starves the flash and the module will not boot. GPIO15 (MTDO) low only silences the boot messages, and GPIO5 matters only to SDIO slave timing.
Which GPIOs to use: input-only pins and ADC2
GPIO34 to GPIO39 are inputs only. They have no output driver and no internal pull-up or pull-down (ESP32 Series Datasheet p. 61), so a button on one of them needs its own resistor. They are fine for analog sensors and for signals you only read.
ADC2 shares its hardware with the Wi-Fi driver. Espressif's ESP-IDF guide (v6.1, ADC oneshot driver) says ADC2 is also used by Wi-Fi and that a read can fail with a timeout while another driver holds it. So if the project uses Wi-Fi, read analog only on the 6 ADC1 pads: GPIO32 to GPIO36 and GPIO39 (GPIO37 and GPIO38 exist only on the bare chip). Of those, GPIO32 and GPIO33 are also free outputs; the other four are the input-only pins. The 10 ADC2 pads still work as digital pins.
The ADC itself reads 150 to 2450 mV at its widest attenuation, with up to ±60 mV of error after eFuse calibration (p. 44). A 3.3 V signal needs a divider to fit; see the voltage divider calculator.
Absolute maximum ratings
With one maker, the comparison here is the chip against the module. They agree on the one that matters: 3.6 V is the ceiling on every supply pin. The module's storage limit is lower (105 °C against 150 °C) because of the flash and the board, and the module datasheet does not repeat the chip's 1200 mA limit on total I/O current. Design to the module's figures when you use the module.
| Parameter | ESP32-D0WD-V3QFN-48 | ESP32-WROOM-32EModule-38 |
|---|---|---|
| Supply voltage, absolute maximum | −0.3 to 3.6 V (all supply pins) | −0.3 to 3.6 V (VDD33) |
| Cumulative I/O output current | 1200 mA | not listed; the chip figure applies |
| Storage temperature | −40 to 150 °C | −40 to 105 °C |
| ESD, human body model | ±2000 V | ±2000 V |
| ESD, charged device model | ±500 V | ±500 V |
There is no 5 V tolerance anywhere. An input may sit at most 0.3 V above the I/O supply (Table 5-3, p. 52), which on a 3.3 V module is 3.6 V. A 5 V Arduino output or a 5 V sensor wired straight to a GPIO is outside the rating (the logic levels lesson explains the thresholds). Use a divider or a level shifter; the 3.3 V to 5 V level shifter guide covers both directions.
Supply, pin levels and current
| Parameter | ESP32-D0WD-V3QFN-48 | ESP32-WROOM-32EModule-38 |
|---|---|---|
| Supply voltage, operating | 2.3 to 3.6 V, 3.3 V typ (3.0 V min with in-package flash or PSRAM) | 3.0 to 3.6 V, 3.3 V typ |
| Supply current the source must deliver | 0.5 A min | 0.5 A min |
| Operating temperature | −40 to 125 °C | −40 to 85 °C; −40 to 105 °C for the -H4 and -H8 |
| CPU clock | up to 240 MHz, two cores | 80 to 240 MHz, two cores |
| Flash | none inside; external QSPI on GPIO6 to 11 | 4, 8 or 16 MB quad SPI, on GPIO6 to 11 |
| GPIOs available | 34 | 26 on the pads |
| High-level input voltage VIHVDD = 3.3 V, 25 °C | 0.75 VDD to VDD + 0.3 V | 0.75 VDD to VDD + 0.3 V |
| Low-level input voltage VILVDD = 3.3 V, 25 °C | −0.3 V to 0.25 VDD | −0.3 V to 0.25 VDD |
| Output high / low voltage VOH / VOL | 0.8 VDD min / 0.1 VDD max | 0.8 VDD min / 0.1 VDD max |
| Source current per pin, typical IOHVOH ≥ 2.64 V, maximum drive strength | 40 mA (CPU and RTC domains), 20 mA (SDIO domain) | 40 mA (CPU and RTC domains), 20 mA (SDIO domain) |
| Sink current per pin, typical IOLVOL = 0.495 V, maximum drive strength | 28 mA | 28 mA |
| Internal pull-up / pull-down RPU / RPD | 45 kΩ typ | 45 kΩ typ |
| EN (CHIP_PU) thresholds | runs above 0.75 VDD, shuts down below 0.6 V | runs above 0.75 VDD, shuts down below 0.6 V |
| Rails stable before EN rises / EN low to reset tSTBL / tRST | 50 µs min / 50 µs min | 50 µs min / 50 µs min |
| Strapping pin hold after EN rises tH | 1 ms min | 1 ms min |
| Current, Wi-Fi transmit 802.11b1 Mbps, +19.5 dBm, 3.3 V, 25 °C | 240 mA typ (50% duty) | 239 mA average, 379 mA peak (100% duty) |
| Current, Wi-Fi receive | 95 to 100 mA | 112 mA (20 MHz), 118 mA (40 MHz) |
| Current, modem-sleep240 MHz, dual core, radio off | 30 to 68 mA | not listed; refers to the chip |
| Current, deep-sleepRTC timer and RTC memory on | 10 µA | not listed; refers to the chip |
| ADC | 2 × 12-bit SAR, 18 channels | 2 × 12-bit SAR, 16 channels on the pads |
| ADC error after eFuse calibrationatten = 3, 150 to 2450 mV | ±60 mV | ±60 mV |
The pin figures are typical, not limits: Espressif gives 40 mA source and 28 mA sink at maximum drive strength, and the source figure falls toward 29 mA per pin as more pins source current at once (p. 52, note 2). At 3.3 V an input reads high above 2.47 V and low below 0.82 V, and a high output is guaranteed only down to 2.64 V.
The radio is what sizes the power supply. Transmitting 802.11b at full power, the module averages 239 mA and peaks at 379 mA, 140 mA above its own average, in bursts as packets go out. That is why both datasheets ask for a supply that can deliver 500 mA, and why the reference schematic puts 22 µF on the 3V3 pad. The chip table (p. 52) gives 240 mA for the same mode, but measured at 50% duty; the module table is the one to size a supply from.
What it is good for
- Anything that needs Wi-Fi or Bluetooth with a real processor behind it: sensor nodes that report to a server, web-controlled relays, data loggers, small displays.
- Battery sensors that wake, send and sleep. Deep sleep with the RTC timer running is 10 µA (chip p. 30), but the regulator and anything else on the board are added to that.
- Jobs needing more than an ATmega328P has: two cores at up to 240 MHz, three UARTs, touch inputs on ten pins, and two 8-bit DACs on GPIO25 and GPIO26.
It is a poor fit for a project that must run from 5 V logic without level shifting, needs more than a handful of analog inputs alongside Wi-Fi, or must run for months on coin cells while transmitting often. For a 5 V AVR with simpler power needs, see the ATmega328P page.
Worked example: a minimal ESP32-WROOM-32E board
The smallest circuit that runs a bare WROOM-32E from a 5 V USB supply, programs over serial and lights an LED: an AMS1117-3.3 regulator, two capacitors on the rail, an RC delay on EN with a reset button, a BOOT button on GPIO0, and an LED on GPIO23, a pin with no role at reset.
1. Check the regulator's headroom. The AMS1117 drops up to 1.25 V at 500 mA (see the AMS1117 page), so it holds 3.3 V as long as its input stays above 3.3 + 1.25 = 4.55 V. From 5 V that leaves 0.45 V of margin for the USB cable's drop.
2. Work out the regulator's heat. At the 239 mA transmit average, with its own 10 mA ground-pin current: (5 − 3.3) V × 239 mA + 5 V × 10 mA = 0.456 W. At 135 °C/W in SOT-223 that is a 61.6 °C rise, so 96.6 °C at the junction in a 35 °C room: inside its 125 °C limit even if the radio transmits without a break. The 379 mA bursts reach 0.694 W, but only for the length of a packet.
3. Size the bulk capacitor. The reference schematic fits 22 µF and 0.1 µF on the 3V3 pad. With the regulator ignored, 22 µF alone carries the 379 mA peak for 22 µF × (3.3 − 3) V / 379 mA = 17.4 µs before the rail falls to the module's 3.0 V minimum. A 10 µF part would last 7.9 µs. The capacitor covers the regulator's reaction time; place it right at the 3V3 pad, not at the regulator.
4. Delay EN. The module datasheet recommends 10 kΩ and 1 µF on EN (p. 39). The time constant is 10 kΩ × 1 µF = 10.0 ms. EN releases the chip at 0.75 × 3.3 V = 2.475 V, which it reaches after −RC × ln(1 − 0.75) = RC × ln 4 = 13.9 ms. (The RC time constant lesson derives the ln 4.) The datasheet needs only 50 µs of stable supply before EN rises (tSTBL), so the delay is 277 times that. The reset button shorts the capacitor; while it is held the resistor passes 0.3 mA.
5. Leave the strapping pins alone. GPIO0 has its internal pull-up, so the BOOT button only needs to pull it to ground; GPIO12 stays unconnected so its pull-down keeps the flash at 3.3 V. Nothing in this circuit touches GPIO2, 5 or 15.
6. Size the LED resistor. A red LED drops about 2.0 V. For 10 mA or less from a 3.3 V pin, R ≥ (3.3 − 2.0) V / 10 mA = 130 Ω; the next E12 value up is 150 Ω. With the pin at the full rail the LED gets 8.7 mA; with the pin at its guaranteed minimum high, 2.64 V, it gets (2.64 − 2.0) V / 150 Ω = 4.3 mA. Either way it lights, and it is well under the pin's 40 mA typical.
To load firmware, hold BOOT, tap RESET, then let go of BOOT: the chip starts with GPIO0 low and waits on the serial port. For powering a board from USB, a wall adapter or a battery, see how to power an ESP32 or Arduino, and the RC time constant calculator for other EN values.
Worked example in numbers
- Lowest 5 V input that holds 3.3 V
- 4.55 V
- Regulator heat, transmit average
- 0.46 W
- EN release after power-up
- 13.9 ms
- LED current, GPIO23
- 4.3 mA to 8.7 mA
Tips and checks
- Put the 22 µF capacitor at the 3V3 pad. Resets the moment Wi-Fi connects usually mean the supply or its wiring cannot follow the 379 mA bursts.
- Keep copper, ground pour and metal away from the antenna end of a WROOM-32E. The module datasheet marks a keep-out zone (p. 10); the 32UE has none because its antenna is off the board.
- Use GPIO34 to 39 for buttons only with an external pull-up or pull-down: they have none inside.
- Pick analog inputs from ADC1 (GPIO32 to 36 and GPIO39 on the module) if Wi-Fi is on, and expect ±60 mV even after calibration.
- For loads above a few milliamps, relays or motors, switch through a transistor; the MOSFET guide for Arduino and ESP32 picks one that turns on fully from 3.3 V.
- Never connect anything to GPIO6 to 11 on a bare chip design unless it is the flash. On the module they are not brought out, which settles it.
Substitutes: WROOM-32UE, WROOM-32 and the D0WD
The WROOM-32UE drops into a WROOM-32E footprint. The older WROOM-32 fits too, as long as nothing on the board uses pads 17 to 22. Newer chips such as the ESP32-S3 and ESP32-C3 are different parts with different pinouts and are not substitutes.
| Part | Pins | Verdict |
|---|---|---|
| ESP32-WROOM-32UE | Same 38 pads | The same module with a connector for an external antenna instead of the PCB antenna. Same pads, same flash options, same datasheet; it is shorter (19.2 mm) and needs no antenna keep-out on the board.Espressif ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet, p. 3; Espressif ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet, p. 10 |
| ESP32-WROOM-32 | Same 38 pads | Same footprint and pad names, but Espressif marks it not recommended for new designs. It carries the older ESP32-D0WDQ6 chip, and pads 17 to 22 are wired to its flash, where the 32E has no connection. Fits a 32E footprint if nothing on the board uses those six pads.Espressif ESP32-WROOM-32 Datasheet (NRND), p. 3; Espressif ESP32-WROOM-32 Datasheet (NRND), p. 9; Espressif ESP32-WROOM-32 Datasheet (NRND), p. 10 |
| ESP32-D0WD (chip) | Same QFN 5 × 5 | Same package and pinout as the D0WD-V3, but the older chip revision v1.0/v1.1, and not recommended for new designs. Espressif lists the differences between revisions in its ESP32 Series SoC Errata, so read that before swapping.Espressif ESP32 Series Datasheet, p. 11; Espressif ESP32 Series Datasheet, p. 13 |
Bench check: will it boot, and why not?
- With power on, measure 3.3 V on pad 2 against ground, and 3.0 V or more there while Wi-Fi is transmitting. A rail that dips below 3.0 V needs a bigger supply or the bulk capacitor moved closer.
- Measure EN. It must sit above 2.47 V; anything near 0.6 V or below holds the chip off.
- Connect a USB-serial adapter to TXD0 and RXD0 and press RESET. With GPIO15 left unconnected the chip prints its boot log on TXD0; no output at all means it is not starting.
- If it boots without your circuit but not with it, measure GPIO0, 2 and 12 during reset. GPIO12 above 2.47 V at that moment is the fault.
What we'd do
Use the ESP32-WROOM-32E (or the 32UE if the board sits in a metal box) rather than the bare chip. Feed it from a regulator that can deliver 500 mA with 22 µF at the 3V3 pad, put 10 kΩ and 1 µF on EN, and keep GPIO12 low at power-up. Read analog on ADC1 if Wi-Fi is on, level-shift anything 5 V, and plan outputs on the 15 pins with no role at reset before touching the strapping pins.
Questions people ask
What is the ESP32-WROOM-32E pinout?
Pad 1 GND, 2 3V3, 3 EN, 4 and 5 GPIO36 and GPIO39, 6 to 14 GPIO34, 35, 32, 33, 25, 26, 27, 14, 12, 15 GND, 16 GPIO13, 17 to 22 not connected, 23 GPIO15, 24 GPIO2, 25 GPIO0, 26 GPIO4, 27 GPIO16, 28 GPIO17, 29 GPIO5, 30 GPIO18, 31 GPIO19, 32 not connected, 33 GPIO21, 34 RXD0, 35 TXD0, 36 GPIO22, 37 GPIO23, 38 GND.
Is the ESP32 5 V tolerant?
No. Its supply maximum is 3.6 V and an input may go only 0.3 V above the I/O supply, 3.6 V on a 3.3 V board. Divide or level-shift 5 V signals.
Which ESP32 pins are strapping pins?
GPIO0, GPIO2, GPIO5, GPIO12 (MTDI) and GPIO15 (MTDO). GPIO0 and GPIO2 choose run or download, GPIO12 sets the flash voltage, GPIO15 turns the boot log on or off, and GPIO5 with GPIO15 sets SDIO slave timing.
Why can't I read ADC2 pins with Wi-Fi on?
The Wi-Fi driver also uses ADC2, and Espressif's ESP-IDF guide says an ADC2 read can fail with a timeout while another driver holds the unit. Use the ADC1 pins, GPIO32 to GPIO36 and GPIO39 on the module, for analog readings in a Wi-Fi project.
How much current does an ESP32 need?
Plan on 500 mA from the supply. The WROOM-32E averages 239 mA transmitting at full power with peaks of 379 mA, receives at about 112 mA, and deep sleep on the chip is 10 µA.
Can GPIO34 to GPIO39 be outputs?
No. They have no output driver and no internal pull-up or pull-down. Use them as inputs, with an external resistor for a button.
Buying the ESP32 in India
Indian shops sell far more ESP32 dev boards than bare modules, and many are listed only as "ESP32" with a photo. Read the print on the metal shield: ESP32-WROOM-32E (or 32UE) is the current module; plain ESP32-WROOM-32 is the older one. A listing that says "30-pin" or "38-pin" describes the dev board's headers, not the module. For a board of your own, buy the bare module with its flash size in the part number (-N4 is plenty for most projects). Our guide to buying electronic components in India compares ten online sellers and covers how to spot fakes.
One email a month from the bench
New circuits, lessons, part guides and calculators, on the first Sunday of each month.
Used in these lessons
Lessons that go deeper
Datasheets this page was checked against
- Espressif, ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet (Version 2.1, 2026-08-05)
- Espressif, ESP32 Series Datasheet (Version 5.3, 2026.07)
- Espressif, ESP32-WROOM-32 Datasheet (NRND) (Version 3.8, 2026-09-16)
- Espressif, ESP-IDF Programming Guide, ADC Oneshot Mode Driver (ESP32) (ESP-IDF v6.1 (stable), web page read 2026-10-26)
Makers revise datasheets. If the copy you download has a newer revision and a number here disagrees with it, the datasheet wins, and we would like to hear about it.