The XIAO ESP32-S3-Plus is a compact and powerful microcontroller board designed for advanced embedded and IoT projects. It is based on the ESP32-S3 dual-core processor running at up to 240 MHz. The board includes built-in Wi-Fi and Bluetooth Low Energy connectivity for wireless applications.
Compared to the XIAO ESP32-S3 it keeps the small form factor but adds more memory and I/O capabilities. The Plus version features 16 MB of flash, 8 MB of PSRAM and 20 GPIO pins.
The board supports multiple interfaces such as UART, I2C, SPI, and I2S. It also includes built-in battery charging and low-power modes for energy-efficient operation.
In this tutorial you will learn how the program the XIAO ESP32-S3-Plus using the Arduino IDE.
Where to Buy
You can get the XIAO ESP32-S3-Plus at Seeed Studio. You will also need a USB-C cable, if you haven’t one already. Also small heatsink might be needed, should you run heavy compute on the board.

XIAO ESP32-S3-Plus

USB C Cable

Small Heatsink 9×9 mm
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Features of the XIAO ESP32-S3 Plus board
The XIAO ESP32-S3-Plus is based on the ESP32-S3R8 microcontroller. It uses a dual-core Xtensa LX7 CPU with a clock speed of up to 240 MHz. The picture below shows the front and back of the board.

The processor is 32-bit and designed for embedded and IoT workloads. It supports vector instructions that improve performance for signal processing and AI tasks.
The board is compatible with common development frameworks. It supports Arduino, MicroPython, and ESP-IDF.
Memory Configuration
The Plus version provides a large memory configuration compared to the standard model. It includes 16 MB of external flash memory. It also integrates 8 MB of PSRAM for dynamic data handling.
This combination enables more complex applications. It supports buffering, image processing, and edge AI workloads.
Wireless Connectivity
The board integrates a full 2.4 GHz Wi-Fi subsystem. It also supports Bluetooth Low Energy 5.0 and Bluetooth Mesh. An external antenna can be connected via a U.FL interface. This improves range and signal stability in embedded designs. The photo below shows the antenna next to the XIAO ESP32-S3-Plus board:

GPIO and Interfaces
The XIAO ESP32-S3-Plus provides an extended set of GPIO pins. It offers up to 20 GPIOs. Additional pins are available through castellated pads on the back of the board. The following picture shows the pinout of the XIAO ESP32-S3-Plus:

The board supports multiple communication interfaces. It includes two UART interfaces, one I2C interface, one I2S interface, and two SPI interfaces. It also provides analog inputs through ADC channels.
A B2B connector is included for expansion boards. Note that the B2B connector of XIAO ESP32-S3-Plus is compatible with the Wio-SX1262 extension board but not with the Plug-in camera sensor board.

Power Management
The board supports USB Type-C power input at 5 V. It also supports direct battery input for Li-ion or LiPo cells. An integrated battery charging circuit is included. The charging current can reach up to 100 mA. The battery needs to be connected via solder pads on the back of the board:

The XIAO ESP32-S3-Plus provides multiple power modes. These include active, modem sleep, light sleep, and deep sleep. Deep sleep current can reach values in the microampere range, enabling low-power designs.
Physical Characteristics
The board follows the standard XIAO form factor. It measures 21 x 17.8 x 5 mm. It uses 2.54 mm pin spacing for most of the GPIO pins for breadboard compatibility. But there are additional 9 GPIO pins with 1.27mm pitch SMD castellation and the backside includes debugging pads.

The layout includes a reset button and a boot button. It also features status LEDs for user control and battery charging indication.
Technical Specification
The following table summarizes the technical features of the XIAO ESP32-S3-Plus:
| Parameter | Specification |
|---|---|
| Microcontroller | ESP32-S3R8, Xtensa LX7 dual-core, 32-bit |
| CPU Frequency | Up to 240 MHz |
| Wireless Connectivity | 2.4 GHz Wi-Fi, Bluetooth 5.0, Bluetooth Mesh |
| Flash Memory | 16 MB external flash |
| PSRAM | 8 MB |
| GPIO | Up to 20 GPIOs (including additional rear pads) |
| Analog Inputs | Up to 9 ADC channels |
| Communication Interfaces | 2× UART, 1× I2C, 1× I2S, 2× SPI |
| USB Interface | USB Type-C for power and programming |
| Operating Voltage | 5 V (USB), ~3.7–4.2 V (battery) |
| Battery Support | Li-ion / LiPo with integrated charging |
| Charging Current | Up to 100 mA |
| Power Consumption (Active Wi-Fi) | ~81 mA |
| Power Consumption (Deep Sleep) | ~33 µA |
| Power Modes | Active, modem sleep, light sleep, deep sleep |
| Dimensions | 21 × 17.8 mm |
| Operating Temperature | -40 °C to 65 °C |
| Additional Features | B2B connector, reset button, boot button, status LEDs |
Install ESP32 Core
If you want to use the Arduino IDE to program the board, you first need to install the ESP32 Core to enable support for ESP32 boards within the Arduino IDE. Open your Arduino IDE and follow the steps outlined below. If you have issues, you can find more detailed instructions in our tutorial Install ESP32 core in Arduino IDE .
Additional boards manager URLs
First open the Preferences dialog by selecting “Preferences…” from the “File” menu:

