The ESP32 DevKit V1 with a USB Type-C connector is the current standard-bearer for hobbyist and prototyping Wi-Fi/Bluetooth projects. However, the transition from Micro-USB to Type-C on these budget boards introduces specific power delivery quirks, and the 30-pin layout hides several silicon-level traps that will crash your code or brick your boot sequence.

Below is the direct, bench-tested reference for the ESP32 DevKit V1 Type-C pinout, assuming the standard 30-pin NodeMCU-32S footprint (the most widely manufactured variant in 2026).

The Complete ESP32 DevKit V1 Type-C Pinout Reference

Read this table with the USB-C port facing up. The left bank contains pins 1 through 15, and the right bank contains pins 16 through 30.

Pin # GPIO Silkscreen Name Primary Function & Constraints
1-3V33.3V Power Output (Max ~500mA from onboard LDO)
2-ENEnable (Chip reset when pulled LOW)
336VP / GPIO36Input ONLY. ADC1_CH0. No internal pull-up.
439VN / GPIO39Input ONLY. ADC1_CH3. No internal pull-up.
534GPIO34Input ONLY. ADC1_CH6. No internal pull-up.
635GPIO35Input ONLY. ADC1_CH7. No internal pull-up.
732GPIO32ADC1_CH4, Touch9, XTAL_32K_N. Safe for I2C/SPI.
833GPIO33ADC1_CH5, Touch8, XTAL_32K_P. Safe for I2C/SPI.
925GPIO25DAC1, ADC2_CH8. General purpose I/O.
1026GPIO26DAC2, ADC2_CH9. General purpose I/O.
1127GPIO27ADC2_CH7, Touch7. General purpose I/O.
1214GPIO14ADC2_CH6, Touch6, MTMS. Outputs PWM on boot.
1312GPIO12Strapping Pin. ADC2_CH5, Touch5. Boot fails if HIGH.
14-GNDGround reference.
1513GPIO13ADC2_CH4, Touch4, MTCK. General purpose I/O.
169GPIO9DO NOT USE. Connected to internal SPI Flash.
1710GPIO10DO NOT USE. Connected to internal SPI Flash.
1811GPIO11DO NOT USE. Connected to internal SPI Flash.
19-5V5V Input from USB-C or external supply.
20-GNDGround reference.
2123GPIO23VSPI MOSI. High-speed digital I/O.
2222GPIO22Default I2C SCL. Safe for general I/O.
231GPIO1 / TX0U0TXD. Debug console output. Avoid for general I/O.
243GPIO3 / RX0U0RXD. Debug console input. Avoid for general I/O.
2521GPIO21Default I2C SDA. Safe for general I/O.
26-GNDGround reference.
2719GPIO19VSPI MISO. High-speed digital I/O.
2818GPIO18VSPI SCK. High-speed digital I/O.
295GPIO5VSPI SS. Outputs PWM on boot. Strapping pin.
3017GPIO17General purpose I/O. Safe for UART1 TX.
3116GPIO16General purpose I/O. Safe for UART1 RX.
324GPIO4ADC2_CH0, Touch0. Outputs PWM on boot.
330GPIO0Strapping Pin. ADC2_CH1, Touch1. Boot mode select.
342GPIO2Strapping Pin. ADC2_CH2, Touch2. Connected to onboard LED.
3515GPIO15Strapping Pin. ADC2_CH3, Touch3. Outputs PWM on boot.

Note: Some manufacturers produce a 38-pin "wide" variant. If your board has 38 pins, the extra pins are typically duplicate GND, 3V3, and GPIOs 6-11 broken out. Treat GPIO 6-11 as strictly forbidden regardless of board width.

Rows People Get Wrong: Strapping Pins and Flash Memory

The most common bench failures on the DevKit V1 come from ignoring the silicon-level routing of specific GPIOs. If your ESP32 boots into a continuous reset loop or fails to execute your setup() function, you have likely violated one of these rules:

The SPI Flash Trap (GPIO 6, 7, 8, 9, 10, 11)
These pins are physically wired to the external SPI flash memory chip on the board. If you attempt to use them as standard digital I/O, or if you attach a peripheral that pulls them LOW during boot, the ESP32 cannot read its own firmware. The chip will halt or crash immediately. Never use these pins.

Input-Only Pins (GPIO 34, 35, 36, 39): These pins lack internal pull-up and pull-down resistors. If you wire a button to GPIO 34 without an external 10kΩ pull-up resistor, the pin will float, generating hundreds of false interrupts per second. Furthermore, they cannot drive an LED or relay.

