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