ESP32 Pinout Reference
Complete ESP32 WROOM-32 pinout with GPIO, ADC, SPI, I2C, UART pins.
ESP32 pinout reference — GPIO, ADC, DAC, SPI, I2C, and more
The ESP32 is one of the most capable microcontroller modules available, combining dual-core processing (up to 240 MHz), built-in WiFi, Bluetooth 4.2 and BLE, 34 GPIO pins, 18 ADC channels, 2 DAC channels, 3 UARTs, 2 I2C buses, 3 SPI buses, and capacitive touch sensing — all for under $5. Its flexibility makes it the go-to choice for IoT projects, home automation, wearables, and anything that needs wireless connectivity. This interactive pinout reference documents every GPIO pin's functions, restrictions, and best-use guidance.
Input-only pins — GPIO 34, 35, 36, 39
Four GPIO pins on the ESP32 are input-only: GPIO 34, 35, 36 (VP), and 39 (VN). These pins do not have internal pull-up or pull-down resistors and cannot drive output signals. They are optimised for ADC use and connected to the Hall effect sensor (GPIO 36 and 39) and the internal temperature sensor. Never attempt to use these as digital outputs — it will not work and may confuse your circuit debugging.
ADC limitations with WiFi enabled
ESP32's ADC2 (GPIO 0, 2, 4, 12, 13, 14, 15, 25, 26, 27) cannot be used while WiFi is active — the WiFi radio uses ADC2 internally. If your project uses both WiFi and analog sensors, use ADC1 pins exclusively: GPIO 32, 33, 34, 35, 36, 39. ADC accuracy on the ESP32 is also non-linear at the extremes (below 0.1 V and above 3.1 V on a 3.3V supply) — use the built-in ADC calibration or add an op-amp buffer for precision measurements.
Strapping pins — avoid for general GPIO
Several ESP32 GPIO pins are "strapping pins" that the chip reads at boot to determine operating mode: GPIO 0 (boot mode), GPIO 2 (must be LOW for flash download), GPIO 12 (flash voltage selection), GPIO 15 (enables debug output). Pulling these pins HIGH or LOW at boot can prevent the ESP32 from starting correctly. Avoid using GPIO 0, 2, 12, and 15 for general I/O if you can. If you must use them, ensure external pull-ups or pull-downs do not conflict with the boot-time requirements.
Touch sensing pins
The ESP32 has 10 capacitive touch pins (T0–T9) on GPIO 0, 2, 4, 12, 13, 14, 15, 27, 32, 33. Touch inputs work by measuring capacitance changes when a finger approaches the pin. They can be used to build touch buttons, sliders, and proximity sensors without any additional components. Use touchRead() in Arduino IDE or esp_touch in ESP-IDF. Touch sensing is not reliable on the same pins while using them for I2C or SPI — use dedicated GPIOs for each function.
Frequently asked questions
- Which ESP32 pins are input-only?
- Pins GPIO 34, 35, 36 (labeled VP), and 39 (labeled VN) are input-only pins on the ESP32. They do not have internal pull-up or pull-down resistors and cannot be configured as outputs. They are best used for reading analog sensors or external digital signals where output capability is not required.
- Which pins should I avoid on ESP32?
- Avoid using GPIO 6 through 11 — these pins are internally connected to the SPI flash memory chip and using them in your sketch can corrupt flash access and crash the device. GPIO 0, 2, 12, and 15 are strapping pins that the ESP32 checks during boot to determine operating mode. They can be used after boot but must be in specific states (HIGH or LOW) during power-on reset or programming.
- How many ADC channels does the ESP32 have?
- The ESP32 has two ADC units with 18 channels total. ADC1 covers GPIOs 32 through 39 and can be used freely even when Wi-Fi is active. ADC2 covers GPIOs 0, 2, 4, 12–15, 25, 26, and 27, but it cannot be used while Wi-Fi is active because the Wi-Fi subsystem uses ADC2 internally. For reliable analog readings in Wi-Fi projects, always use ADC1 pins.
Related tools
- Resistor Color Code Calculator
Decode resistor color bands. Supports 4-band and 5-band.
- Ohm's Law Calculator
Calculate voltage, current, resistance, or power using Ohm's Law.
- Voltage Divider Calculator
Calculate output voltage for a resistor voltage divider.
- 555 Timer Calculator
Calculate frequency, duty cycle, and timing for 555 timer circuits.
- CRC Calculator Online — CRC-8, CRC-16, CRC-32 & Modbus
Calculate CRC checksums online — CRC-8, CRC-16/MODBUS, CRC-16/CCITT, CRC-32, CRC-32C and more. Shows HEX, DEC and BIN. Supports text and hex input. Browser-only, no upload.