The ESP32-WROOM-32 module features 38 physical pads, but standard 30-pin DevKit boards expose 25 usable GPIOs operating strictly at 3.3V logic. Below is the definitive pinout reference, regional wiring color standards for peripheral integration, and exact strapping pin rules to prevent boot failures.

Complete ESP32-WROOM-32 Pinout Reference

This table maps the standard 30-pin DevKitC V4 layout to the underlying ESP32-WROOM-32E silicon. Always assume a 3.3V logic level; feeding 5V into any GPIO will destroy the input protection diodes and likely brick the chip.

DevKit PinGPIOPrimary FunctionRestrictions & Notes
3V3-Power (3.3V)Max draw ~500mA depending on onboard regulator.
GND-GroundCommon ground for all peripherals.
EN-EnableHigh to run, Low to reset. Has internal pull-up.
VP36ADC1_CH0 / InputInput ONLY. No internal pull-up/pull-down.
VN39ADC1_CH3 / InputInput ONLY. No internal pull-up/pull-down.
IO3434ADC1_CH6 / InputInput ONLY. No internal pull-up/pull-down.
IO3535ADC1_CH7 / InputInput ONLY. No internal pull-up/pull-down.
IO3232ADC1_CH4 / Touch9Safe for I2C/UART. Has internal pull-up/down.
IO3333ADC1_CH5 / Touch8Safe for I2C/UART. Has internal pull-up/down.
IO2525ADC2_CH8 / DAC1ADC2 conflicts with WiFi. DAC output capable.
IO2626ADC2_CH9 / DAC2ADC2 conflicts with WiFi. DAC output capable.
IO2727ADC2_CH7 / Touch7ADC2 conflicts with WiFi.
IO1414ADC2_CH6 / Touch6ADC2 conflicts with WiFi. Outputs PWM on boot.
IO1212ADC2_CH5 / Touch5Strapping pin. Boot fails if pulled HIGH.
IO1313ADC2_CH4 / Touch4ADC2 conflicts with WiFi.
IO99SD2 (Flash SPI)Connected to internal flash. Do not use.
IO1010SD3 (Flash SPI)Connected to internal flash. Do not use.
IO1111CMD (Flash SPI)Connected to internal flash. Do not use.
IO2323VSPI MOSISafe for general output/SPI.
IO2222Wire SCL (Default)Safe for I2C. Has internal pull-up.
TX01UART0 TXDebug output. HIGH on boot.
RX03UART0 RXDebug input. HIGH on boot.
IO2121Wire SDA (Default)Safe for I2C. Has internal pull-up.
IO1919VSPI MISOSafe for general input/SPI.
IO1818VSPI SCKSafe for general output/SPI.
IO55VSPI SS / PWMStrapping pin. Outputs PWM on boot.
TX217UART2 TXSafe for general UART.
RX216UART2 RXSafe for general UART.
IO44ADC2_CH0 / Touch0ADC2 conflicts with WiFi.
IO00ADC2_CH1 / Touch1Strapping pin. Must be HIGH for normal boot.
IO22ADC2_CH2 / Touch2Strapping pin. Onboard LED. Must be LOW/Floating to boot.
IO1515ADC2_CH3 / Touch3Strapping pin. Outputs PWM on boot.

Rows People Get Wrong: Strapping Pins and ADC Conflicts

The most common bench failures with the WROOM-32 happen when builders ignore the silicon-level constraints tied to specific GPIOs. Here is what the datasheet actually means for your circuit:

  • The Strapping Pins (GPIO 0, 2, 5, 12, 15): During reset, the ESP32 samples these pins to determine boot mode and flash voltage. If you wire a relay or a sensor that pulls GPIO 12 HIGH during power-on, the chip will attempt to boot from an unsupported flash voltage and enter a continuous boot loop. Keep GPIO 12 LOW or floating at startup.
  • The ADC2 vs. WiFi Trap: If your project uses WiFi or Bluetooth, the radio subsystem claims exclusive control of the ADC2 peripheral. Any attempt to read analog values from GPIO 4, 12, 13, 14, 15, 25, 26, or 27 while WiFi is active will return garbage data or fail silently. Always route critical analog sensors to ADC1 (GPIO 32, 33, 34, 35, 36, 39).
  • Input-Only Pins (34, 35, 36, 39): These pins lack internal pull-up/pull-down resistors and cannot drive outputs. If you need a stable logic level on these pins for a button or switch, you must add an external 10kΩ resistor to 3.3V or GND.

Regional Wiring Standards: DC Sensors vs. Mains Relays