This will open the Preferences dialog shown below. Under the Settings tab you will find an edit box at the bottom of the dialog that is labelled “Additional boards manager URLs”:

In this input field copy the following URL: “https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json“
This will let the Arduino IDE know, where to find the ESP32 core libraries. Next we will actually install the ESP32 core libraries using the Boards Manager.
Boards Manager
Open the BOARDS MANAGER by clicking on the board icon in the sidebar of the Arduino IDE:

You will see the BOARDS MANAGER appearing right to the Sidebar. Enter “ESP32” in the search field at the top and you should see two types of ESP32 boards; the “Arduino ESP32 Boards” and the “esp32 by Espressif” boards. We want the esp32 libraries by Espressif. Click on the INSTALL button and wait until the download and install is complete.

Once installed, your Boards Manager should look like this, though the actual version (here 3.3.7) might be different.

In the next step, I show you how to select the ESP32 board for the XIAO ESP32-S3-Plus.
Select XIAO_ESP32S3_PLUS board
You can select a board from the drop-down selector under the menu bar: In the example below it shows an Arduino Uno as selected board, for instance:

Clicking on the name of the currently selected board (Arduino Uno), will open the board selection dialog. In the search box type “xiao s3” and select the “XIAO_ESP32S3_PLUS” as shown below:

If the board is connected to your PC via USB, you should also be able to select the COM port. In the screenshot above this is COM9 but in your case it might be another COM port.
Code Examples
In this section, I will provide you with some code examples to try out the main features of the XIAO ESP32-S3-Plus.
Blink on-board LED
We start with the common Blink example. It switches the on-board LED on and off for one second. The on-board LED of the XIAO ESP32-S3-Plus is connected to GPIO21 but is inverted. LOW means the LED is on and HIGH means the LED is off. You can see this in the code example below:
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
Serial.println("Off");
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
Serial.println("On");
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Read & Write GPIO
In the following very short examples, we read and write GPIO. For specifying pins in code you can use the GPIO x number or the Dx number. For instance, according to the pinout, D3 or GPIO4 identify the same pin and in your code you can use either. The following two code example are identical in function and set GPIO4 to HIGH:
digitalWrite(D3, HIGH); // D3 == GPIO4
digitalWrite(4, HIGH); // D3 == GPIO4
If you want to read analog signals you can use the predefined Ax constants. For instance, the following code reads an analog input from A3, which is the same as the GPIO4 pin:
int val = analogRead(A3); // A3 == GPIO4
int val = analogRead(4); // A3 == GPIO4
Analog values range from 0 to 4095, which is equivalent to a voltage at the input between 0 and 3.3V.
Touch Input
This example demonstrates how to use the capacitive touch pins of the XIAO ESP32-S3-Plus to detect touch inputs. If you touch the first pin (D0) of the board the built-in LED will switch on. You may have to adjust the detection threshold.
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
int value = touchRead(T1);
Serial.println(value);
if (value > 30000) {
digitalWrite(LED_BUILTIN, LOW);
} else {
digitalWrite(LED_BUILTIN, HIGH);
}
delay(200);
}
Wi-Fi
The following example shows you how to connect the XIAO ESP32-S3-Plus to a Wi-Fi network. This will work without the external antenna, if you are close to the Wi-Fi router. But for better range you should install the antenna.
#include <WiFi.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected");
Serial.println(WiFi.localIP());
}
void loop() {
}
Bluetooth
This final example demonstrates how to create a simple Bluetooth Low Energy (BLE) server.
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
void setup() {
Serial.begin(115200);
BLEDevice::init("XIAO-ESP32-S3");
BLEServer *pServer = BLEDevice::createServer();
BLEDevice::getAdvertising()->start();
Serial.println("BLE server started");
}
void loop() {
}
You can check whether the server is active by using a BLE scanner on your phone. Common options are nRF Connect or LightBlue. If you initiate a scan, you will see “XIAO-ESP32-S3” appearing.
Conclusions
This post showed you how to get started with the Seeed Studio XIAO ESP32-S3-Plus. Seeed Studio provides additional information in its Wiki.
Compared to the XIAO ESP32-S3, the XIAO ESP32-S3-Plus has more Flash and GPIO pins. However, it lacks the microphone of the XIAO MG24 Sense or the camera (and microphone) of the XIAO-ESP32-S3-Sense. If want to record audio or stream video these boards are a better choice. But if you need more memory or IO, go with the XIAO ESP32-S3-Plus.
If you have any questions feel free to leave them in the comment section.
Happy Tinkering 😉
Stefan is a professional software developer and researcher. He has worked in robotics, bioinformatics, image/audio processing and education at Siemens, IBM and Google. He specializes in AI and machine learning and has a keen interest in DIY projects involving Arduino and 3D printing.

