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? |
|---|---|---|---|---|
| 3V3 | N/A | Power Output (from onboard LDO) | N/A | No |
| EN | GPIO (CHIP_PU) | Chip Enable (Active High) | Must be HIGH to boot | No |
| GPIO4 | 4 | General I/O, ADC1_CH3 | Strapping Pin (Timing) | No |
| GPIO5 | 5 | General I/O, ADC1_CH4 | None | No |
| GPIO6 | 6 | General I/O, ADC1_CH5 | None | No |
| GPIO7 | 7 | General I/O, ADC1_CH6 | None | No |
| GPIO8 | 8 | I2C SDA (Default) | None | No |
| GPIO9 | 9 | I2C SCL (Default) | None | No |
| GPIO10 | 10 | General I/O, FSPICS0 | None | No |
| GPIO11 | 11 | SPI MOSI (Default) | None | No |
| GPIO12 | 12 | SPI MISO (Default) | None | No |
| GPIO13 | 13 | SPI SCK (Default) | None | No |
| GPIO14 | 14 | General I/O, ADC2_CH3 | None | No |
| GPIO15 | 15 | General I/O, ADC2_CH4 | None | No |
| GPIO16 | 16 | General I/O, ADC2_CH5 | None | No |
| GPIO17 | 17 | General I/O, DAC_1 (S2 only) | None | No |
| GPIO18 | 18 | General I/O, DAC_2 (S2 only) | None | No |
| GPIO19 | 19 | USB D- (Native USB-OTG) | None | No (3.3V) |
| GPIO20 | 20 | USB D+ (Native USB-OTG) | None | No (3.3V) |
| GPIO21 | 21 | General I/O | None | No |
| GPIO35 | 35 | Internal SPI Flash (Do Not Use) | Reserved | No |
| GPIO36 | 36 | Internal SPI Flash (Do Not Use) | Reserved | No |
| GPIO43 | 43 | Default UART0 TX | None | No |
| GPIO44 | 44 | Default UART0 RX | None | No |
| GPIO45 | 45 | General I/O | Strapping Pin (VDD_SPI) | No |
| GPIO46 | 46 | General I/O | Strapping Pin (Log) | No |
| GPIO47 | 47 | General I/O, WS2812 LED (DevKit) | None | No |
| GPIO48 | 48 | General I/O, WS2812 LED (DevKit) | None | No |
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.
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.
- 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.
- 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.
- 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.
- 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. |






