ESP32 Pinout Studio | Interactive pinout reference for every ESP32 and ESP8266 module
ESP32 Pinout Studio
Free interactive pinout reference for the whole ESP32 family. Every pin carries its real-world constraints - strapping pins, ADC2/Wi-Fi conflicts, flash-reserved GPIOs, input-only pins, and USB/JTAG lines - so you don't pick a pin that stops your project from booting. Pin names, physical pad layouts, and schematic symbols are generated from Espressif's official KiCad libraries.
Pick a module
ESP32-WROOM-32 pinout
ESP32-WROVER-E pinout
ESP32-S2 pinout
ESP32-S3-WROOM-1 pinout
Waveshare ESP32-S3-Zero pinout
Waveshare ESP32-S3-Touch-LCD-2 pinout
ESP32-C3 pinout
ESP32-C6 pinout
ESP32-C5 pinout
ESP32-H2 pinout
ESP32-DevKitC pinout
ESP32-S3-DevKitC-1 pinout
ESP8266 (ESP-12F) pinout
NodeMCU v1.0 pinout
LOLIN D1 Mini pinout
Common ESP32 pin questions
Why doesn't ADC2 work when Wi-Fi is on?
On the classic ESP32, ADC2 is used by the Wi-Fi driver, so any analogRead() on an ADC2 pin (GPIO0, 2, 4, 12-15, 25-27) returns an error while Wi-Fi is active. Use an ADC1 pin (GPIO32-39) for analog readings when Wi-Fi is on. The ESP32-S3, C3, C5, C6 and H2 do not have this conflict.
Can I use GPIO12 on the ESP32?
GPIO12 (MTDI) is a strapping pin. It is sampled at boot to select flash voltage and must be LOW at boot for 3.3 V flash. If something drives it HIGH during reset, the chip can fail to access flash and won't start. It is usable as a normal GPIO after boot - just never hold it HIGH at reset.
Which ESP32 pins are safe to use?
Avoid GPIO6-11 (wired to internal SPI flash - using them crashes the chip), treat GPIO0, 2, 12 and 15 as strapping pins, and remember GPIO34, 35, 36 and 39 are input-only. The generally safe output pins are GPIO4, 5, 13, 14, 16-19, 21-23, 25-27, 32 and 33.