Skip to content
My Account

Reference

ESP32-WROOM-32D Pinout

The pin reference for the ESP32-WROOM-32D module: 38 pads, 32 GPIOs of which 6 are tied to the flash, how to flash it and which pins are safe to use.

  • 32 GPIOs
  • 26 free
  • 4 MB flash
  • Wi-Fi 4 and Bluetooth 4.2 LE
No ratings yet, be the first.

Overview

The ESP32-WROOM-32D is a small shielded module from Espressif with an ESP32 chip, a crystal, flash memory and a PCB antenna on one board of 18 by 25.5 mm. It has Wi-Fi and Bluetooth built in and runs your own firmware. Many ESP32 development boards, like the DevKitC and DevKit V1, are built around a module like this one.

Espressif marks the ESP32-WROOM-32D as not recommended for new designs (NRND) on its datasheet. It is still sold and still on many boards. For a new design use the ESP32-WROOM-32E, which has the same size and the same pad positions.

Wi-Fi 4 (802.11 b/g/n, 2.4 GHz) and Bluetooth v4.2 BR/EDR with BLE. Matter works over Wi-Fi. There is no 802.15.4 radio, so no Thread or Zigbee: that needs an ESP32-C6 or ESP32-H2.

Three radios, one chipWi-Fi, classic Bluetooth and Bluetooth LE share the same chip, so a smart-home accessory needs no extra radio module.
Not every GPIO is equalGPIO34 to GPIO39 are input only, five pins are strapping pins that are read at boot, and ADC2 is not available while Wi-Fi runs.
Wakes from deep sleepThe RTC GPIOs stay active in deep sleep and can wake the chip, which is what a battery project needs.

Module and board

This guide covers the bare module. The pin names are the names of the module pads, as printed on the datasheet. A development board routes the same pads to its own headers, and the labels on the board can differ, so check them on your own board.

The drawings in this guide show the module from the top, with the antenna at the top, and from the back. The pads are numbered 1 to 38, going counter-clockwise from the top left. Pin 39 is the large exposed ground pad on the back.

Getting started

Most people use this module on a development board and not as a bare module, and these three steps assume a board with a USB connector. A bare module has no USB, see “Flashing the bare module” below for that.

1. What you needA development board with this module, a USB cable that fits it and a computer. USB power is enough for a first test.
2. Install the softwareInstall the Arduino IDE, then add the ESP32 boards from Espressif in the Boards Manager. For ESP-IDF, install it from Espressif and follow its getting started guide.
3. Upload your first sketchOpen the Blink example, choose your board and port and upload. If it stops at “Connecting…”, hold the BOOT button until the upload starts.

Specifications

Compute

ChipESP32-D0WD
CPUDual-core Xtensa LX6, up to 240 MHz
Memory448 KB ROM, 520 KB SRAM
Flash4 MB, quad SPI
PSRAMNone

Radio

Wi-Fi802.11 b/g/n, 2.4 GHz, up to 150 Mbps
Bluetoothv4.2 BR/EDR and Bluetooth LE
AntennaOn-board PCB antenna. The ESP32-WROOM-32U has a connector for an external antenna
Wi-Fi transmit currentSee the datasheet for the current in each mode

Physical and electrical

Supply3.0 to 3.6 V, 3.3 V typical, the supply must deliver at least 0.5 A
Temperature-40 to 85 °C
Size18.0 x 25.5 x 3.1 mm
Pads38, 1.27 mm pitch, and an exposed ground pad
GPIOs32, of which 6 (GPIO6 to GPIO11) are wired to the flash

Keep an LED or other load on a GPIO to about 10 mA, and use a transistor or a driver chip for more.

Source: Espressif ESP32-WROOM-32D and ESP32-WROOM-32U datasheet, version 2.8.

Dimensions

The module is 18.0 by 25.5 mm and 3.1 mm thick, with a tolerance of 0.15 mm. The antenna area at the top is 6.19 mm long and thinner, 0.8 mm. There are 14 pads on each side and 10 along the bottom, all at 1.27 mm pitch, and the exposed ground pad on the back is 3.6 mm square. Keep copper and metal away from the antenna area on your own board.

ESP32-WROOM-32D dimensions: 18 by 25.5 millimetres, 3.1 millimetres thick, 38 pads at 1.27 millimetre pitch

Source: the Physical Dimensions section of the Espressif datasheet. The drawing is schematic.

Pinout diagram: top

The pads are numbered 1 to 38. Pads 1 to 14 are on the left, 15 to 24 along the bottom and 25 to 38 on the right, going up. The number in each label is the pad number, the name is the name on the datasheet and the second line gives the GPIO and what it can do.

ESP32-WROOM-32D pinout from the top with all 38 pads labelled

The pads 17 to 22 carry the flash pins SD2, SD3, CMD, CLK, SD0 and SD1. They are connected to the flash on the module and are not meant for your own use.

Pinout diagram: back

