The ESP32-S3-WROOM-1 module exposes 27 physical pads, but only a subset are available for general-purpose I/O once you account for internal flash routing, strapping pins, and native USB. The most critical limitation to understand upfront: UART0 default pins (GPIO43/GPIO44) are not broken out on the standard 27-pin WROOM-1 module. You must use Native USB (GPIO19/GPIO20) for serial console output or remap UART1 to available pads.

The Complete ESP32-S3-WROOM-1 Pinout Table

Below is the physical pad mapping for the standard ESP32-S3-WROOM-1 (PCB antenna) and WROOM-1U (IPEX connector) modules. Pin 1 is indicated by the chamfered edge or dimple on the RF shield.

PadGPIOPrimary FunctionConstraints & Notes
1GNDGroundConnect to system common ground.
23V3Power Input3.0V to 3.6V. Do not exceed 3.6V.
3ENChip EnableActive high. Pull to GND to reset.
4IO4GPIO / ADC1Safe for general I/O.
5IO5GPIO / ADC1Safe for general I/O.
6IO6GPIO / ADC1Safe for general I/O.
7IO7GPIO / ADC1Safe for general I/O.
8IO15GPIO / U1RXDDefault UART1 RX. Safe for I2C.
9IO16GPIO / U1TXDDefault UART1 TX. Safe for I2C.
10IO17GPIOSafe for general I/O.
11IO18GPIOSafe for general I/O.
12IO8GPIO / I2CRecommended default I2C SDA.
13IO19USB D-Native USB OTG. Do not use for standard GPIO.
14IO20USB D+Native USB OTG. Do not use for standard GPIO.
15IO3Strapping PinControls JTAG vs USB-Serial-JTAG boot source.
16IO46Strapping PinSelects boot log output (ROM vs USB).
17IO9GPIO / I2CRecommended default I2C SCL.
18IO10GPIO / SPISafe for SPI or general I/O.
19IO11GPIO / SPISafe for SPI or general I/O.
20IO12GPIO / SPISafe for SPI or general I/O.
21IO13GPIO / SPISafe for SPI or general I/O.
22IO14GPIO / SPISafe for SPI or general I/O.
23IO21GPIOSafe for general I/O.
24IO47GPIO / SPICLKOften used for external SPI displays.
25IO48GPIO / SPICSOften used for external SPI displays.
26IO45Strapping PinSelects VDD_SPI voltage (3.3V vs 2.5V).
27IO0Strapping PinMust be LOW for serial download mode.

Rows People Get Wrong: Missing Pads and Internal Routing

When migrating from the original ESP32 or bare ESP32-S3 chips to the WROOM-1 module, designers frequently fall into three pinout traps that result in non-functional PCBs or boot loops.

Trap 1: The Missing UART0 Pins (GPIO43/GPIO44)
On the bare ESP32-S3 silicon and larger development boards (like the DevKitC-1), UART0 defaults to GPIO43 (TX) and GPIO44 (RX). These pads do not exist on the 27-pin WROOM-1 module. If you are designing a custom carrier board for the raw WROOM-1, you must route your primary serial debug connection to the Native USB pins (GPIO19/20) or configure UART1 in software using GPIO15/GPIO16.
Trap 2: Assuming GPIO26-37 are Available
The ESP32-S3 silicon has 45 GPIOs. However, on the WROOM-1 (N8 variant), GPIO26 through GPIO32 are permanently routed internally to the SPI Flash. On the N8R8 variant (with Octal PSRAM), GPIO33 through GPIO37 are also consumed internally. Never route external traces to these GPIO numbers when using WROOM-1 modules; they are physically inaccessible.

Trap 3: Ignoring Strapping Pin States at Boot
GPIO0, GPIO3, GPIO45, and GPIO46 are sampled by the bootloader. If you attach external peripherals (like relays or I2C sensors) to these pins without pull-up/pull-down resistors, the peripheral's initial state might force the ESP32-S3 into SPI boot mode or disable the boot log. Always use 10kΩ resistors to bias strapping pins to their default 'run' states (typically HIGH for GPIO0, GPIO3, and GPIO46) if they are shared with external circuitry.

Module Variants and External DC Wiring Standards

While the silicon pinout is universal, the physical module variant and your external wiring standards dictate how you integrate the S3 into a larger system.

