Reference
Seeed Studio XIAO ESP32C3 Pinout
The Seeed Studio XIAO ESP32C3 pin reference: every pin with its GPIO, strapping pins, power and battery, code, and the traps of a board with no user LED and an external antenna.
- ESP32-C3
- 160 MHz
- 21 × 17.8 mm
- Wi-Fi 4 + BLE 5
The Seeed Studio XIAO ESP32C3 is a thumb-sized ESP32-C3 board of only 21 × 17.8 mm, with USB-C, a battery charger and a U.FL connector for an external antenna. It trades pins for size: only 11 GPIOs are brought out, but it fits in wearables, small sensors and battery projects where a devkit is too big. It has no on-board user LED.
This guide covers every pin with its GPIO, the strapping pins, power and battery, how to flash it, code, and the traps that cost people an evening. The pin data comes from the Seeed Studio wiki, and the chip limits from the Espressif ESP32-C3 datasheet. Boards from clones may differ, so compare with your own silkscreen.
System-on-chip and board
The ESP32-C3 is a single-core 32-bit RISC-V chip at up to 160 MHz with Wi-Fi 4 (802.11 b/g/n) and Bluetooth 5 LE. There is no classic Bluetooth, no 5 GHz Wi-Fi, and no 802.15.4 radio, so Thread and Zigbee are not possible on this chip.
| Item | Value |
|---|---|
| Chip | ESP32-C3, RISC-V single core, up to 160 MHz |
| Memory | 400 KB SRAM, 4 MB flash |
| Wireless | Wi-Fi 802.11 b/g/n 2.4 GHz and Bluetooth 5 LE |
| Antenna | External, on a U.FL connector (the antenna is in the box) |
| USB | USB-C with built-in serial and JTAG |
| Battery | Li-ion charger on board, 3.7 V cell on the BAT pads |
| Buttons | RESET (on CHIP_EN) and BOOT (on GPIO9) |
| LEDs | Red charge LED only, no user LED |
| Size | 21 × 17.8 mm, single-sided surface mount |
| Operating temperature | −40 to 85 °C |
Source: Seeed Studio XIAO ESP32C3 wiki and the Espressif ESP32-C3 datasheet.
Getting started
Specifications
Board
| Input voltage | 5 V on USB, or a 3.7 V lithium cell on BAT |
| 3V3 output | Regulated 3.3 V. The Seeed wiki gives both 500 mA and 700 mA, so plan for the lower value |
| Charging current | 380 mA fast, 40 mA trickle |
| Deep sleep current | About 43 to 44 µA |
| Active Wi-Fi current | About 75 mA |
| Modem-sleep, light-sleep | About 25 mA and 4 mA with Wi-Fi |
| GPIO | 11 digital pins with PWM, 4 ADC inputs, 1 UART, 1 I2C, 1 SPI |
Chip limits (ESP32-C3 datasheet)
| Supply | 3.0 to 3.6 V, 3.3 V typical, absolute maximum 3.6 V on the supply pins |
| Current per GPIO | 20 mA (40 mA on GPIO18 and GPIO19, which are not on this board) |
| Cumulative output current | 1000 mA |
| Storage temperature | −40 to 150 °C |
Source: Seeed Studio wiki for the board, Espressif ESP32-C3 datasheet for the chip limits. The wiki contradicts itself on the 3V3 current and the sleep current, as noted.
Dimensions
The board is 21 × 17.8 mm and single-sided, so every component is on the top. The USB-C port is on one short edge and the U.FL connector next to it. The pads are on a 2.54 mm grid along both long edges, with the battery pads on the back. Seeed does not give a mounting-hole drawing in the text of the wiki, so check the Seeed drawing before you design a socket or case.
Source: Seeed Studio XIAO ESP32C3 wiki.
Pin reference
| Pin | GPIO | Function | Notes |
|---|---|---|---|
| D0 | GPIO2 | ADC1_CH2 | Strapping pin. Wake-up capable |
| D1 | GPIO3 | ADC1_CH3 | Wake-up capable |
| D2 | GPIO4 | ADC1_CH4 | JTAG MTMS. Wake-up capable |
| D3 | GPIO5 | ADC2_CH0 | JTAG MTDI. ADC2: unreliable with Wi-Fi. Wake-up capable |
| D4 | GPIO6 | I2C SDA | JTAG MTCK |
| D5 | GPIO7 | I2C SCL | JTAG MTDO |
| D6 | GPIO21 | UART TX | U0TXD |
| D7 | GPIO20 | UART RX | U0RXD |
| D8 | GPIO8 | SPI SCK | Strapping pin |
| D9 | GPIO9 | SPI MISO | Strapping pin and BOOT button |
| D10 | GPIO10 | SPI MOSI | FSPICS0 |
Power pins: 5V (USB VBUS), 3V3, GND. The battery pads are on the back. Only D0 to D3 can wake the chip from deep sleep.
Source: Seeed Studio XIAO ESP32C3 wiki.
Power and battery
- USB-C gives 5 V. The 5V pin outputs VBUS, and it can also be used as an input, but only with a diode between your source and the pin.
- 3V3 is regulated on board. It is an output for sensors, not an input for the chip.
- Battery. Connect a 3.7 V lithium cell to the BAT pads, with the polarity as printed. The board charges it at 380 mA fast or 40 mA trickle. A short circuit on the battery terminals while you solder can be dangerous.
- No battery pin. There is no pin that reads the battery voltage. Use a divider of two equal resistors (for example 200 kΩ) on A0, and average 16 samples, because the ADC full scale varies about 10 % between chips.
- The charge LED. It shows charging, and with only USB connected and no battery it lights up and then goes out after a short while.
Programming
| Item | Setting |
|---|---|
| Arduino IDE | Install the esp32 board package by Espressif and choose XIAO_ESP32C3 |
| Upload | Plug in the USB-C cable. If the port does not appear, hold BOOT, plug in, and release |
| Serial | USB CDC is built in. Enable USB CDC on boot if Serial prints nothing |
| ESP-IDF and PlatformIO | Target esp32c3, board seeed_xiao_esp32c3 |
| After deep sleep | The serial port disappears while the chip sleeps, so reset the board to upload again |
Example code
The board has no user LED, so wire an LED with a resistor of about 330 Ω from D10 to ground:
#define LED_PIN D10
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH); delay(500);
digitalWrite(LED_PIN, LOW); delay(500);
}
Read a battery divider on A0 with some averaging:
float readBattery() {
uint32_t mv = 0;
for (int i = 0; i < 16; i++) mv += analogReadMilliVolts(A0);
return (mv / 16.0f) * 2.0f / 1000.0f; // volt, divider of two equal resistors
}
I did not run these sketches on a board.
Tips
- Attach the antenna first, and keep it away from metal.
- Use D0 to D2 for analog input, and avoid D3 (ADC2) when Wi-Fi is on.
- Use D4 and D5 for I2C, D8 to D10 for SPI, and D6 and D7 for a serial device.
- For battery projects use deep sleep with a wake-up on D0 to D3, and cut the power to sensors with a GPIO.
- Keep the board cool: it is small and gets warm in a closed box with Wi-Fi on.
- Buy headers separately. They are not soldered on.
Real gotchas
- The strapping pins are D0, D8 and D9 (GPIO2, GPIO8, GPIO9). Circuits that pull them to the wrong level at reset block the boot or the upload. D9 is also the BOOT button.
- No user LED. There is no LED_BUILTIN. Wire your own, or the Blink example does nothing.
- The antenna is not optional. The board has no printed antenna, only a U.FL connector. Without the antenna, range is almost nothing.
- D3 is ADC2. ADC2 readings are unreliable once Wi-Fi is connected. Use D0 to D2 instead.
- Only D0 to D3 wake the chip. Other pins cannot wake it from deep sleep.
- The serial port vanishes in deep sleep. You may need to hold BOOT and reset to upload again.
- Power-only cables. Some USB-C cables carry no data. If no port appears, change cable.
- The 3V3 current is unclear. The Seeed wiki says 500 mA in one place and 700 mA in another. Keep the load well below that.
- Diode on the 5V pin. To feed the board from the 5V pin, use a diode, otherwise you can feed 5 V back into the USB port.
Compared with other small boards
| Board | Chip | Memory | GPIOs | User LED | Notes |
|---|---|---|---|---|---|
| XIAO ESP32C3 | ESP32-C3, 160 MHz | 4 MB | 11 | No | USB-C, U.FL |
| XIAO ESP32S3 | ESP32-S3, 240 MHz dual | 8 MB flash, 8 MB PSRAM | 11 | Yes (Sense: camera) | USB-C, U.FL |
The numbers for the other boards come from their own guides and are not checked again here.
What to build with it
- A tiny Wi-Fi sensor node in a small enclosure.
- A wearable or a badge with a battery.
- A HomeKit sensor, see ESP32 HomeKit development.
- A BLE beacon with months of battery life using deep sleep.
- A small remote that wakes on a button and sends a message.
Safety notes
Before you wire anything up
- Keep every GPIO at 3.3 V. The chip supply limit is 3.6 V.
- Use only a qualified 3.7 V lithium cell, with the right polarity, and never short the terminals.
- Do not charge a lithium cell unattended.
- Never connect the board to mains voltage. Keep it on a low-voltage supply.
- Disconnect the power before you change the wiring.
Conclusion
The XIAO ESP32C3 fits where the AI-C3 or bare ESP32-C3-MINI-1 module is too big, at the cost of fewer breakout pins and no onboard LED. Need more GPIOs and native USB in a similarly small board? See the XIAO ESP32S3.
Board data is from the Seeed Studio wiki and chip limits from the Espressif ESP32-C3 datasheet.
More guides
Keep building.
From ESP32 HomeKit accessories to Arduino and ATtiny reference guides, there’s more where this came from.
All guides