The back is mirrored, so the pins swap sides. The large pad in the middle is pin 39, the exposed ground pad. Soldering it to ground is optional, but it helps to get heat out of the module. Use the right amount of solder paste, because too much lifts the module off the board.

ESP32-WROOM-32D pinout from the back with the exposed ground pad

Pins at a glance

The pins grouped by job. Only a few of them are special, the rest are normal I/O pins.

The pins of the ESP32-WROOM-32D grouped by job: power, input only, analog, serial, strapping and flash

GPIO reference

Every GPIO that is available on the module, with its pad number and what it can do. ADC2 cannot be used while Wi-Fi is on, so read analog values on ADC1 (GPIO32 to GPIO39) when you use Wi-Fi.

GPIOPinOther functionsADCDACTouchRTCNotes
GPIO025CLK_OUT1, EMAC_TX_CLKADC2_CH1–T1RTC11Strapping: low at reset = download mode
GPIO135TXD0 (U0TXD), CLK_OUT3––––UART0 TX, prints the boot log
GPIO224HSPIWP, HS2_DATA0, SD_DATA0ADC2_CH2–T2RTC12Strapping: keep low or open at reset
GPIO334RXD0 (U0RXD), CLK_OUT2––––UART0 RX
GPIO426HSPIHD, HS2_DATA1, SD_DATA1ADC2_CH0–T0RTC10
GPIO529VSPICS0, HS1_DATA6––––Strapping: SDIO timing, default high
GPIO620CLK, SPICLK––––Wired to the on-module flash. Do not use
GPIO721SD0, SPIQ––––Wired to the on-module flash. Do not use
GPIO822SD1, SPID––––Wired to the on-module flash. Do not use
GPIO917SD2, SPIHD––––Wired to the on-module flash. Do not use
GPIO1018SD3, SPIWP––––Wired to the on-module flash. Do not use
GPIO1119CMD, SPICS0––––Wired to the on-module flash. Do not use
GPIO1214MTDI, HSPIQ, HS2_DATA2, SD_DATA2ADC2_CH5–T5RTC15Strapping: must be low at reset on this module
GPIO1316MTCK, HSPID, HS2_DATA3, SD_DATA3ADC2_CH4–T4RTC14JTAG TCK
GPIO1413MTMS, HSPICLK, HS2_CLK, SD_CLKADC2_CH6–T6RTC16JTAG TMS
GPIO1523MTDO, HSPICS0, HS2_CMD, SD_CMDADC2_CH3–T3RTC13Strapping: low at reset silences the boot log
GPIO1627U2RXD, HS1_DATA4––––UART2 RX
GPIO1728U2TXD, HS1_DATA5––––UART2 TX
GPIO1830VSPICLK, HS1_DATA7––––VSPI SCK
GPIO1931VSPIQ, U0CTS––––VSPI MISO
GPIO2133VSPIHD, EMAC_TX_EN––––I2C SDA in the Arduino core
GPIO2236VSPIWP, U0RTS––––I2C SCL in the Arduino core
GPIO2337VSPID, HS1_STROBE––––VSPI MOSI
GPIO2510EMAC_RXD0ADC2_CH8DAC1–RTC6
GPIO2611EMAC_RXD1ADC2_CH9DAC2–RTC7
GPIO2712EMAC_RX_DVADC2_CH7–T7RTC17
GPIO328XTAL_32K_PADC1_CH4–T9RTC9
GPIO339XTAL_32K_NADC1_CH5–T8RTC8
GPIO346–ADC1_CH6––RTC4Input only, no pull-up or pull-down
GPIO357–ADC1_CH7––RTC5Input only, no pull-up or pull-down
GPIO364SENSOR_VPADC1_CH0––RTC0Input only, no pull-up or pull-down
GPIO395SENSOR_VNADC1_CH3––RTC3Input only, no pull-up or pull-down
TouchGPIO0, 2, 4, 12, 13, 14, 15, 27, 32 and 33.
DACGPIO25 (DAC1) and GPIO26 (DAC2).
Default buses in the Arduino coreI2C: SDA GPIO21, SCL GPIO22. SPI (VSPI): MOSI 23, MISO 19, SCK 18, CS 5. UART0: TX GPIO1, RX GPIO3.

Almost any peripheral can be moved to other pins with the GPIO matrix, so the default pins above are a convention and not a limit.

Source: Espressif ESP32-WROOM-32D and ESP32-WROOM-32U datasheet, version 2.8.

Boot pins

Five pins are read at reset to decide how the chip boots. They are free to use as normal pins after boot, but what is connected to them while the chip starts matters.

GPIODefaultWhat it does at reset
GPIO0Pull-upLow at reset starts the serial bootloader (download mode). High runs the program from flash
GPIO2Pull-downTogether with GPIO0 it selects the boot mode. Keep it low or open when you flash
GPIO12 (MTDI)Pull-downSelects the flash voltage. High at reset gives 1.8 V and a module with 3.3 V flash does not start, so keep it low at power-up
GPIO15 (MTDO)Pull-upLow at reset silences the boot messages on UART0
GPIO5Pull-upSets the SDIO slave timing, leave it at its default

