ESP32-S3 Pinout Guide: GPIO, ADC, PWM, USB & More
Sep 14th, 2026

The ESP32-S3 is a dual-core microcontroller from Espressif built around Xtensa LX7 processors running at up to 240 MHz.Understanding the ESP32-S3 Pinout is especially useful because the chip combines 2.4 GHz Wi-Fi, Bluetooth Low Energy, USB support and a broad selection of digital and analog peripherals.Compared with the smaller ESP32-C3, one of its most obvious advantages is the larger number of GPIOs available for displays, sensors and other peripherals.
Choosing the right ESP32-S3 GPIO pins matters.Some GPIOs have dedicated analog or USB functions, some affect the boot process, and others may already be connected to Flash or PSRAM.
This ESP32-S3 DevKitC-1 pinout guide uses the ESP32-S3-DevKitC-1 v1.1 as the reference board.Other ESP32-S3 boards can expose a different set of pins, particularly when different Flash and PSRAM configurations are used.

ESP32-S3 Pinout Overview
Which Board Does This Pinout Cover?
The ESP32-S3-DevKitC-1 is Espressif's general-purpose development board for ESP32-S3-WROOM modules. Most available ESP32-S3 GPIO lines are brought to the two header rows.An important detail when choosing ESP32-S3 GPIO pins is the board revision. The original ESP32-S3-DevKitC-1 connects its addressable RGB LED to GPIO48, while revision v1.1 uses GPIO38.
Memory configuration is another consideration when reading an ESP32-S3 Pinout. A GPIO visible in the ESP32-S3 chip documentation is not necessarily free on every module because Flash and PSRAM can occupy additional pins.
ESP32-S3 Pinout Diagram
The following ESP32-S3 pinout diagram is Espressif's official pin layout for the ESP32-S3-DevKitC-1. It shows the GPIO numbers together with ADC, touch, JTAG, USB, RTC and other important functions.
Official ESP32-S3-DevKitC-1 v1.1 documentation and pinout

Quick Pin Reference Table
| GPIO | Main Capabilities | ADC/Touch | Important Notes |
|---|---|---|---|
| 0 | GPIO, PWM | — | BOOT/strapping pin |
| 1–10 | GPIO, PWM, peripheral routing | ADC1, Touch | ADC1-capable pins; GPIO3 is also a strapping pin and should be used with caution during reset. |
| 11–14 | GPIO, PWM, peripheral routing | ADC2, Touch | ADC2 has Wi-Fi restrictions |
| 15–18 | GPIO, PWM, peripheral routing | ADC2 | General I/O when ADC2 is not required |
| 19 | GPIO, USB D− | ADC2 | Native USB |
| 20 | GPIO, USB D+ | ADC2 | Native USB |
| 21 | GPIO, PWM | — | General-purpose I/O |
| 35–37 | GPIO/SPI | — | Availability depends on memory configuration |
| 38 | GPIO, PWM | — | RGB LED on DevKitC-1 v1.1 |
| 39–42 | GPIO, JTAG | — | Debug interface |
| 43–44 | GPIO, UART0 | — | Commonly used for serial communication |
| 45–46 | GPIO | — | Strapping pins |
| 47–48 | GPIO | — | Check module configuration |
The ESP32-S3 provides ADC1 on GPIO1–10 and ADC2 on GPIO11–20. Its 14 external capacitive-touch channels occupy GPIO1–14.
ESP32-S3 Power, Control, and GPIO Pins
Power and Control Pins
3V3 supplies the board's 3.3 V rail, while 5V can be used as the board's 5 V supply connection. GND is the common electrical ground. The EN/RST line resets the ESP32-S3 when pulled low. BOOT, connected to GPIO0, is one of the ESP32-S3 GPIO pins involved in placing the chip into firmware download mode.
ESP32-S3 GPIO pins operate in a 3.3 V domain, so a 5 V signal should not be applied directly to an I/O pin.
Power warning: Use only one power-input method at a time: USB power through either or both onboard USB ports, the 5V and GND header pins, or the regulated 3.3V and GND header pins. Do not combine USB power with an external 5V or 3.3V supply, and never supply 5V and 3.3V simultaneously. Doing so may backfeed the power circuit and damage the board or power source.
How ESP32-S3 GPIO Mapping Works
With ESP32-S3 GPIO mapping, not every peripheral has a permanently assigned pin. The ESP32-S3 combines direct IO MUX connections with a GPIO Matrix, allowing many peripheral signals to be routed to different GPIOs.
Functions such as ADC, capacitive touch, USB and boot strapping are tied to particular ESP32-S3 GPIO pins. In contrast, I2C, UART, SPI and PWM signals can generally be routed to suitable pins.
For that reason, the communication pins shown below are recommended examples, not fixed pins.
ESP32-S3 ADC, Touch, and PWM Pins
ESP32-S3 ADC Pins
The ESP32-S3 ADC pins are connected to two 12-bit SAR ADC units. GPIO1–GPIO10 belong to ADC1, while GPIO11–GPIO20 belong to ADC2.ADC2 shares hardware resources with Wi-Fi, so ADC2 cannot be used simultaneously with Wi-Fi; ADC1 is therefore the safer choice for projects that need wireless connectivity and analog measurements simultaneously.
ADC readings are not precision voltage measurements by default. ESP32 ADC calibration can improve results, and the input must remain within the supported voltage range for the selected attenuation.
Among the ESP32-S3 ADC pins, GPIO1, GPIO2,and GPIO4–GPIO10 are generally preferable for analog input. GPIO3 also supports ADC1, but because it is a strapping pin, connected circuitry should not force its logic level during reset.
Pinout Example: Read a Potentiometer Using ADC1
GPIO4 is used here because it is an ADC1 pin and is exposed on the DevKitC-1.

