ESP32 Pinout Reference
Searchable pin reference and clickable board diagram for the ESP32 DevKit v1 (30-pin), DevKitC (38-pin), C3 SuperMini, S3, C3, S2 and C6. See each GPIO's type and its special functions (ADC, Touch, DAC, I2C, SPI, UART, input-only) instantly. Everything runs in your browser.
| Pin | Type | Special functions |
|---|
Tip: click a pin row (or press Enter) to copy the pin name to your clipboard.
What is an ESP32 Pinout (Pin Diagram)?
An ESP32 pinout is a map of every GPIO on the development board and the functions it supports. On the ESP32 almost every pin is multi-purpose: the same GPIO can act as digital I/O, an ADC (analog input), a capacitive touch channel and a PWM output. Picking the right pin decides whether a project works; a wrong choice can stop the board from booting or keep a sensor from ever being read. This tool gives you a searchable reference for the ESP32 DevKit v1 (30-pin), ESP32-DevKitC (38-pin), ESP32-S3 and ESP32-C3, matching Espressif's documentation. All data is embedded in the page and every operation runs locally in your browser.
How to use it
- Choose your board from the dropdown (DevKit v1 30-pin, DevKitC 38-pin, S3 or C3). The table updates instantly with that board's pins.
- Type a pin name or function in the search box, for example GPIO21, SDA, ADC1, touch, DAC or VSPI. The table filters as you type.
- Click an ADC, Touch, DAC, I2C, SPI, UART or Input-only chip to list only the pins that support that function.
- Click a pin row and its name (e.g.
GPIO21) is copied to the clipboard, ready to paste into your sketch.
Board summaries
ESP32 DevKit v1 (30-pin): based on the ESP32-WROOM-32, 240 MHz dual-core with Wi-Fi + Bluetooth. The most common ESP32 board. 18 ADC channels (ADC1 + ADC2), 10 capacitive touch channels, 2 DACs (GPIO25/26). Default I2C is GPIO21/22; default SPI (VSPI) is MOSI=23 / MISO=19 / SCK=18 / SS=5. 3.3V logic, not 5V-tolerant.
ESP32-DevKitC (38-pin): uses the same WROOM-32 chip as the DevKit v1; pin functions are identical. The 38-pin board simply breaks out more GND pins and both SENSOR_VP/VN inputs. The answer to "30-pin or 38-pin" is that they are electrically the same, only the physical breakout differs.
ESP32-S3: dual-core LX7 with AI acceleration (vector instructions) and native USB (GPIO19 D- / GPIO20 D+). No DAC; ADC1 is on GPIO1-10, ADC2 on GPIO11-20, and touch on GPIO1-14. The flexible GPIO matrix means I2C/SPI/UART pins are assigned in code. On the DevKitC-1 the RGB LED is on GPIO48.
ESP32-C3 (DevKitM-1): single-core RISC-V, low-cost. It has no touch and no DAC. ADC1 is on GPIO0-4 and ADC2 on GPIO5. Native USB is on GPIO18 (D-) / GPIO19 (D+). GPIO11-17 are used by the internal flash and are not broken out.
ESP32-C3 SuperMini: a tiny, ultra-cheap 16-pin board built on the same C3 chip, with USB-C and a ceramic antenna. The on-board LED is GPIO8 (active low) and BOOT is GPIO9. Ideal for wearables and compact BLE/Wi-Fi projects.
ESP32-S2: single-core LX7 with Wi-Fi but no Bluetooth. It offers native USB OTG (GPIO19/20) and two DACs (GPIO17/18), which suits USB HID and device projects.
ESP32-C6: RISC-V with Wi-Fi 6, BLE 5 and 802.15.4 (Thread/Zigbee). No touch/DAC; ADC1 is on GPIO0-6 and native USB on GPIO12/13. Ideal for Matter and smart-home devices.
Common gotchas
- Not 5V-tolerant: every ESP32 runs at 3.3V logic. Feeding 5V into a GPIO damages the chip; use a level shifter.
- Input-only pins (classic ESP32): GPIO34, 35, 36 (VP) and 39 (VN) cannot drive an output and have no internal pull-up/pull-down. Reading a button on them needs an external resistor.
- Flash pins: on the classic ESP32 GPIO6-11 connect to the on-board SPI flash; on the C3 GPIO11-17 belong to flash the same way. Using them will hang the board.
- Strapping (boot) pins: on the classic ESP32 GPIO0, 2, 12, 15 must sit at a specific level at boot; wiring them wrong stops the board from starting.
- ADC2 vs Wi-Fi conflict: while Wi-Fi is on, the ADC2 channels (GPIO0, 2, 4, 12-15, 25-27 on the classic ESP32) cannot do analog reads. Use ADC1 pins (GPIO32-39) for analog with Wi-Fi active.
- No fixed I2C/SPI on S3/C3: pins are routed through the GPIO matrix, so state the pins explicitly in code with
Wire.begin(SDA, SCL).
This reference is a practical companion for electronics learners, anyone building IoT and prototypes with the ESP32, and anyone drawing a schematic. It does not replace the official datasheets; for critical designs always confirm against Espressif's documentation.
Frequently Asked Questions
How many GPIO pins does the ESP32 DevKit v1 have?
The ESP32-WROOM-32 module has 34 physical GPIOs. GPIO6-11 are tied to the on-board flash and cannot be used, while GPIO34-39 are input-only. In practice you get roughly 22-25 freely usable GPIOs. The 38-pin DevKitC uses the same chip and just exposes more GND pins.
What are the default I2C (SDA/SCL) and SPI pins on the ESP32?
On the classic ESP32 the default I2C is SDA=GPIO21, SCL=GPIO22, remappable with Wire.begin(SDA, SCL). Default SPI (VSPI) is MOSI=GPIO23, MISO=GPIO19, SCK=GPIO18, SS=GPIO5. On the S3 and C3 these pins are assigned in code.
Which ESP32 pins are input-only?
On the classic ESP32, GPIO34, GPIO35, GPIO36 (VP) and GPIO39 (VN) are input-only; they cannot be outputs and have no internal pull-up/pull-down. The ESP32-S3 and C3 have no input-only pins.
Is the ESP32 5V-tolerant?
No. All ESP32 I/O runs at 3.3V and is not 5V-tolerant. Use a level shifter or voltage divider for 5V sensors.
Is the pin data sent to a server?
No. The tool runs entirely in your browser; all pin data is embedded in the page, no network requests are made and nothing is stored.