WROOM-1 vs. WROOM-1U vs. WROOM-2

  • WROOM-1: Features an onboard PCB antenna. The 27-pin layout described above applies. Best for general IoT where the enclosure is non-metallic.
  • WROOM-1U: Identical 27-pin pad layout, but replaces the PCB antenna with an IPEX/U.FL connector for an external antenna. Required for metal enclosures or high-interference environments.
  • WROOM-2: A wider package that breaks out additional pins, including the elusive GPIO43/GPIO44 (UART0) and GPIO35-42. Choose this only if you strictly require hardware UART0 on dedicated pads and refuse to use Native USB.

External DC Control Wiring (IEC vs. NEC)

When wiring the S3's 3.3V GPIO outputs to external optocouplers, relay driver boards, or sensors, follow established low-voltage DC color codes to prevent catastrophic 5V/12V backfeed into the module:

  • IEC 60446 (EU/UK/AU Standard): Use Brown for DC Positive (3.3V/5V logic supply) and Blue for DC Negative (GND). Signal wires should be Black or Grey.
  • NEC / US Convention: Use Red for DC Positive and Black for DC Negative. Signal wires are typically White, Yellow, or Green.

Note: Never route mains AC voltage on the same harness as ESP32-S3 GPIO wires without physical separation and shielded cable to prevent inductive coupling and EMI resets.

Safe Interpretation for Unmarked or Faded PCBs

If you are reverse-engineering a custom board or working with a WROOM-1 module where the silkscreen and laser etching have faded, you can reliably identify the pinout using physical landmarks and a multimeter.

  1. Locate Pin 1: Feel the edges of the metal RF shield. One corner will have a distinct chamfer (cut corner) or a small stamped dimple. This is Pin 1 (GND).
  2. Verify Ground Plane: Set your multimeter to continuity mode. Place the black probe on a known system ground (like a USB port shield or large capacitor negative terminal). Probe Pin 1 on the module. It should beep with < 1Ω resistance.
  3. Verify 3V3 Rail: Move to Pin 2. Switch your multimeter to DC Voltage. Power the board. Pin 2 should read between 3.25V and 3.35V relative to Pin 1.
  4. Count Counter-Clockwise: With Pin 1 at the top-left (assuming the module is oriented with the antenna pointing up), count down the left side (1-14), across the bottom (if applicable on your specific breakout), and up the right side to Pin 27.
Bench Trick: If you need to identify the Native USB pins (GPIO19/20) on a completely unmarked board, plug the board into a PC via a USB breakout cable. Use an oscilloscope or logic analyzer to probe the suspected pads. The D- and D+ lines will show distinct 3.3V differential signaling and enumeration chirps when connected to a host.

Peripheral Decision Tree: Exact GPIO Assignments

Stop guessing which pins to use. Follow this decision path to assign GPIOs for your specific peripheral needs on the WROOM-1 module. This framework terminates in concrete, tested pin selections for ESP-IDF v5.x and Arduino-ESP32 core v3.x.

Peripheral NeedDecision CriteriaConcrete Pin Pick (WROOM-1)
Serial Debug / Console Do you have access to Native USB? YES: Use GPIO19 (D-) and GPIO20 (D+).
NO: Use UART1 on GPIO15 (RX) and GPIO16 (TX).
Hardware I2C (Sensors) Need default hardware I2C0 bus? SDA: GPIO8
SCL: GPIO9
(Avoids strapping pin conflicts).
External SPI (Displays/SD) Using standard SPI2_HOST? MOSI: GPIO11
MISO: GPIO13
SCK: GPIO12
CS: GPIO10
WS2812B / NeoPixels Need RMT peripheral output? Data: GPIO48
(Often pre-wired to onboard RGB LED on DevKits, safe for external strips).
Analog Sensors (ADC) Need 12-bit ADC without WiFi noise? Use GPIO4, 5, 6, or 7 (ADC1).
Never use ADC2 (GPIO11-20) if WiFi is active.

For comprehensive electrical characteristics, maximum current sourcing (typically 40mA absolute max per pin, 20mA recommended), and RF layout guidelines, always consult the official ESP32-S3-WROOM-1 Datasheet and the Espressif Hardware Design Guidelines. When in doubt, default to the Native USB pins for serial communication and reserve GPIO8-14 for your primary sensor buses.