The returned raw value is nominally between 0 and 4095 with 12-bit resolution.
ESP32-S3 Touch Pins
The ESP32-S3 touch pins, GPIO1 through GPIO14, can work as capacitive touch inputs. They can detect changes in capacitance caused by a finger approaching or touching an electrode.
These ESP32-S3 GPIO pins are not exclusively reserved for touch sensing. Several have other roles as well. GPIO3, for example, is also a strapping pin, so pin selection still matters.
ESP32-S3 PWM Pins
ESP32-S3 PWM pins are more flexible because the LEDC peripheral provides eight independent channels, and its outputs can be assigned to suitable GPIOs. This makes PWM useful not only for LEDs but also for motor speed, buzzers and other duty-cycle-controlled devices.
ESP32-S3 Communication Pins
ESP32-S3 I2C pins, ESP32-S3 SPI pins, and ESP32-S3 UART pins are largely configurable through the GPIO Matrix.
These are recommended example assignments, not fixed pins.
| Interface | Required Signals | Example Pin Assignment | Important Notes |
|---|---|---|---|
| I2C | SDA, SCL | SDA=8, SCL=9 | Requires pull-up resistors |
| SPI | MOSI, MISO, SCLK, CS | 11, 13, 12, 10 | Pins can be reassigned |
| UART | TX, RX | 17, 18 | UART signals can be routed |
| UART0 | TX, RX | 43, 44 | Common serial/log interface |
The ESP32-S3 also supports I2S, TWAI, SD/MMC and LCD/camera interfaces, which makes the larger ESP32-S3 GPIO count particularly useful in peripheral-heavy projects.
Pinout Example: Connect an I2C OLED Display
As an example of using ESP32-S3 I2C pins, a common SSD1306 I2C OLED can be connected using GPIO8 and GPIO9.