While the ESP32 operates at 3.3V DC, it is frequently used to trigger relay modules that switch regional mains voltages. Confusing DC wiring conventions with AC mains color codes is a severe shock hazard. Always verify which standard applies to your physical location.

⚠️ WARNING: Mains Voltage Hazard
Any procedure involving mains voltage (>50V AC / >120V DC) requires de-energizing the circuit, locking out the breaker, and verifying dead with a tested CAT III multimeter. Local electrical codes (NEC, IEC) may require a licensed electrician for permanent mains connections.

Low-Voltage DC Sensor Wiring (IEC vs. NEC Practices)

For 3.3V and 5V DC sensor wiring (I2C, SPI, UART), the industry generally follows a unified bench standard rather than strict regional building codes:

  • Red: VCC / Power (3.3V or 5V)
  • Black: GND
  • Yellow/White/Blue: Signal / Data lines

Note: Do not use IEC 60446 AC colors (Brown/Blue) for low-voltage DC breadboarding, as it creates dangerous confusion if the same enclosure houses a mains-powered relay.

Mains Relay Wiring (Regional AC Standards)

When wiring the load side of an ESP32-controlled relay module to 120V/230V AC, you must follow your regional authority having jurisdiction (AHJ):

Region / StandardLive / HotNeutralEarth / Ground
US / Canada (NEC)Black (or Red)WhiteBare Copper or Green
EU / IEC 60446BrownBlueGreen/Yellow Stripe
Old UK (Pre-2004)RedBlackGreen
Australia / NZRed (or Brown)Black (or Blue)Green/Yellow Stripe

If you are retrofitting an older UK installation (pre-2004 colors) with a modern ESP32 smart relay, the old Black wire is actually Live-equivalent Neutral, but you must test it with a non-contact voltage tester before assuming the color code, as previous DIYers may have wired it backward.

Safe Interpretation When Silkscreen Markings Are Faded

Cheap clone DevKit boards often suffer from silkscreen that rubs off after a few months of bench use. If your pin labels are missing, do not guess. Use the physical WROOM module and a multimeter to safely map the board:

  1. Locate the RF Shield: The large metal can on the ESP32-WROOM module is physically tied to GND. Set your multimeter to continuity mode. Probe the metal shield with one lead, and test the header pins with the other. Any pin that beeps is a GND pin.
  2. Find the EN Pin: Look at the physical WROOM module text. The pad labeled 'EN' is always located immediately adjacent to the '3V3' pad on the left side of the module (when the RF shield is facing up and the antenna is pointing away from you).
  3. Identify the 5V vs 3.3V Rails: Power the board via USB. Set your meter to DC Voltage. Probe the suspected power pins against your confirmed GND. The pin reading 5.0V-5.2V is the USB VBUS (often labeled 5V or VIN). The pin reading exactly 3.3V is your logic supply. Never feed 5V into a pin that reads 3.3V when powered, as it is an output from the onboard LDO.

Frequently Asked Questions

Is there an "ESP32 VROOM" module, or is it a typo for WROOM?

Search queries frequently include the term ESP32 VROOM pinout, but this is a phonetic typo. Espressif Systems manufactures the WROOM (Wi-Fi + Bluetooth RF integrated module) and WROVER (includes external PSRAM) series. There is no official 'VROOM' silicon. If you bought a board labeled 'VROOM', it is either a counterfeit silkscreen error or a joke by a third-party PCB designer. Treat it exactly as a standard ESP32-WROOM-32 for pinout and flashing purposes.

Which ESP32-WROOM pins are safest to use for I2C sensors?

While the ESP32's GPIO matrix allows you to map I2C to almost any pin, the default hardware I2C0 pins are GPIO 21 (SDA) and GPIO 22 (SCL). These pins have internal pull-up resistors (typically 45kΩ), which can sometimes save you from adding external 4.7kΩ pull-ups for short-distance, single-sensor runs. Avoid using GPIO 16 and 17 for I2C if you plan to use the hardware UART2, as they are the default RX/TX pins.

Why does my ESP32-WROOM draw excess current in deep sleep?

If your multimeter shows 5mA+ during deep sleep (instead of the expected ~10µA), you likely have a GPIO pin configured as an output driving HIGH into a peripheral that is powered down, or you have an external pull-up resistor tied to a 5V rail leaking back through the ESP32's internal protection diodes. Before entering deep sleep, use gpio_deep_sleep_hold_en() in your code, and ensure all peripherals are powered via a GPIO-controlled MOSFET so the ESP32 can physically cut their ground or VCC before sleeping. For exact current consumption metrics, refer to the Espressif ESP32 Datasheet.