A button, a relay or a sensor with a pull-up or pull-down on one of these pins can stop the module from starting. Choose other pins first.

Source: Espressif ESP32-WROOM-32D and ESP32-WROOM-32U datasheet, version 2.8.

Flashing the bare module

A development board does this for you. For a bare module you need a USB-to-serial adapter that works at 3.3 V and a stable 3.3 V supply that can deliver at least 0.5 A, because Wi-Fi sends in short, strong pulses.

Module pinConnect toNote
3V3 (pad 2)3.3 V supplyNot 5 V, that can damage the module
GND (pad 1, 15 or 38)Ground of the supply and of the adapterAll grounds together
EN (pad 3)3.3 V through a resistor, and a reset button to groundNever leave it floating
TXD0 (pad 35)RX of the adapterGPIO1, UART0 TX
RXD0 (pad 34)TX of the adapterGPIO3, UART0 RX
IO0 (pad 25)Ground while the chip resetsStarts download mode, then release it
IO2 (pad 24)Open or lowLeave it unconnected

To flash: hold IO0 low, reset the module with EN, release IO0 and start the upload. Boards with an auto-reset circuit do this with the DTR and RTS lines of the adapter.

Source: Espressif ESP32-WROOM-32D and ESP32-WROOM-32U datasheet, version 2.8.

ESP32-WROOM-32D or ESP32-WROOM-32E

The two modules fit the same footprint, so one can replace the other on a board. The difference is in the chip revision, the flash options and the six pads in the middle of the bottom edge.

ESP32-WROOM-32DESP32-WROOM-32E
ChipESP32-D0WDESP32-D0WD-V3, or ESP32-D0WDR2-V3 with 2 MB PSRAM
GPIOs32, of which 6 are wired to the flash26
Flash4 MB4, 8 or 16 MB
Pads 17 to 22Flash pins SD2, SD3, CMD, CLK, SD0, SD1Not connected
Temperature-40 to 85 °C-40 to 85 °C, or -40 to 105 °C (H4, H8)
Size and pad positions18.0 x 25.5 x 3.1 mmThe same
StatusNot recommended for new designsCurrent

See the ESP32-WROOM-32E guide for the newer module. For the other ESP32 chips, see the ESP32 family explained.

Real gotchas

  • ADC2 stops working when Wi-Fi is on. Use an ADC1 pin (GPIO32 to GPIO39) for analog readings in a Wi-Fi project.
  • GPIO34, 35, 36 and 39 are input only. They have no output driver and no internal pull-up or pull-down, so add an external resistor when you need one.
  • GPIO12 high at power-up stops the module from starting. The module has 3.3 V flash, and a high level on this pin selects 1.8 V. Do not pull it up.
  • EN must never float. Pull it high, and add a reset button to ground. A floating EN gives random resets.
  • The module is 3.3 V only. A 5 V signal on a pin can damage it, use a level shifter.
  • Wi-Fi sends in strong pulses. The supply must deliver at least 0.5 A, and a weak USB port or a long thin wire gives brown-out resets when the radio sends. Put a capacitor of 10 µF or more close to the 3V3 pin.
  • GPIO6 to GPIO11 are wired to the flash. The module does not start if you use them for something else.
  • Not recommended for new designs. If you design a board, use the ESP32-WROOM-32E, it has the same footprint.
  • Keep the antenna area free. Copper, a metal case or a battery close to the PCB antenna reduce the range.

What to build

This module is the heart of many of the projects on this site, for example a HomeKit accessory with ESP-IDF, an ESP32 Matter device, a smart plug, or an LED controller for HomeKit. To update the firmware over the air, see the lifecycle manager. The ESP-WROOM-32 programmer is a board to flash the bare module.

Safety notes

Before you wire anything up

  • Use 3.0 to 3.6 V on 3V3. 5 V on the supply pin or on a GPIO can destroy the module.
  • Do not draw more than about 10 mA from a GPIO. The datasheet limits are higher but are tested at the edge of the output voltage.
  • Check GPIO0, 2, 5, 12 and 15 before you use them as outputs, they are read at boot.
  • GPIO34 to GPIO39 are input only.
  • Never connect mains voltage to the module. If your project switches mains power, use a certified relay or power supply and read the safety notes of that part.

Conclusion

The ESP32-WROOM-32D is a small module with Wi-Fi, Bluetooth, a dual-core chip and 26 usable GPIOs, plus six pins that belong to the flash. It is still on many boards, but for a new design the ESP32-WROOM-32E has the same footprint. Keep an eye on the boot pins, keep ADC2 off when Wi-Fi is on, feed it a stable 3.3 V and keep the antenna area free.

All pin data and dimensions are from the Espressif datasheet of the module, checked on 6 November 2026. The pin labels in the drawings follow the pad numbers of that datasheet.

Advertisement
All guides

More guides

Keep building.

From ESP32 HomeKit accessories to Arduino and ATtiny reference guides, there’s more where this came from.

All guides