Strapping Pins (GPIO 0, 2, 5, 12, 15): During the first 10 milliseconds of power-on, the ESP32 samples these pins to determine boot mode (e.g., flash boot vs. serial bootloader).

  • GPIO 12: Must be LOW at boot. If you wire a relay or sensor that pulls GPIO 12 HIGH, the ESP32 will misconfigure its flash voltage and fail to boot.
  • GPIO 0: Must be HIGH for normal execution. Pulling it LOW at boot forces the chip into UART download mode.

USB Type-C on the DevKit V1: What It Actually Does

The inclusion of a USB Type-C port on modern DevKit V1 boards is frequently misunderstood. It does not support USB Power Delivery (PD) or DisplayPort Alt Mode.

According to the Espressif ESP32 Datasheet, the USB lines route directly to an onboard USB-to-UART bridge (typically a CP2102 or CH340G). The Type-C port is wired strictly for USB 2.0 data (D+ / D-) and default 5V VBUS power.

The USB-C to USB-C Cable Problem
The USB-C standard requires a 5.1kΩ pull-down resistor on the CC1 and CC2 lines for a device to identify as a "sink" and request 5V from a modern USB-C charger. Most budget DevKit V1 Type-C boards omit these resistors to save $0.02 in manufacturing.

The result: If you plug the board into a modern MacBook, iPad, or USB-C PD wall charger using a C-to-C cable, the charger will not detect the device and will output 0V. The board will appear dead. Always use a USB-A to USB-C cable, or plug it into a legacy USB-A hub, to guarantee 5V delivery.

Safe Interpretation: Reading Faded Silkscreen and Board Variants

Mass-produced DevKit V1 boards often suffer from poor quality control. It is common to receive a board where the silkscreen text is misaligned, faded, or printed upside down. When you cannot trust the labels, use this multimeter-based verification path before applying power to sensitive 3.3V sensors.

The Continuity Mapping Trick
Set your multimeter to continuity mode (the diode/beep setting). With the board unpowered and the USB-C port facing UP:
1. Find Ground: Probe the metal shield of the USB-C port. It is tied to GND. Now probe the pins on the headers until you find the 2 or 3 pins that beep. These are your GND pins.
2. Find 5V: Probe the VBUS pin on the USB-C connector (the outermost large pins inside the port). Trace this to the header. It will be the 5V pin.
3. Find 3V3: Locate the large AMS1117-3.3 voltage regulator on the board. The output tab is tied to 3V3. Trace it to the header.

Once you have positively identified GND, 5V, and 3V3, you can reliably count the remaining pins using the reference table above, starting from the top-left (Pin 1: 3V3) and top-right (Pin 19: 5V).

Decision Tree: Choosing the Right Pin for Your Peripheral

Do not assign pins arbitrarily. The ESP32's internal architecture divides ADCs, touch sensors, and high-speed buses in ways that dictate which GPIO you must use. Use this decision matrix to terminate your wiring choices with exact pin numbers.

If your project needs... Then use exactly these GPIOs Why this is the concrete pick
I2C Sensors (BME280, OLED, MPU6050) SDA: GPIO 21
SCL: GPIO 22
These are the hardware-default I2C pins mapped in the Arduino Wire library and ESP-IDF. Using them avoids software bit-banging overhead.
SPI Devices (SD Cards, TFT Displays) MOSI: 23, MISO: 19
SCK: 18, CS: 5
These map to the ESP32's VSPI hardware bus. Routing SPI through other pins forces slower software emulation.
Analog Sensors (Potentiometers, Light sensors) GPIO 32, 33, 34, 35, 36, 39 These are tied to ADC1. ADC1 remains functional while Wi-Fi is active. ADC2 (GPIO 0, 2, 4, 12-15, 25-27) is disabled the moment Wi-Fi initializes.
Hardware UART (GPS modules, RS485) TX: GPIO 17
RX: GPIO 16
UART0 is reserved for the USB debug console (GPIO 1/3). UART2 is tied to the SPI flash on some board variants. UART1 on 16/17 is the only safe, dedicated hardware serial port.
Capacitive Touch (TTP223 replacements) GPIO 4, 13, 14, 15, 27, 32, 33 These pins are routed to the internal touch sensor controller. Avoid GPIO 0 and 2 for touch, as their strapping requirements interfere with touch baseline calibration.

For further architectural details on bus routing and peripheral matrices, consult the Espressif ESP-IDF Peripheral API Documentation. Always verify your specific board's USB-to-UART bridge chip (CP2102 vs CH340G) before flashing, as this dictates which COM port driver your operating system requires.