The standard 30-pin DOIT ESP32 DevKit V1 exposes 25 usable GPIOs out of the ESP32-WROOM-32 module's 34 physical pins. While it is the most popular development board for hobbyists, its silkscreen labeling is notoriously cryptic, and misusing its strapping pins will result in immediate bootloops. Below is the exact pin mapping, the hardware traps you must avoid, and the decision framework for assigning pins to your next build.
The Complete ESP32 DevKit V1 Pinout Reference
This table maps the physical header pins (1-15 on the left, 16-30 on the right) to the internal ESP32-WROOM-32 GPIO numbers. This layout assumes the ubiquitous 30-pin DOIT clone with the CP2102 or CH340 USB-to-UART bridge, which accounts for over 80% of 'DevKit V1' boards on the market.
| Header Pin | Silkscreen Label | GPIO / Function | Header Pin | Silkscreen Label | GPIO / Function |
|---|---|---|---|---|---|
| 1 (Top L) | 3V3 | 3.3V Power Output | 16 (Top R) | VIN | 5V Input (USB VBUS) |
| 2 | EN | Enable (Active High) | 17 | GND | Ground |
| 3 | VP | GPIO 36 (ADC1_CH0) | 18 | IO23 | GPIO 23 (VSPI MOSI) |
| 4 | VN | GPIO 39 (ADC1_CH3) | 19 | IO22 | GPIO 22 (I2C SCL) |
| 5 | IO34 | GPIO 34 (ADC1_CH6) | 20 | TX0 | GPIO 1 (UART0 TX) |
| 6 | IO35 | GPIO 35 (ADC1_CH7) | 21 | RX0 | GPIO 3 (UART0 RX) |
| 7 | IO32 | GPIO 32 (ADC1_CH4) | 22 | IO21 | GPIO 21 (I2C SDA) |
| 8 | IO33 | GPIO 33 (ADC1_CH5) | 23 | IO19 | GPIO 19 (VSPI MISO) |
| 9 | IO25 | GPIO 25 (DAC1) | 24 | IO18 | GPIO 18 (VSPI SCK) |
| 10 | IO26 | GPIO 26 (DAC2) | 25 | IO5 | GPIO 5 (VSPI SS) |
| 11 | IO27 | GPIO 27 | 26 | TX2 | GPIO 17 (UART2 TX) |
| 12 | IO14 | GPIO 14 (HSPI SCK) | 27 | RX2 | GPIO 16 (UART2 RX) |
| 13 | IO12 | GPIO 12 (HSPI MISO) | 28 | IO4 | GPIO 4 |
| 14 | GND | Ground | 29 | IO2 | GPIO 2 (Boot LED) |
| 15 (Bot L) | IO13 | GPIO 13 (HSPI MOSI) | 30 (Bot R) | IO15 | GPIO 15 (HSPI SS) |
The 'Rows People Get Wrong' (Hardware Traps)
Beginners frequently brick their projects or chase phantom bugs by ignoring the ESP32's hardware architecture. According to the Espressif Hardware Design Guidelines, these specific pins require strict handling:
- The Bootloop Trap (GPIO 12): GPIO 12 is a strapping pin that selects the flash voltage. If it is pulled HIGH during boot, the ESP32 expects a 1.8V SPI flash chip. The WROOM-32 uses 3.3V. If you wire a relay or sensor that pulls GPIO 12 high on startup, the board will enter an endless bootloop. Fix: Leave GPIO 12 floating or pull it LOW on boot.
- The Onboard LED Conflict (GPIO 2): GPIO 2 is tied to the blue onboard LED and is a strapping pin. It must be LOW or floating to boot into flash mode. If you wire a push-button with a pull-up resistor to GPIO 2, the board will refuse to enter download mode when you press the EN button.
- The Phantom Pins (GPIO 6-11): You will not find these on the DevKit V1 header. They are hardwired internally to the SPI flash memory. Never attempt to use them in your code.
Faded Silkscreen? How to Safely Identify Unmarked Pins
Cheap clone boards often suffer from misaligned or faded silkscreen printing. Guessing pinouts by applying 5V to the wrong header trace will instantly destroy the ESP32's 3.3V LDO regulator or the main SoC. If your markings are illegible, use this bench procedure:
- Locate the GND Reference: Set your multimeter to continuity mode. The large metal RF shield on the ESP32-WROOM-32 module is tied directly to GND. Probe the shield with your black lead.
- Identify the Power Rails: Use the red lead to find the header pins that beep against the shield. These are your GND pins (typically Pin 14 on the left, Pin 17 on the right). The pin immediately above the left GND is usually 3V3 (Pin 1).
- Trace the USB UART Lines: Follow the copper traces from the USB-to-UART chip (CH340 or CP2102) to the header. The two traces running through the 470Ω series resistors will always terminate at GPIO 1 (TX) and GPIO 3 (RX).
External Wiring Color Codes: IEC vs NEC Standards
When wiring external sensors, relays, or power supplies to your ESP32 DevKit V1, maintaining consistent wire color standards prevents catastrophic cross-wiring. Because the ESP32 operates at 3.3V logic but is often paired with 12V or 24V industrial sensors via optocouplers, your DC wiring colors must align with your regional standards.
| Function | IEC 60446 (EU / UK / AU) | NEC / US Hobbyist Standard |
|---|---|---|
| DC Power Positive (+) | Brown | Red |
| DC Power Negative (-) | Blue | Black |
| Protective Earth (PE) | Green / Yellow Stripe | Green (or Bare Copper) |
| AC Line (if wiring mains to PSU) | Brown (Single Phase) | Black (120V) / Red (240V) |
| AC Neutral | Blue | White / Gray |
Pin Selection Decision Tree: What to Use Where
Stop guessing which pin to use for your peripherals. Use this decision matrix to assign pins based on the ESP-IDF GPIO Architecture. This path terminates in a concrete pick for 95% of common maker projects.
| Use Case / Peripheral | Recommended Pin(s) | Why This Pick? |
|---|---|---|
| I2C Bus (Sensors, OLEDs) | SDA: GPIO 21 SCL: GPIO 22 | These are the default hardware I2C pins in the Arduino core. Using them avoids software-emulated I2C overhead and timing glitches. |
| SPI Bus (SD Cards, TFTs) | SCK: 18, MISO: 19 MOSI: 23, SS: 5 | Maps directly to the ESP32's VSPI hardware bus. Yields maximum clock speeds without CPU bit-banging. |
| Analog Sensors (ADC) | GPIO 32, 33, 34, 35 | Connected to ADC1. Unlike ADC2 (GPIO 0, 2, 4, 12-15, 25-27), ADC1 remains fully functional while WiFi is active. |
| Hardware UART (GPS, RS485) | TX: GPIO 17 RX: GPIO 16 | Maps to UART2. Leaves UART0 (GPIO 1/3) free for your Serial Monitor debugging. |
| General PWM (Motors, LEDs) | GPIO 4, 25, 26, 27 | Safe from strapping pin conflicts, not tied to internal flash, and supports the LEDC hardware PWM peripheral up to 80MHz. |
| Capacitive Touch | GPIO 13, 14, 15, 32, 33 | These specific GPIOs are routed to the ESP32's internal 10-channel capacitive touch sensor array. No external resistors needed. |
By strictly adhering to this pinout mapping and respecting the hardware strapping requirements, you eliminate the most common hardware-level bugs in ESP32 development. Always verify your specific board's variant (30-pin vs 38-pin) before soldering, and rely on your multimeter, not the silkscreen, when working with unbranded clones.






