databit.me

October 5, 2026 · 6 min read

ESP32 Pins You Should NOT Use (and the Ones That Are Safe)

ESP32PinoutGPIOTroubleshooting

The ESP32 has plenty of pins, but a surprising number of them come with strings attached. Wire the wrong sensor to the wrong GPIO and your board refuses to boot, resets at random, or reads garbage whenever Wi-Fi is on. This guide covers the classic ESP32 (the WROOM-32 DevKit with 30 or 38 pins) and ends with a list of safe pins you can use without thinking.

Ad space · top

Keep the ESP32 pinout open in another tab while you read.

GPIO6 to GPIO11: never use these

On the standard ESP32 module, GPIO6, 7, 8, 9, 10 and 11 connect to the internal SPI flash chip that holds your program. Use them as ordinary pins and the chip crashes immediately. Some 38-pin boards label them SD0, SD1, SD2, SD3, CMD and CLK. Treat them as not connected. If you have an ESP32 DevKit with a 30-pin layout, they are often not even broken out.

Strapping pins: GPIO0, 2, 5, 12 and 15

At power-up the ESP32 reads the level of a few pins to decide how to start. After boot they behave normally, but whatever you connect must not fight the boot level.

PinDefault at bootWhat it doesGotcha
GPIO0Pull-up (high)Low at reset = download modeA button or sensor holding it low stops normal boot
GPIO2Pull-down (low)Must be low or floating to enter download modeOften wired to the onboard LED; loads can break flashing
GPIO5Pull-up (high)Affects boot timing (SDIO)Also outputs a PWM signal at boot
GPIO12 (MTDI)Pull-down (low)Selects flash voltageHigh at boot can cause a boot loop on 3.3 V flash
GPIO15 (MTDO)Pull-up (high)Low silences the boot logKeep high unless you want no boot messages

GPIO12 is the nastiest. If it reads high at reset, the chip tries to run the flash at 1.8 V, which most modules do not use, and you get a boot loop with no useful error. A pull-up resistor, a sensor with an output that idles high, or a stuck button can do it. If you must use GPIO12, keep it low at boot or burn the flash-voltage fuse (an advanced, permanent step).

Pins that misbehave at boot

  • GPIO1 and GPIO3 are UART0 TX and RX, used by the USB serial chip and the boot log. Using them blocks the Serial Monitor and flashing. GPIO1 prints boot messages.
  • GPIO5 and GPIO14 output a PWM signal for a short moment at boot. A relay or motor on these pins can twitch on every reset.
  • GPIO15 can emit boot messages if not held high.
  • GPIO2 is often tied to a board LED, so the LED flickers during boot and flashing.

For relays and anything dangerous, choose a pin without boot activity and add a pull-down so the output is defined while the chip is starting up.

Input-only pins: GPIO34 to GPIO39

Ad space · inline

GPIO34, 35, 36 (VP) and 39 (VN) are input only. GPIO37 and 38 exist on the chip but are rarely exposed. These pins cannot drive an output and have no internal pull-up or pull-down resistors, so a button needs an external resistor. They are perfect for analogue sensors and for signals through a voltage divider.

ADC2 and Wi-Fi do not mix

The ESP32 has two ADCs. ADC2 shares hardware with the Wi-Fi radio, so analogue readings on its pins fail or return errors whenever Wi-Fi is running. ADC2 pins are GPIO0, 2, 4, 12, 13, 14, 15, 25, 26 and 27. For analogue reads in a Wi-Fi project, use ADC1: GPIO32, 33, 34, 35, 36 and 39. Remember that the ESP32 ADC is nonlinear near the ends of its range, so avoid readings close to 0 V and 3.3 V.

Touch, DAC and other special functions

  • Touch sensing: GPIO0, 2, 4, 12, 13, 14, 15, 27, 32 and 33 (touch channels T0 to T9).
  • DAC: GPIO25 and GPIO26 give true 8-bit analogue output.
  • RTC GPIOs (a subset of pins) can wake the chip from deep sleep. Check the pinout before choosing a wake button.
  • Voltage: every pin is 3.3 V logic and not 5 V tolerant. Use a level shifter or divider.
  • Current: a pin can source or sink only a small current. Drive LEDs through a resistor from the LED resistor calculator, and use a transistor for anything bigger.

The safe list

These pins have no boot-time trouble, are not tied to flash, and work as input and output on a standard WROOM-32 board.

GPIOGood forNotes
4General I/OADC2 and touch; avoid analogue with Wi-Fi
13General I/O, SPI MOSIADC2; touch
16, 17UART2, general I/ONot on PSRAM modules
18, 19, 23SPI (SCK, MISO, MOSI)VSPI default bus
21, 22I2C (SDA, SCL)Default I2C pins
25, 26DAC, I/OADC2
27General I/OADC2, touch
32, 33Analogue input, I/OADC1, works with Wi-Fi

Newer chips follow different rules

Do not carry this list to other chips. On the ESP32-C3, strapping pins are GPIO2, 8 and 9, and GPIO18 and 19 are the USB pins on boards with native USB. The ESP32-S3 uses GPIO0, 3, 45 and 46 for strapping, GPIO19 and 20 for USB, and GPIO26 to 32 for flash and PSRAM; modules with octal PSRAM also reserve GPIO33 to 37. Small boards such as the ESP32-C3 SuperMini and XIAO ESP32-C3 expose only a handful of pins, so check each one against its pinout.

Want every pin on one sheet you can pin above your desk? The printable Pro Pinout Pack has them, and the full list of boards lives in the board finder. When something will not boot, look at what is wired to the strapping pins first. It is the cause more than half the time.

Boards mentioned

Free download

The Microcontroller Cheat Sheet

Logic levels, pins to avoid, I2C / SPI / UART basics and a quick-pick table of the best boards — on one printable PDF. Enter your email and it's yours.

Only used to send the sheet and the odd databit.me update. See the privacy policy.

Keep reading

Ad space · bottom