Real standard XIAO ESP32-S3 board photograph composited onto a sunlit maker workbench, without Sense expansion

XIAO ESP32-S3 Setup and Pinout: Standard Board Guide

Quick answer

The standard XIAO ESP32-S3 has 11 edge GPIOs, 8 MB PSRAM and 8 MB flash. In Arduino IDE, install Espressif’s esp32 package and select XIAO_ESP32S3. D0 means GPIO1, not GPIO0. This guide covers the standard board, without the Sense camera, microphone or microSD expansion.

Check the board before choosing a tutorial

The Seeed XIAO ESP32S3 stocked here is standard SKU 113991114: a dual-core ESP32-S3R8 board with USB-C, 2.4 GHz Wi-Fi and Bluetooth Low Energy (BLE). Its 8 MB PSRAM is working memory; its separate 8 MB flash stores firmware and data. Neither is a microSD card.

Standard XIAO ESP32-S3 with USB-C, unsoldered edge pads and an empty antenna socket; no Sense expansion attached
The standard board, shown without headers or antenna fitted. The external antenna is supplied separately in the board’s package.

The XIAO ESP32-S3 Sense adds the camera, digital microphone and microSD expansion. A camera-web-server tutorial cannot conjure those parts onto this board. Seeed’s shared wiki also covers Sense and Plus: use its standard-board sections, not the Plus pin map or Sense camera wiring.

What you need, and how to fit the antenna

  • The standard XIAO ESP32-S3 and its supplied external antenna.
  • A USB-C data cable and computer running Arduino IDE. A charge-only lead can power the board without making an upload port appear.
  • Headers and soldering equipment only if your later circuit needs header connections. Blink needs no breadboard or extra LED.

Fit the antenna with power disconnected. Seeed’s method is to engage one side of the tiny connector with the board’s antenna socket, then gently press the other side into place. Do not force it or pull the coaxial cable to remove it; lift at the connector from one side. This is a snap fitting, not a strength test.

For replacement choices, read the existing XIAO antenna comparison. Start with the supplied antenna rather than buying by the largest gain figure.

Install Arduino support and upload

  1. Install the stable Arduino IDE for your operating system. The release checked for this guide was 2.3.10.
  2. Open Preferences and add Espressif’s stable package address to Additional Boards Manager URLs:
    https://espressif.github.io/arduino-esp32/package_esp32_index.json
  3. Open Boards Manager, search for esp32, and install esp32 by Espressif Systems. The stable index checked on 15 October 2026 listed 3.3.12; Seeed specifies 2.0.8 or later for this board. Do not mistake that minimum for the current release.
  4. Select XIAO_ESP32S3 in the board selector, then connect the board and choose its port. If unsure which port belongs to it, compare the list with the USB cable unplugged and reconnected.
  5. For USB serial output, keep USB CDC On Boot: Enabled. Espressif’s S3 USB CDC instructions specify Upload Mode: UART0 / Hardware CDC. Leave flash size at 8MB. When an application needs PSRAM, choose PSRAM: OPI PSRAM; the board definition also offers Disabled, so fitted memory does not mean a sketch has enabled it.
  6. Open File → Examples → 01.Basics → Blink, then click Upload. Start with that before connecting peripherals.

These steps follow Seeed’s setup instructions, Espressif’s installation guide and its USB CDC instructions. Package versions above are a research snapshot, not a claim that UMT tested that software combination.

XIAO ESP32-S3 pinout: D0–D10

GPIO means general-purpose input/output. PWM is pulse-width modulation; ADC is the analogue-to-digital converter. I²C uses SDA (data) and SCL (clock). SPI uses SCK (clock), MOSI (data out), MISO (data in) and SS (chip select). UART is the serial interface with TX (transmit) and RX (receive).

Use the printed D label and GPIO number as two different names for the same connection. In Arduino, D0 maps to GPIO1; a bare 0 addresses GPIO0 instead. The table lists the standard edge pins and default shared functions, checked against Seeed’s pin map and Espressif’s board-variant definitions.

