ESP32-S3-Zero
by Waveshare
Minimalist ESP32-S3 board with Wi-Fi, BLE, and USB - perfect for low-cost, compact AIoT and wireless projects.

On this page
Pinout
27 pins · 2.54 mm pitch| Pin | GPIO | Labels | Status | Capabilities | Notes |
|---|---|---|---|---|---|
| 1 | - | 5V | power | - | 5V power input for the board |
| 2 | - | GND | ground | - | Ground connection |
| 3 | - | 3V33.3V | power | - | 3.3V power output |
| 4 | 1 | IO1 | safe | adc | GPIO, ADC |
| 5 | 2 | IO2 | safe | adc | GPIO, ADC |
| 6 | 3 | IO3 | strapping | adc | GPIO, ADC |
| 7 | 4 | IO4 | safe | adc | GPIO, ADC |
| 8 | 5 | IO5 | safe | adc | GPIO, ADC |
| 9 | 6 | IO6 | safe | adc | GPIO, ADC |
| 10 | 7 | IO7 | safe | adc | GPIO, ADC |
| 11 | 8 | IO8 | safe | adc | GPIO, ADC |
| 12 | 9 | IO9 | strapping | adc | GPIO, ADC |
| 13 | 10 | IO10 | strapping | adc | GPIO, ADC |
| 14 | 11 | IO11 | strapping | adc | GPIO, ADC |
| 15 | 12 | IO12 | strapping | adc | GPIO, ADC |
| 16 | 13 | IO13 | strapping | adc | GPIO, ADC |
| 17 | 14 | IO14 | strapping | adc | GPIO, ADC |
| 18 | 15 | IO15 | safe | adc | GPIO, ADC |
| 19 | 16 | IO16 | safe | adc | GPIO, ADC |
| 20 | 17 | IO17 | safe | adc | GPIO, ADC |
| 21 | 18 | IO18 | safe | adc | GPIO, ADC |
| 22 | 38 | IO38 | strapping | - | GPIO |
| 23 | 39 | IO39 | strapping | - | GPIO |
| 24 | 40 | IO40 | strapping | - | GPIO |
| 25 | 41 | IO41 | strapping | - | GPIO |
| 26 | 42 | IO42 | strapping | - | GPIO |
| 27 | 45 | IO45 | strapping | - | GPIO |
Start with these
11 pins with no boot or system involvementFreely assignable - no strapping, flash, USB or JTAG duties. Ideal first picks for buttons, sensors and LEDs.
Fine - with a little care
sampled at boot or shared with debug/serial| Pin | Label | What to know | Role |
|---|---|---|---|
| IO3 | GPIO3 | Sampled at reset to select JTAG interface (USB Serial/JTAG controller vs. external pins). Improper use can disable external JTAG or alter debug interface. | Strapping |
| IO39 | MTCK (GPIO39) | Default JTAG debugging TCK pin. If JTAG is needed, this pin must be free; it may also be used internally for PSRAM chip select on certain modules, so avoid repurposing it. | Other |
| IO40 | MTDO (GPIO40) | Default JTAG TDO output for debugging. Using it as GPIO will interfere with JTAG debugging functionality. | Other |
| IO41 | MTDI (GPIO41) | Default JTAG TDI input for debugging. Should be reserved for JTAG or left unused if JTAG is to remain available. | Other |
| IO42 | MTMS (GPIO42) | Default JTAG TMS signal for debugging. Using this pin for other purposes will disable the JTAG interface (unless JTAG is rerouted to USB). | Other |
| IO45 | GPIO45 | Determines flash/PSRAM power voltage (3.3 V vs 1.8 V) at boot. Must match hardware configuration; using as GPIO can upset flash supply setting. | Strapping |
Only if you know the tricks
wired to flash or USB - expect a fight| Pin | Label | What to know | Role |
|---|---|---|---|
| IO9 | FSPIHD | Connected to external flash (data/hold signal) on most modules. Not recommended for use as GPIO, since it must remain dedicated to flash communication. | Flash |
| IO10 | FSPICS0 | Used to select the external flash chip. It is required for flash access and cannot be repurposed without losing flash connectivity | Flash |
| IO11 | FSPID | Used as a data line for flash (and in-package PSRAM). It should not be used as GPIO when the flash/PSRAM is in use. | Flash |
| IO12 | FSPICLK | Drives the flash (and PSRAM) clock. This critical signal must be reserved for memory and not used as general GPIO. | Flash |
| IO13 | FSPIQ | Used as a data line for flash/PSRAM transfers. Not available for other uses when flash/PSRAM is connected. | Flash |
| IO14 | FSPIWP | Connected to external flash (data/write-protect signal). Not recommended as GPIO because it’s reserved for flash operations. | Flash |
| IO38 | FSPIWP | On flash-equipped chips, this pin is tied to the flash’s WP# (or D3) line. It should be avoided for other use, as it’s needed for flash operations. | Flash |
Pinout notes Across 27 pins (2.54 mm pitch), the ESP32-S3-Zero exposes 24 GPIO plus 5V , GND and 3V3 for power. Beyond plain digital I/O you get 18 ADC-capable pins for…
Across 27 pins (2.54 mm pitch), the ESP32-S3-Zero exposes 24 GPIO plus 5V, GND and 3V3 for power.
Beyond plain digital I/O you get 18 ADC-capable pins for sensors and battery monitoring.
6 of the exposed pins carry boot-time or system duties on the ESP32-S3 (IO3, IO39, IO40 and 3 more) - check the guidance above before wiring anything to them. IO1, IO2, IO4, IO5 and 7 more are free of any such role - the safest first picks.
The ESP32-S3-Zero pinout is engineered for versatility within a compact footprint. Key power pins include 5V, 3.3V, and GND, ensuring reliable power delivery for various peripherals.
The board offers multiple communication interfaces:
- UART: TX (GPIO43), RX (GPIO44)
- I2C: SDA, SCL
- SPI: SCK, MISO, MOSI, SS
For analog input, it provides ADC pins suitable for reading sensor data or voltage levels.
Getting started
flash your first firmware in ~2 minutesBoard: Esp32s3 Dev
USB CDC On Boot: Enabled
Flash Size: 4MB · QIO
Upload Speed: 921600
// blink
pinMode(1, OUTPUT);
digitalWrite(1, LOW); // on (often inverted)[env:esp32-s3-zero]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
upload_speed = 921600esp32:
board: esp32-s3-devkitc-1
variant: esp32s3
framework:
type: esp-idf
# blink - GPIO1
output:
- platform: gpio
pin: 1
id: led_out
light:
- platform: binary
name: "LED"
output: led_outesptool.py --chip esp32s3 --port /dev/ttyACM0 \
write_flash 0x0 firmware.binGood to know
board-specific quirks worth 60 secondsIf you're following a generic ESP32-S3 tutorial and it references GPIO33 through GPIO37 - stop looking for them. Waveshare's official wiki is explicit: "The ESP32-S3-Zero does not break out GPIO33~GPIO37; these pins are reserved for Octal PSRAM." It's a routing decision, not a defect - the module's PSRAM footprint claims those lines even though this board's 2 MB PSRAM is quad-mode. Plan your pin budget around the…
If you're following a generic ESP32-S3 tutorial and it references GPIO33 through GPIO37 - stop looking for them. Waveshare's official wiki is explicit: "The ESP32-S3-Zero does not break out GPIO33~GPIO37; these pins are reserved for Octal PSRAM."
It's a routing decision, not a defect - the module's PSRAM footprint claims those lines even though this board's 2 MB PSRAM is quad-mode. Plan your pin budget around the GPIOs that are actually on the header and castellated edge.
The S3-Zero uses the same ESP32-S3FH4R2 as the S3 SuperMini: 4 MB flash and 2 MB quad-SPI PSRAM inside the chip package . Waveshare states it plainly, but default board profiles still ship with PSRAM disabled. In Arduino IDE set Tools → PSRAM → "QSPI PSRAM" (not OPI - that's for octal chips and will crash). In ESPHome use psram: with mode: quad ; in PlatformIO, board_build.arduino.memory_type = qio_qspi plus…
The S3-Zero uses the same ESP32-S3FH4R2 as the S3 SuperMini: 4 MB flash and 2 MB quad-SPI PSRAM inside the chip package. Waveshare states it plainly, but default board profiles still ship with PSRAM disabled.
In Arduino IDE set Tools → PSRAM → "QSPI PSRAM" (not OPI - that's for octal chips and will crash). In ESPHome use psram: with mode: quad; in PlatformIO, board_build.arduino.memory_type = qio_qspi plus -DBOARD_HAS_PSRAM.
Verify with ESP.getPsramSize() - it returns 0 until the setting is right.
There's no USB-serial chip - USB-C goes straight to the S3's native USB. Waveshare's documented download procedure is to hold the BOOT (GPIO0) button before connecting the USB-C cable , then flash; press RESET afterwards to run your firmware. If an upload fails mid-way or the COM port vanishes, that button dance is the fix - a common stumbling block for first-time users. And as with all native-USB S3 boards: enable…
There's no USB-serial chip - USB-C goes straight to the S3's native USB. Waveshare's documented download procedure is to hold the BOOT (GPIO0) button before connecting the USB-C cable, then flash; press RESET afterwards to run your firmware. If an upload fails mid-way or the COM port vanishes, that button dance is the fix - a common stumbling block for first-time users.
And as with all native-USB S3 boards: enable Tools → USB CDC On Boot → "Enabled" or Serial.print() output goes to the UART pins (GPIO43/44) instead of your serial monitor.
The castellated half-hole edges mean the S3-Zero doubles as a surface-mount module: design a footprint on your carrier board and reflow or hand-solder the whole thing down - no headers, no sockets. That's the "Zero" use case, and it's why the board keeps its components on one side. Two integration facts from the official docs : the ME6217 regulator (800 mA) accepts 3.7-6 V on the 5V pad , so a lithium cell can drive…
The castellated half-hole edges mean the S3-Zero doubles as a surface-mount module: design a footprint on your carrier board and reflow or hand-solder the whole thing down - no headers, no sockets. That's the "Zero" use case, and it's why the board keeps its components on one side.
Two integration facts from the official docs: the ME6217 regulator (800 mA) accepts 3.7-6 V on the 5V pad, so a lithium cell can drive it directly - but there's no charging circuit, so charge the cell externally. And keep the area around the ceramic antenna free of copper and metal on your carrier board - Waveshare explicitly warns that covering it degrades the signal.
Specifications
ESP32-S3 · 23.5 × 18 mmAbout this board
At 23.5 × 18 mm it's among the smallest boards in the whole ESP32 family.
Inside sits the ESP32-S3 - a dual-core Xtensa with vector extensions suited to AI workloads. Sibling Zero-format boards cover the ESP32-C3 and ESP32-C6, so you can change radios or horsepower without changing the footprint.
It's the only ESP32-S3 option in the Zero-format family.
The $6.27 price tag is typical for a Zero-format board.
Around the module: 2MB (QSPI) PSRAM, an addressable RGB LED (GPIO21) and Reset/Boot buttons.
It flashes over native USB - no serial-converter driver needed.
The ESP32-S3-Zero is Waveshare's entry in the tiny-S3 class - and unlike most boards this size, it's an actual branded product with a real wiki behind it. It packs the ESP32-S3FH4R2 (dual-core 240 MHz, 4 MB flash + 2 MB PSRAM in-package, 512 KB SRAM) with WiFi and BLE 5 into a 23.5 x 18 mm footprint.
Two design choices define it: a USB-C port wired straight to the S3's native USB (no serial chip), and castellated half-hole edges so the whole board can be soldered onto a carrier PCB like a module. A WS2812 RGB LED on GPIO21 serves as the status light, and BOOT + RESET buttons handle flashing.
Power is flexible for integrators: the ME6217 regulator (800 mA) accepts 3.7-6 V on the 5V pad, so it runs from USB, a lithium cell, or a small wall supply - though note there is no battery charging circuit on board.
- Ultra-compact size: 23.5 × 18 mm
- Low power consumption: supports various power modes for energy-efficient applications
- Onboard WS2812 RGB LED connected to GPIO21
Where to buy
prices are typical street prices
Resources
Similar boards
All Zero boards →







