ESP32-S3
⚡ The essentials in 60 seconds
- cpu — dual-core Xtensa LX7 @ up to 240 MHz with added vector instructions for NN/signal-processing acceleration (ESP-DSP, ESP-NN, ESP-WHO, ESP-Skainet) (
- memory — 512 KB internal SRAM, 384 KB (or 448 KB) ROM, 16 KB low-power SRAM; external flash up to 16 MB incl. high-speed octal SPI flash; PSRAM up to 8 MB octal, with configurable data/instruction cache ( datasheet
- connectivity — Wi-Fi 802.11 b/g/n 2.4 GHz (40 MHz bandwidth) + Bluetooth 5 (LE) with Coded PHY long range and 2 Mbps PHY; no Bluetooth Classic (
- usb — native USB-OTG (GPIO19/20) plus a USB-Serial/JTAG peripheral — one chip, two USB personalities (datasheet URL above).
- gpio — 45 programmable GPIOs; SPI, I2S (audio AEC support), I2C, LEDC PWM, RMT, ADC, UART, SD/MMC host, TWAI (CAN), 14 capacitive-touch GPIOs, ultra-low-power (ULP) FSM coprocessor ( - ADC: two 12-bit SAR units; ADC1 channels on GPIO1–GPIO10 (datasheet URL above). No DAC (unlike ESP32/S2) — use PWM/I2S for analog out.
- logic_level — 3.3 v
- On this board : 9 tutorials · 10 code
The ESP32-S3, developed by Espressif Systems, stands as a pivotal microcontroller in the modern landscape of embedded electronics, particularly for projects that require a balance of connectivity, processing power, and artificial intelligence capabilities. Announced in late 2020 and entering volume production between 2021 and 2022, this chip has rapidly become the default recommendation for new designs in the ESP32 family. It is positioned by the manufacturer as a flagship solution for "AI plus Human-Machine Interface" applications. While the exact official launch price is not publicly fixed, street prices for modules typically range from three to eight US dollars, depending heavily on the amount of memory included in the specific variant. This affordability, combined with robust features, has led to its adoption in a wide array of development boards, including the official ESP32-S3-DevKitC-1, the compact Seeed XIAO ESP32S3, and various displays and sensor hubs from makers like Adafruit and LILYGO.
At the heart of the ESP32-S3 is a dual-core Xtensa LX7 processor, capable of running at speeds up to 240 MHz. What distinguishes this core from its predecessors is the addition of vector instructions. In simple terms, vector instructions allow the processor to perform the same mathematical operation on multiple pieces of data simultaneously. This architectural choice is crucial for accelerating neural network calculations and signal processing tasks. Consequently, the ESP32-S3 can run complex algorithms for face detection and offline speech recognition directly on the device, without needing to send data to a cloud server. This is supported by software libraries such as ESP-NN for neural networks and ESP-DSP for digital signal processing, enabling real-time artificial intelligence on a low-power, low-cost chip.
Memory architecture is another critical aspect of this microcontroller. It features 512 KB of internal static RAM and up to 16 MB of external flash memory. A significant upgrade in many variants is the support for octal SPI flash and PSRAM. "Octal" refers to an eight-bit wide data bus, which allows for much higher data transfer speeds compared to standard four-bit interfaces. This speed is essential for graphics-intensive applications, such as driving high-resolution color displays, or for loading larger AI models into memory. Depending on the specific module suffix, such as N8R2 or N16R8, users can choose combinations of flash and PSRAM that best fit their project’s needs, with some versions offering up to 8 MB of octal PSRAM.
Connectivity options are comprehensive, featuring Wi-Fi 802.11 b/g/n on the 2.4 GHz band and Bluetooth 5 Low Energy. The inclusion of Bluetooth 5 brings two important features: Coded PHY, which extends the communication range by using error-correcting codes, and 2 Mbps PHY, which doubles the data transfer speed. It is important to note that the ESP32-S3 does not support Bluetooth Classic, so it cannot be used for traditional audio streaming or file transfers that rely on that older protocol. For wired connections, the chip offers native USB-OTG support, meaning it can act as a USB device or host without needing an external converter chip. Additionally, it includes a USB-Serial/JTAG peripheral, which simplifies development by allowing programmers to flash code and debug the system over the same USB port used for power and data, eliminating the need for separate hardware tools.
The input and output capabilities are extensive, with 45 programmable GPIO pins. These pins support a variety of protocols, including I2C for sensors, SPI for displays, and I2S for audio, which even includes Acoustic Echo Cancellation support for voice assistants. The chip also features capacitive touch sensing on 14 of its pins, allowing for the creation of touch-sensitive interfaces without dedicated touch controllers. However, developers must be aware of certain limitations. Unlike earlier ESP32 models, the ESP32-S3 lacks a Digital-to-Analog Converter, meaning it cannot output a true analog voltage directly; instead, analog-like signals must be simulated using Pulse Width Modulation or I2S. Furthermore, while there are two 12-bit Analog-to-Digital Converters, the second unit is blocked when Wi-Fi is active, a common constraint in this chip family.
Security is a major focus of the ESP32-S3, featuring hardware-accelerated encryption and a unique "World Controller." This controller allows the chip to be divided into two completely isolated execution environments. This means that critical, trusted code can run in one secure world, while less trusted or user-provided code runs in another, preventing malicious software from accessing sensitive data or system resources. This hardware-level separation is vital for commercial products where security integrity is paramount.
Despite its strengths, the ESP32-S3 has specific quirks that developers must navigate. The boot process is controlled by specific "strapping pins," such as GPIO0, GPIO3, GPIO45, and GPIO46. If these pins are connected to external circuits that pull them to the wrong voltage level during startup, the board may fail to boot, appearing dead. Additionally, on modules with octal PSRAM, certain GPIO pins are consumed by the memory interface and are not available for general use. For example, GPIO35 and 36 are often unavailable on N8R8 or N16R8 variants. Developers must carefully check the pinout of their specific module to avoid conflicts.
The software ecosystem is mature and flexible. The primary development environment is the ESP-IDF, Espressif’s official framework, which offers deep control over the hardware. For those preferring a simpler approach, the Arduino core for ESP32 supports the S3, providing easy access to USB CDC serial communication and TinyUSB for HID devices. MicroPython and CircuitPython are also supported, making the chip accessible to beginners and educators. For systems programming, Rust support is available through the esp-rs project. Whether building a smart home hub, a voice-controlled assistant, or a graphical user interface, the ESP32-S3 provides a versatile platform that balances performance, security, and cost, solidifying its place as a cornerstone of modern IoT development.



Pinout diagram


| Attr | Specs | verified |
|---|---|---|
cpu | dual-core Xtensa LX7 @ up to 240 MHz with added vector instructions for NN/signal-processing acceleration (ESP-DSP, ESP-NN, ESP-WHO, ESP-Skainet) ( | ✔ |
memory | 512 KB internal SRAM, 384 KB (or 448 KB) ROM, 16 KB low-power SRAM; external flash up to 16 MB incl. high-speed octal SPI flash; PSRAM up to 8 MB octal, with configurable data/instruction cache ( datasheet | ✔ |
connectivity | Wi-Fi 802.11 b/g/n 2.4 GHz (40 MHz bandwidth) + Bluetooth 5 (LE) with Coded PHY long range and 2 Mbps PHY; no Bluetooth Classic ( | ✔ |
usb | native USB-OTG (GPIO19/20) plus a USB-Serial/JTAG peripheral — one chip, two USB personalities (datasheet URL above). | ? unverified |
gpio | 45 programmable GPIOs; SPI, I2S (audio AEC support), I2C, LEDC PWM, RMT, ADC, UART, SD/MMC host, TWAI (CAN), 14 capacitive-touch GPIOs, ultra-low-power (ULP) FSM coprocessor ( - ADC: two 12-bit SAR units; ADC1 channels on GPIO1–GPIO10 (datasheet URL above). No DAC (unlike ESP32/S2) — use PWM/I2S for analog out. | ✔ |
logic_level | 3.3 v | ? unverified |
power | multiple low-power modes driven by the ULP core; deep sleep in the ~µA class (datasheet power tables). > | ? unverified |
temperature | commercial/industrial grades; module datasheets list up to 65 °C ambient for WROOM variants, extended grades exist. > | ? unverified |
- Manufacturer: Espressif Systems (Shanghai); >
- Variants (chip/module suffixes): flash/PSRAM combos N2R2, N4R2, N8R2, N8R8, N16R8 (octal PSRAM), N8 (flash only), U.FL module versions (-1U); also ESP32-S3-PICO-1 SiP with USB OTG and internal PSRAM (
- Modules: ESP32-S3-WROOM-1/-1U/-2 (
- Common boards: ESP32-S3-DevKitC-1, ESP32-S3-Box-3, Seeed XIAO ESP32S3, Adafruit Feather/QT Py ESP32-S3, LILYGO T-Display-S3, M5Stack StackS3.
+ Strengths
- AI acceleration: Xtensa vector instructions + ESP-NN/ESP-DSP; runs ESP-WHO (face detection) and ESP-Skainet (offline speech) on-device (
- Octal SPI flash/PSRAM (N16R8: 16 MB flash + 8 MB PSRAM) with cache — big-model/graphics headroom (
- BLE 5: long-range Coded PHY + 2 Mbps PHY (
- World Controller peripheral for trusted-execution / privilege separation (
- Dual USB (OTG + Serial/JTAG), MIPI-DSI/RGB LCD support on some packages, camera (DVP) interface → the go-to chip for smart displays (datasheet URL above).
− Weaknesses
- Strapping pins GPIO0/GPIO3/GPIO45/GPIO46: GPIO3 (JTAG select), GPIO45 (VDD_SPI) and GPIO46 (boot) decide boot behavior; loading them = "board dead" symptoms (datasheet §Strapping Pins:
- GPIO44/43 are the UART0 RX/TX defaults — reusing them as GPIO breaks the console; GPIO19/20 are the only USB pins (datasheet URL above).
- Octal PSRAM steals GPIO35/36 (and GPIO37 on some configs): on N8R8/N16R8 modules those pins are consumed by PSRAM — boards silently lose them (module datasheet:
- No DAC: analog-out code ported from ESP32/S2 must move to PWM or I2S (datasheet URL above).
- USB-Serial/JTAG vs USB-OTG muxing: TinyUSB apps claim GPIO19/20; if the app hangs before USB init you may lose the native port and need UART0 or the ROM download mode (ESP-IDF USB docs:
- ADC2 blocked while Wi-Fi is active (family-wide) (
- GPIO0 must not be driven at reset (boot mode) and on many boards it's also the BOOT button — a classic self-inflicted boot loop (datasheet URL above).
- PSRAM + Wi-Fi contention is milder than S2 but cache-invalidation tuning matters for PSRAM-heavy AI workloads (ESP-IDF PSRAM guide:
- Retour d'expérience expert expert — expert-microcontroleur
- Après plusieurs mois d'utilisation des modules ESP32-S3-WROOM-1 et des kits DevKitC-1, je confirme que la puissance de calcul est réelle. Les instructions vectorielles Xtensa LX7 changent la donne pour l'IA embarquée, surtout avec ESP-NN. La connectivité BLE 5 et le Wi-Fi sont stables. Attention to… — expert-microcontroleur
- Salut expert, merci pour le retour. Je bute justement sur ton point concernant l'absence de DAC. J'essaie de porter un vieux projet de générateur audio qui tournait sur un ESP32 classique. Sans DAC, je dois passer par du PWM ou I2S ? Le filtre passe-bas sur le PWM devient vite pénible à calibrer po… — maker-bidule
- Pour compléter sur le DAC, oui, il faut migrer vers I2S ou utiliser la bibliothèque LEDC pour du PWM filtré, mais la qualité audio est moindre. J'ai aussi rencontré le souci des broches USB. Si ton firmware plante avant l'initialisation des GPIO19/20, tu perds le port USB natif. J'ai dû rétablir l'… — codeur_nuit
Community feedback and projects
- ESP32-S3 Synthesizer Project with AI-Assisted Code forum.arduino.cc
- Project with ESP32-S3-Touch-LCD-4B forum.arduino.cc
- ESP32-S3 DevkitC-1 has two USB ports labeled USB and UART arduino.stackexchange.com
- ESP32-S3-MINI issues electronics.stackexchange.com
- ESP-WHO
- Seeed XIAO ESP32S3 getting started
- ESPHome on ESP32-S3
- esp32-s3_datasheet_en.pdf datasheet
- esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf datasheet
- Strapping pins GPIO0/GPIO3/GPIO45/GPIO46: GPIO3 (JTAG select), GPIO45 (VDD_SPI) and GPIO46 (boot) decide boot behavior; loading them = "board dead" symptoms (datasheet §Strapping Pins:
- GPIO44/43 are the UART0 RX/TX defaults — reusing them as GPIO breaks the console; GPIO19/20 are the only USB pins (datasheet URL above).
- Octal PSRAM steals GPIO35/36 (and GPIO37 on some configs): on N8R8/N16R8 modules those pins are consumed by PSRAM — boards silently lose them (module datasheet:
- No DAC: analog-out code ported from ESP32/S2 must move to PWM or I2S (datasheet URL above).
- USB-Serial/JTAG vs USB-OTG muxing: TinyUSB apps claim GPIO19/20; if the app hangs before USB init you may lose the native port and need UART0 or the ROM download mode (ESP-IDF USB docs:
- ADC2 blocked while Wi-Fi is active (family-wide) (
- GPIO0 must not be driven at reset (boot mode) and on many boards it's also the BOOT button — a classic self-inflicted boot loop (datasheet URL above).
- PSRAM + Wi-Fi contention is milder than S2 but cache-invalidation tuning matters for PSRAM-heavy AI workloads (ESP-IDF PSRAM guide:
- Faire clignoter la LED RGB native sur GPIO48 debutant Schéma : IMG-esp32-s3-debutant-1-esp32-s3-rgb-gpio48-blink.svg — Carte ESP32-S3 (DevKitC-1 v1.1, XIAO ou T-Display) avec un pixel adressable WS2812 câblé sur GPIO48, broche signalée, câble USB vers l'ordinateur.
- Lire le bouton BOOT sur GPIO0 sans se piéger debutant Schéma : IMG-esp32-s3-debutant-2-esp32-s3-bouton-boot-gpio0.svg — Bouton BOOT d'une carte ESP32-S3 relié à GPIO0 avec pull-up interne, un second bouton externe sur GPIO1, câble USB vers l'ordinateur.
- Console série sur l'USB natif (CDC) du S3 debutant Schéma : IMG-esp32-s3-debutant-3-esp32-s3-console-usb-cdc.svg — Carte ESP32-S3 reliée par un seul câble USB à l'ordinateur, le moniteur série affichant des messages, la mention USB CDC On Boot Enabled visible dans le menu Outils.
- Bandeau NeoPixel piloté par le périphérique RMT intermediaire Schéma : IMG-esp32-s3-intermediaire-1-esp32-s3-neopixel-rmt.svg — Bandeau de 8 pixels WS2812 alimenté en 5 V via le bus USB, données reliées à GPIO48 par une résistance de 330 ohm, masse commune avec la carte ESP32-S3.
- Service batterie BLE 5 avec notification intermediaire Schéma : IMG-esp32-s3-intermediaire-2-esp32-s3-ble5-service-batterie.svg — Carte ESP32-S3 émettant des ondes BLE vers un smartphone affichant le niveau de batterie, avec la mention Bluetooth 5 LE, Coded PHY et 2 Mbps.
- Caméra OV2640 : capture et serveur MJPEG intermediaire Schéma : IMG-esp32-s3-intermediaire-3-esp32-s3-camera-ov2640.svg — Module caméra DVP OV2640 connecté au bus parallèle d'une carte ESP32-S3 (type DevKitC-1 avec connecteur caméra ou XIAO avec extension), flux vidéo affiché dans un navigateur via Wi-Fi.
- Clavier USB HID via l'USB-OTG natif (TinyUSB) avance Schéma : IMG-esp32-s3-avance-1-esp32-s3-usb-otg-hid-clavier.svg — ESP32-S3 connecté par GPIO19/GPIO20 (USB-OTG) à un ordinateur et se faisant reconnaître comme clavier USB, avec un bouton physique sur GPIO1 déclenchant une frappe.
- Inference IA accélérée par les instructions vectorielles avance Schéma : IMG-esp32-s3-avance-2-esp32-s3-inference-ia-vectorielle.svg — Puce ESP32-S3 avec son double cœur LX7 et ses extensions vectorielles, un petit réseau de neurones en couches traversant la puce, chronomètre symbolisant le gain ESP-NN face à une puce sans vectoriel.
- Dompter le double USB : Serial/JTAG et OTG de front avance Schéma : IMG-esp32-s3-avance-3-esp32-s3-dual-usb-jtag-cdc.svg — Carte ESP32-S3 avec deux connecteurs USB : l'un relié au périphérique USB-Serial/JTAG, l'autre au contrôleur OTG GPIO19/GPIO20, l'IDE affichant console série et débogage GDB simultanés.
Code library — examples written for this board
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduinoble-compteur.inoArduinoservo.inoArduinosommeil-profond.inoArduinomesures.pyMicroPython
Examples and repos found online
- espressif/esp-who github.com
- espressif/esp-idf github.com
- espressif/arduino-esp32 github.com