The "ESP32-S" family (specifically the ESP32-S2 and ESP32-S3) replaces the original ESP32 with native USB, deeper sleep states, and vector instructions. For the industry-standard ESP32-S3-WROOM-1 (DevKitC-1), the default I2C pins are GPIO8 (SDA) and GPIO9 (SCL); native USB is GPIO19 (D-) and GPIO20 (D+). Unlike the original ESP32, the S3 lacks ADC2 and touches pins, but adds octal SPI support and USB-OTG.

The Complete ESP32-S3 Pinout Reference Table

The following table maps the physical DevKitC-1 header pins to the internal ESP32-S3-WROOM-1 GPIOs. This assumes the standard N8R8 (8MB Flash, 8MB PSRAM) module, which is the most common variant shipped in 2026.

DevKit Pin GPIO Number Default / Primary Function Boot Constraint / State 5V Tolerant?
3V3N/APower Output (from onboard LDO)N/ANo
ENGPIO (CHIP_PU)Chip Enable (Active High)Must be HIGH to bootNo
GPIO44General I/O, ADC1_CH3Strapping Pin (Timing)No
GPIO55General I/O, ADC1_CH4NoneNo
GPIO66General I/O, ADC1_CH5NoneNo
GPIO77General I/O, ADC1_CH6NoneNo
GPIO88I2C SDA (Default)NoneNo
GPIO99I2C SCL (Default)NoneNo
GPIO1010General I/O, FSPICS0NoneNo
GPIO1111SPI MOSI (Default)NoneNo
GPIO1212SPI MISO (Default)NoneNo
GPIO1313SPI SCK (Default)NoneNo
GPIO1414General I/O, ADC2_CH3NoneNo
GPIO1515General I/O, ADC2_CH4NoneNo
GPIO1616General I/O, ADC2_CH5NoneNo
GPIO1717General I/O, DAC_1 (S2 only)NoneNo
GPIO1818General I/O, DAC_2 (S2 only)NoneNo
GPIO1919USB D- (Native USB-OTG)NoneNo (3.3V)
GPIO2020USB D+ (Native USB-OTG)NoneNo (3.3V)
GPIO2121General I/ONoneNo
GPIO3535Internal SPI Flash (Do Not Use)ReservedNo
GPIO3636Internal SPI Flash (Do Not Use)ReservedNo
GPIO4343Default UART0 TXNoneNo
GPIO4444Default UART0 RXNoneNo
GPIO4545General I/OStrapping Pin (VDD_SPI)No
GPIO4646General I/OStrapping Pin (Log)No
GPIO4747General I/O, WS2812 LED (DevKit)NoneNo
GPIO4848General I/O, WS2812 LED (DevKit)NoneNo

Rows People Get Wrong (and How to Fix Them)

When debugging a bricked boot sequence or a noisy sensor read, 90% of issues trace back to misinterpreting three specific areas of the ESP32-S3 datasheet.

1. The Strapping Pins (GPIO0, GPIO3, GPIO45, GPIO46)

These pins are sampled by the internal bootloader during reset. If you wire a sensor or relay directly to these pins, the external circuit's pull-up/pull-down resistors will hijack the boot process.

  • GPIO0: Must be HIGH for normal SPI flash boot. If pulled LOW (e.g., by a button or sensor), the chip enters the serial bootloader.
  • GPIO45: Selects the VDD_SPI voltage. Must be LOW for 3.3V. If accidentally pulled HIGH, the internal LDO outputs 1.8V, brownout-resetting the chip when the WiFi radio fires up.
  • GPIO46: Selects the boot log output. Leave it floating or pulled LOW for standard UART0 logging.
Callout-Warning: Never wire a mechanical switch directly to GPIO0 without a 10kΩ pull-up resistor to 3.3V. A floating GPIO0 during power-on will permanently trap the S3 in download mode.

2. The "Missing" ADC2 and Touch Pins

Unlike the original ESP32, the ESP32-S3 does not have ADC2. Furthermore, the capacitive touch sensor peripheral was removed entirely. If you are porting legacy code from an ESP32-WROOM, any calls to touchRead() or analogRead() on S3-specific pins will return garbage data or throw compile errors. Stick to ADC1 (GPIO1 through GPIO10).

