ESP32 Calcs

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.

Find pins by function:

J2 (left)

pin 1 at top · USB end at bottom

J3 (right)

pin 1 at top · USB end at bottom
Tap any pin

Click 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).

Spot-checked wiring facts you'll need:
  • 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).
Core facts
Boards covered4 (DevKitC V4 · S3-DevKitC-1 · C3-DevKitM-1 · C6-DevKitC-1)
Data sourceEspressif user-guide Header Block tables (linked per board)
Chips coveredESP32 · ESP32-S3 · ESP32-C3 · ESP32-C6
Pin count38 / 44 / 30 / 32 GPIO headers
Updated2026-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?
The classic ESP32 chip has 34 GPIOs, but a dev board exposes fewer usable ones: GPIO6–11 belong to the flash chip, GPIO34–39 are input-only, and GPIO16/17 exist only on WROOM modules. Practically, a 38-pin DevKitC gives you about 25 freely usable pins for your project. The S3 exposes far more (up to 45 usable pins), and the C3/C6 are smaller chips: C3 has 22 GPIOs, C6 has 30.
Which ESP32 pins are input-only?
On the classic ESP32 (DevKitC V4 included): GPIO34, GPIO35, GPIO36 (VP) and GPIO39 (VN) are input-only — no output, no PWM, no internal pull-up. They're excellent for analog sensors and ADC reads, useless for LEDs or relays. The S3, C3 and C6 have no input-only pins; every GPIO can output.
Which pins can I use for ADC (analog input)?
On the classic ESP32, ADC1 lives on GPIO32–39 — use these for any sensor while Wi-Fi is active. ADC2 is on GPIO0, 2, 4, 12–15, 25–27, but ADC2 is shared with the Wi-Fi hardware: its readings fail the moment Wi-Fi connects. On the S3 both ADC1 and ADC2 are usable with Wi-Fi, the C3 has ADC1 on GPIO0–4 plus ADC2 channel 0 on GPIO5, and the C6 has a single ADC (7 channels on GPIO0–6).
What are strapping pins and which ones do I need to avoid?
Strapping pins are read at reset to select boot mode, flash voltage and other startup behavior. Classic ESP32: GPIO0, 2, 5, 12, 15. ESP32-S3: GPIO0, 3, 45, 46. ESP32-C3: GPIO2, 8, 9. ESP32-C6: GPIO4, 5, 8, 9, 15. Don't wire anything that forces these pins at boot — a button pulling GPIO0 low at reset drops the chip into the bootloader instead of running your program.
Can I use GPIO6, GPIO7 or GPIO8 on the classic ESP32?
No — on the classic ESP32, GPIO6–11 (silkscreened CLK, D0, D1, D2, D3, CMD on the DevKitC) connect to the on-module SPI flash. Using them as general I/O hangs or bricks the boot. On the S3/C3/C6 the flash is on different pins, so those GPIO numbers are usable — this is one of the biggest differences between boards and a reason a one-image pinout fails people.
What are the default I2C, SPI and UART pins on an ESP32?
Defaults on the classic ESP32: I2C — SDA GPIO21, SCL GPIO22; VSPI — MOSI 23, MISO 19, SCK 18, CS 5; UART0 — TX GPIO1, RX GPIO3 (this is also the flashing and boot-log port, so don't repurpose it permanently). Any GPIO can host I2C/SPI/UART through the GPIO matrix on the ESP32 family, but keeping the defaults saves code and confusion.
Is the ESP32 5V tolerant?
No. All GPIOs are 3.3 V — the absolute maximum on any pin is around 3.6 V. A 5 V sensor output wired straight to a GPIO is out of spec and can damage the pin; use a voltage divider (our divider calculator handles the values) or a level shifter. Note the chip can be powered from 5 V via the board's regulator — it's the signal pins that are 3.3 V only.
Why does my ESP32 pin numbering differ from the silkscreen?
Because clone vendors print what they like: some label pins D1/D2 (conflicting with the ESP8266 convention), some print raw GPIO numbers, some print module pin names. The GPIO number and function never change with the label — use the GPIO number from this tool as the source of truth, and treat silkscreen as a rough hint.

More guides

ESP32 Projects for Beginners

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.

ESP32 Deep Sleep & Battery Power Guide

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.

ESP32 vs Arduino vs Raspberry Pi Pico

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.