ESP32-S3 USB and Debugging Pins
The ESP32-S3 USB pins used for native USB are:
• GPIO19 — USB D−
• GPIO20 — USB D+
If these ESP32-S3 USB pins are reassigned as ordinary GPIOs, native USB Serial/JTAG functionality is lost.
The ESP32-S3 contains both USB OTG and USB Serial/JTAG controllers. USB OTG is intended for USB device/host applications, while USB Serial/JTAG provides integrated programming, serial communication and debugging. The two controllers share the internal USB PHY.
GPIO39–GPIO42 are associated with conventional JTAG signals, while GPIO43 and GPIO44 are commonly used as ESP32-S3 UART pins for the default UART0 TX and RX functions and serial logs.
ESP32-S3 Boot, Flash, PSRAM, and Restricted Pins
Strapping and Boot Pins
The ESP32-S3 strapping pins include GPIO0, GPIO3, GPIO45 and GPIO46. Their logic state is sampled during reset to determine hardware configuration.GPIO0, for example, participates in boot-mode selection. GPIO45 affects the VDD_SPI configuration, while GPIO3 and GPIO46 also have startup-related roles.
These pins can sometimes be reused after startup, but external circuits must not force an incorrect level while the ESP32-S3 is resetting.
Flash and PSRAM Pin Considerations
GPIO26–GPIO32 are normally associated with SPI Flash and PSRAM and should not be treated as ordinary project GPIOs. With Octal Flash or Octal PSRAM, GPIO33–GPIO37 can also be occupied by memory signals. Espressif therefore advises against using GPIO33–37 for other purposes on relevant ESP32-S3R8/R8V configurations.
This is why the exact module printed on your development board matters as much as the ESP32-S3 chip itself.
Pins to Avoid or Use with Caution
| GPIO | Special Role | Why It Needs Caution | Can It Be Reused? |
|---|---|---|---|
| 0 | BOOT/strap | Wrong reset level can enter download mode | Yes, carefully |
| 3 | Strapping | Sampled during reset | Yes, carefully |
| 19–20 | USB | Required for native USB | Yes, if USB is not needed |
| 26–32 | Flash/PSRAM | Normally used by memory | Generally avoid |
| 33–37 | Octal memory | May be occupied by Flash/PSRAM | Configuration-dependent |
| 38 | RGB LED | Connected to LED on v1.1 | Yes, with board hardware in mind |
| 39–42 | JTAG | Debug interface | Yes, if JTAG is not needed |
| 43–44 | UART0 | Serial logs/programming | Yes |
| 45–46 | Strapping | Affect startup configuration | Yes, carefully |
ESP32-S3 vs ESP32-C3: Which Should You Choose?
The pinout is one of the biggest practical differences between these chips. The larger ESP32-S3 GPIO count makes it well suited to designs needing more I/O and richer peripheral support, whereas the ESP32-C3 is attractive for smaller Wi-Fi/BLE devices.
| Feature | ESP32-S3 | ESP32-C3 |
|---|---|---|
| CPU | Dual-core Xtensa LX7, up to 240 MHz | Single-core RISC-V, up to 160 MHz |
| GPIO | Up to 45 GPIOs | Up to 22 GPIOs |
| ADC | Two 12-bit SAR ADCs, 20 channels | Two 12-bit SAR ADCs, 6 channels |
| Capacitive touch | 14 external touch channels | No |
| USB | USB OTG + USB Serial/JTAG | USB Serial/JTAG |
| PSRAM | Supported on multiple module variants | No dedicated integrated PSRAM interface comparable to S3 |
| Best suited to | Displays, cameras, UI, larger IoT and peripheral-heavy projects | Compact sensors, controllers and cost-sensitive IoT |
For a simple connected sensor with only a handful of signals, the ESP32-C3 is often enough. When the design needs more ESP32-S3 GPIO pins, capacitive touch, native USB OTG, external PSRAM, a display or a camera interface, the ESP32-S3 gives considerably more room to build.
Frequently Asked Questions
How many GPIO pins does the ESP32-S3 have?
The ESP32-S3 provides 45 physical GPIOs: GPIO0–GPIO21 and GPIO26–GPIO48. However, not every pin is available on every development board. Some pins may be reserved for flash, PSRAM, USB, or other onboard hardware.
Does the ESP32-S3 have DAC pins?
No. Unlike the original ESP32, the ESP32-S3 does not include a built-in DAC. For analog-style output, use suitable ESP32-S3 PWM pins with a filter or connect an external DAC.
Can I use different pins for I2C, SPI, and UART?
Usually, yes. The ESP32-S3 GPIO Matrix allows many peripheral signals to be assigned to different GPIOs. Avoid strapping, flash, PSRAM, and USB pins unless you understand how reassigning them affects the board.
Can ADC2 be used while Wi-Fi is active?
No. ADC2 cannot be used simultaneously with Wi-Fi. For projects requiring both Wi-Fi and analog measurements, choose ESP32-S3 ADC pins from ADC1 between GPIO1 and GPIO10.
Conclusion
The ESP32-S3 offers flexible GPIO routing and extensive support for ADC, PWM, touch sensing, communication interfaces, and native USB. However, flash, PSRAM, USB, and strapping functions make some ESP32-S3 GPIO pins unsuitable for general use. Always confirm your exact module and board revision before wiring a project. Compared with the ESP32-C3, the ESP32-S3 is generally better suited to projects requiring more GPIOs, touch input, additional processing power, or PSRAM support.