3. Octal SPI Flash Conflicts (GPIO33-37)

On N8R8 modules (8MB PSRAM), the PSRAM communicates via Octal SPI using GPIO33 through GPIO37. These pins are routed internally under the metal RF shield. They are physically broken out on some third-party DevKits, but using them for external I/O will cause immediate PSRAM memory corruption and random reboots.

Industrial Wiring Standards: IEC vs NEC Sensor Colors

When wiring an ESP32-S3 to 24V industrial sensors (via optocouplers or level shifters), the GPIO pinout is only half the battle. The external DC control wiring must follow regional standards to pass inspection and prevent catastrophic cross-wiring. According to the Espressif hardware design guidelines, isolation is mandatory for industrial I/O.

Wire Function IEC 60446 (EU / Global) NEC NFPA 79 (North America) Old UK (Pre-2004 Legacy)
DC Positive (+24V / +12V) Brown Red Red
DC Negative / Common (0V) Blue Black or Blue Black
Signal / Switched Output Black (or White) Yellow or Orange Yellow
Protective Earth (Shield) Green-Yellow Green or Green-Yellow Green

Practical Application: If you are wiring a 24V NPN proximity sensor to an optocoupler that drives GPIO14 on the ESP32-S3, use Brown for the sensor's +24V supply, Blue for the 0V common, and Black for the signal wire feeding the optocoupler's anode. Never use Green-Yellow for a DC signal return; a technician will assume it is earth ground and bond it to the chassis, shorting your power supply.

Faded Silk? Safe Interpretation & Verification

Bare ESP32-S3-WROOM-1 modules often have scratched silkscreens, and cheap clone DevKits frequently misprint pin labels. Before applying power to an unverified board, use a multimeter to map the power and ground planes.

  1. Locate Pin 1: On the bare WROOM module, Pin 1 is indicated by a chamfered corner on the PCB substrate or a small laser-etched dot near the bottom-left pad array. On a DevKit, Pin 1 is typically the 3V3 pin closest to the USB port.
  2. Verify VCC and GND: Set your multimeter to continuity/diode mode. Probe the suspected GND pin against the metal RF shield. You should read < 1 Ω. The shield is always bonded to internal ground.
  3. Check for Shorts: Measure resistance between the 3V3 pin and GND with the board unpowered. A healthy board will read between 10kΩ and 50kΩ (due to decoupling capacitors and the LDO). If it reads < 5 Ω, the module has a dead short—likely a blown tantalum capacitor or a fried ESD diode. Do not plug it into USB.
  4. Trace the EN Pin: The EN (Chip Enable) pin must have a 10kΩ pull-up to 3V3 and a 1µF capacitor to GND. If your multimeter reads infinite resistance between EN and 3V3, the pull-up is missing, and the chip will randomly reset due to noise.

Decision Path: Which ESP32-S Module to Pick

The "ESP32-S" umbrella covers several distinct silicon variants. Use this decision matrix to terminate your selection process and order the exact part number for your 2026 build.

If your project requires... Then choose this exact module... Why this wins
Native USB HID/MIDI, AI edge inference, and camera interfaces. ESP32-S3-WROOM-1-N8R8 Dual-core 240MHz with vector instructions, 8MB PSRAM for frame buffers, native USB-OTG.
Ultra-low power battery operation, simple touch UI, no Bluetooth. ESP32-S2-MINI-2U Single-core, smaller footprint, native USB, lacks Bluetooth (saving BOM cost and sleep current).
High-temperature industrial enclosures (up to 105°C). ESP32-S3-WROOM-1U-H4 The "H4" suffix denotes the 105°C industrial grading; standard modules fail at 85°C.
External antenna routing for sealed metal enclosures. ESP32-S3-WROOM-1U-N8 The "U" suffix means U.FL connector for an external antenna, bypassing the PCB trace antenna.
Callout-Tip: For 95% of hobbyist and commercial IoT prototypes, the ESP32-S3-WROOM-1-N8R8 is the default, zero-compromise pick. It provides the maximum GPIO breakout, sufficient PSRAM for audio/ML tasks, and is universally supported by the Arduino and ESP-IDF toolchains without requiring custom partition tables.