ESP32 Pinout — Interactive Pin Map for Every Official Dev Board
Who this is for: For anyone holding an ESP32 dev board and a wire: check a pin's real functions and traps before you solder, not after your sensor stops reading the moment Wi-Fi connects.
Interactive pinout for the ESP32 family: click any pin on a DevKitC V4, S3-DevKitC-1, C3-DevKitM-1 or C6-DevKitC-1 to see its GPIO number, every official function, and the boot-time traps — transcribed from Espressif's official header tables.
Quick answer: Pick your board (DevKitC V4, S3-DevKitC-1, C3-DevKitM-1 or C6-DevKitC-1), then click any pin on the left or right header. You get the pin's GPIO number, the complete label list from Espressif's official header table (ADC channels, touch channels, DAC, UART, USB, SPI and JTAG functions) and the traps that matter at boot: strapping-pin levels, input-only pins and flash-reserved pins. Use the function buttons to instantly highlight every ADC, touch or strapping pin on the board.
J2 (left)
pin 1 at top · USB end at bottomJ3 (right)
pin 1 at top · USB end at bottomClick a pin on either header to see its GPIO number, every official function, and the traps that bite people on ESP32-DevKitC V4 (strapping levels, ADC2 vs Wi-Fi, input-only pins).
- ADC2 pins stop reading while Wi-Fi is on — analog sensors belong on ADC1.
- Strapping pins must be free to take their boot-time level.
- 3.3 V logic, not 5 V — level-shift anything that talks 5 V back.
ESP32-DevKitC V4 — specs
- Chip
- ESP32 (dual-core Xtensa LX6, 240 MHz)
- Wireless
- Wi-Fi 4 (2.4 GHz) + Bluetooth 4.2 (LE + Classic)
- Flash
- 4 MB (typical WROOM-32E)
- USB
- Micro-USB via CP2102N bridge (no native USB)
- ADC
- 2 × 12-bit SAR (ADC1 / ADC2)
Wiring notes for ESP32-DevKitC V4
- D0, D1, D2, D3, CMD and CLK (GPIO6–11) are wired to the on-module SPI flash — leave them unconnected in your project.
- GPIO16 and GPIO17 are available only on boards with ESP32-WROOM / SOLO-1 modules; on WROVER series they are reserved internally.
- GPIO34–39 are input-only: no output, no PWM, no internal pull-ups.
- Strapping pins 0, 2, 5, 12, 15: their level at reset selects boot mode / flash voltage — read the notes before driving them.
- Default I2C: SDA on GPIO21, SCL on GPIO22. Default VSPI: MOSI 23, MISO 19, SCK 18, CS 5. UART0: TX 1 / RX 3 (flashing + boot log).
| Boards covered | 4 (DevKitC V4 · S3-DevKitC-1 · C3-DevKitM-1 · C6-DevKitC-1) |
|---|---|
| Data source | Espressif user-guide Header Block tables (linked per board) |
| Chips covered | ESP32 · ESP32-S3 · ESP32-C3 · ESP32-C6 |
| Pin count | 38 / 44 / 30 / 32 GPIO headers |
| Updated | 2026-10 |
How this ESP32 pinout tool works
The header tables of the ESP32 family are officially documented — Espressif publishes a Header Block table for every dev board with each pin's full function list — but the information lives in PDF-length user guides, and the fan-made pinout images floating around are usually redrawn for one specific clone. This tool turns the official tables into something you can actually use at the bench: choose your board, click a pin, read its functions and warnings.
The four boards covered are the ones most people actually hold: the classic ESP32-DevKitC V4 (ESP32-WROOM-32E, the 38-pin layout that defines "the esp32 pinout"), the ESP32-S3-DevKitC-1 (the current default for new projects, with native USB), the ESP32-C3-DevKitM-1 (the cheap RISC-V board), and the ESP32-C6-DevKitC-1 (Wi-Fi 6 + Thread/Zigbee). Each board's data is transcribed pin-by-pin from its official user guide, with a link back to the source at the bottom of every pin detail. When a cloned board uses different silkscreen labels, the GPIO numbers and functions still match — clone vendors change printing, not silicon.
Beyond the lookup, the tool answers the questions that actually block people: which pins can read an analog sensor while Wi-Fi is on (ADC1, never ADC2), which pins can't drive anything at all (input-only GPIO34–39 on the classic chip), which pins change the boot mode if you wire them wrong (strapping pins — 0, 2, 5, 12, 15 on the classic; different on every newer chip), and which pins look free but belong to the flash chip (GPIO6–11).
Common uses
- Checking whether a sensor wire may sit on an ADC2 pin before the Wi-Fi radio makes it read garbage
- Finding every touch-capable pin on a board while planning a capacitive button project
- Confirming which pins to avoid before wiring a custom PCB around a dev board
- Mapping a breadboard layout against the physical header order (pin 1 at top, USB end at bottom)
- Teaching: showing the difference between the classic ESP32 layout and an S3/C6 board's pin set
- Checking USB D+/D- and UART pins before deciding how to flash your board
The five traps that cost beginners an evening
1) ADC2 dies under Wi-Fi: only ADC1 pins keep working while the radio is active — every "my analog reading is zero" story starts here. 2) Strapping pins must be free at boot: if your circuit holds GPIO0, GPIO2 or GPIO12 (classic) at the wrong level during reset, the chip boots into the wrong mode or not at all. 3) Input-only pins (GPIO34–39 on the classic) can't output, PWM or pull up — they're for sensors and buttons only. 4) Flash pins look like GPIOs: GPIO6–11 on the classic are wired to the SPI flash and using them crashes the boot. 5) Everything is 3.3 V — a 5 V sensor output straight into a GPIO is out of spec; divide it or level-shift it.
Which board do you actually have?
If the board has two USB-C ports, it's an S3 or C3 devkit with native USB. If it has a single micro-USB, check the module: a metal shield with a small square chip and "ESP32-WROOM" printed is the classic; a tiny 3×3 mm QFN with few passives is a C3 or C6. The board width is the last tell: 38-pin classic boards are wider with pins on both edges, C3-DevKitM-1 is narrow with 15 pins a side, and the C6-DevKitC-1 has 16 a side with NC pins at the ends. When in doubt, the module marking printed on the shield (WROOM-32E / WROOM-1U / MINI-1) is definitive.
Frequently Asked Questions
How many GPIO pins does an ESP32 have?
Which ESP32 pins are input-only?
Which pins can I use for ADC (analog input)?
What are strapping pins and which ones do I need to avoid?
Can I use GPIO6, GPIO7 or GPIO8 on the classic ESP32?
What are the default I2C, SPI and UART pins on an ESP32?
Is the ESP32 5V tolerant?
Why does my ESP32 pin numbering differ from the silkscreen?
More guides
10 starter projects in the right order: from blink to Wi-Fi to your first cloud dashboard, with the hardware list and the wiring traps each one teaches.
How to actually get weeks-to-months battery life: deep sleep modes, wake sources, the dev-board overhead leak, and a measurement recipe to find your real sleep current.
Which board should you buy in 2026? Wi-Fi and Bluetooth vs simplicity vs RP2040 — a decision table by project type, with the ESP32's edge for connected and AI hardware.