Standard XIAO ESP32-S3 edge GPIOs
Board label / GPIO Analogue and shared functions Practical restriction
D0 / A0 / GPIO1 Digital, PWM, ADC, touch Not the BOOT pin.
D1 / A1 / GPIO2 Digital, PWM, ADC, touch Analogue and digital roles share this pad.
D2 / A2 / GPIO3 Digital, PWM, ADC, touch Strapping pin: its reset level affects the JTAG signal source.
D3 / A3 / GPIO4 Digital, PWM, ADC, touch Analogue and digital roles share this pad.
D4 / A4 / SDA / GPIO5 Digital, PWM, ADC, touch, I²C data Do not assign unrelated GPIO output while using I²C here.
D5 / A5 / SCL / GPIO6 Digital, PWM, ADC, touch, I²C clock Shares the I²C clock connection.
D6 / TX / GPIO43 Digital, PWM, UART transmit No ADC; UART TX is not USB serial.
D7 / RX / GPIO44 Digital, PWM, UART receive No ADC; the Arduino variant also defines SS as GPIO44.
D8 / A8 / SCK / GPIO7 Digital, PWM, ADC, touch, SPI clock Shares the SPI bus clock.
D9 / A9 / MISO / GPIO8 Digital, PWM, ADC, touch, SPI data in Shares the SPI bus data connection.
D10 / A10 / MOSI / GPIO9 Digital, PWM, ADC, touch, SPI data out Shares the SPI bus data connection.

All 11 can be digital GPIO/PWM; nine support ADC. There are no A6/A7 aliases in this board definition. I²C, SPI and UART names are default assignments, not extra pins. Choose an explicit free SPI chip-select in your sketch and wiring: using the default SS conflicts with UART RX on D7.

Keep signals at 3.3 V logic levels; do not connect 5 V signals directly to GPIO. The 5V/VBUS power pad is not a 5 V logic input. For a first upload, power through USB-C; the 3V3 pad is the regulated output and GND is ground. Follow Seeed’s separate power instructions before adding an external supply or battery.

D2/GPIO3 is a strapping pin, so avoid externally forcing its level during reset without checking the circuit’s requirements. The BOOT button uses GPIO0; the user LED uses GPIO21. Neither is one of the D0–D10 edge pins. See Seeed’s pin-use reference for interface examples.

A documented first example: Seeed’s onboard Blink

Blink checks the upload path without adding wiring faults. Seeed’s original Blink instructions describe the orange user LED blinking after upload on the XIAO ESP32-S3. The LED is active-low: LOW switches it on, HIGH switches it off.

The documented parts are the board, USB-C data cable and computer; the LED is already fitted. The example is built into Arduino IDE and needs no extra library. Seeed Studio publishes the demonstration; its page was created on 22 March 2023 and credits Luki for the 15 October 2026 update. That is manufacturer-reported behaviour, not a UMT bench test. The page does not identify a separate original hardware tester or pin an exact IDE/core combination to the Blink result.

No port or failed upload? Recover in this order

  1. Try Reset once. Check the cable is data-capable and the selected board is XIAO_ESP32S3.
  2. If the port remains missing or upload fails, disconnect USB. Press and hold BOOT, reconnect USB while still holding it, then release BOOT after connection. This is Seeed’s documented bootloader-entry sequence.
  3. Select the newly appearing port and upload Blink again. Alternatively, with the board powered, hold BOOT, press and release RESET, then release BOOT to enter download mode.
  4. After a manual download-mode upload, press and release RESET to run the sketch; reselect its port if it changes. Espressif documents a manual reset after the first USB CDC flash.

Do not substitute a double-reset recipe from another XIAO family. Seeed’s optional UF2 bootloader instructions describe a different firmware setup, not the normal Arduino recovery route above.

Still choosing a board? Read our XIAO ESP32-C3 vs ESP32-S3 comparison, including when C6 makes sense before wiring your project.

FAQ

Does the standard board have a camera, microphone or microSD socket?

No. Those are Sense expansion features. Choose a standard-board example such as Blink rather than a Sense camera tutorial.

Why can’t my sketch use all 8 MB PSRAM?

First check that OPI PSRAM is enabled in the board options. Physical PSRAM capacity is not a promise that every byte becomes freely available to every library; it is also separate from flash and its partition layout.

Can I use another XIAO’s pinout?

No. The shared footprint does not make GPIO mappings or firmware interchangeable. The existing XIAO family overview helps with model selection; use this S3 map for the standard board’s wiring.

Back to blog