XIAO ESP32C3
by Seeed Studio
Tiny ESP32-C3 board with USB-C and rich I/O - great for wearable tech, embedded controllers, and rapid prototyping.

On this page
Pinout
14 pins · 2.54 mm pitch| Pin | GPIO | Labels | Status | Capabilities | Notes |
|---|---|---|---|---|---|
| 1 | 2 | D0A0GPIO2 | strapping | adc · pwm | |
| 2 | 3 | D1A1GPIO3 | safe | adc · pwm | |
| 3 | 4 | D2A2GPIO4 | strapping | adc · pwm | |
| 4 | 5 | D3A3GPIO5 | strapping | adc · pwm | ADC2_CH0; Seeed warns ADC2 readings may be unreliable - use D0-D2 (ADC1) for analog |
| 5 | 6 | D4SDAGPIO6 | strapping | i2c · pwm | |
| 6 | 7 | D5SCLGPIO7 | strapping | i2c · pwm | |
| 7 | 21 | D6TXGPIO21 | uart | uart · pwm | |
| 8 | - | 5V | power | - | 5V power input/output |
| 9 | - | GND | ground | - | |
| 10 | - | 3V3 | power | - | 3.3V power |
| 11 | 10 | D10MOSIGPIO10 | safe | spi · pwm | |
| 12 | 9 | D9MISOGPIO9 | strapping | spi · pwm | |
| 13 | 8 | D8SCKGPIO8 | strapping | spi · pwm | |
| 14 | 20 | D7RXGPIO20 | uart | uart · pwm |
Start with these
2 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 |
|---|---|---|---|
| D0 | GPIO2 | Must be held high during boot (if low on reset, normal flash boot may fail) | Strapping |
| D2 | MTMS | Used during boot; JTAG TMS for debugging; acts as Quad-SPI flash IO (hold data line) in internal-flash variants | JTAG |
| D3 | MTDI | Used during boot; JTAG TDI for debugging; acts as Quad-SPI flash IO (write-protect data line) in internal-flash variants | JTAG |
| D4 | MTCK | Used during boot; JTAG TCK for debugging; provides flash clock in internal-flash variants | JTAG |
| D5 | MTDO | Used during boot; JTAG TDO for debugging; acts as Quad-SPI flash IO (data line) in internal-flash variants | JTAG |
| D6 | U0TXD | Used as UART0 transmit (console/bootloader); repurposing may disable serial console output and printing | UART |
| D9 | GPIO9 | Controls boot mode on reset (HIGH for normal flash boot, LOW enters serial download mode) | Strapping |
| D8 | GPIO8 | Must be held high during reset (if low, UART flashing/boot may not work) | Strapping |
| D7 | U0RXD | Used as UART0 receive (console/bootloader); repurposing may disable serial programming and debug logs | UART |
Pinout notes The XIAO ESP32C3 pinout brings out 14 pins at a 2.54 mm pitch - 11 usable GPIO alongside the 5V, GND and 3V3 power rails. Peripheral wiring is straightforward:…
The XIAO ESP32C3 pinout brings out 14 pins at a 2.54 mm pitch - 11 usable GPIO alongside the 5V, GND and 3V3 power rails.
Peripheral wiring is straightforward: I²C is mapped to SDA on GPIO6 and SCL on GPIO7; the SPI bus (MOSI, MISO, SCK) is broken out in full; TX/RX on GPIO21 and GPIO20 cover serial logging and flashing.
Beyond plain digital I/O you get 4 ADC-capable pins for sensors and battery monitoring and PWM on every GPIO.
9 of the exposed pins carry boot-time or system duties on the ESP32-C3 (D0, D2, D3 and 6 more) - check the guidance above before wiring anything to them. D1 and D10 are free of any such role - the safest first picks.
Getting started
flash your first firmware in ~2 minutesBoard: XIAO_ESP32C3 USB CDC On Boot: Enabled Flash Size: 4MB (32Mb) Flash Mode: QIO Partition Scheme: Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) Upload Speed: 921600
// toggle GPIO3 - wire an LED and resistor to it
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
digitalWrite(3, HIGH); delay(500);
digitalWrite(3, LOW); delay(500);
}[env:XIAO_ESP32C3]
platform = espressif32
board = seeed_xiao_esp32c3
framework = arduino
monitor_speed = 115200
upload_speed = 921600seeed_xiao_esp32c3 - or type it after board =.esp32:
board: seeed_xiao_esp32c3
variant: esp32c3
framework:
type: esp-idf
# blink - GPIO3
output:
- platform: gpio
pin: 3
id: led_out
light:
- platform: binary
name: "LED"
output: led_outseeed_xiao_esp32c3 (same ids as PlatformIO).esptool.py --chip esp32c3 --port /dev/ttyACM0 \
--baud 921600 write_flash 0x0 firmware.bin--port = your /dev/tty* (macOS/Linux) or COMx (Windows).Good to know
board-specific quirks worth 60 secondsUnlike the XIAO ESP32C6, the C3 has no onboard antenna. Seeed's pin map and schematic show one RF path off the chip, into a U.FL-R-SMT1 socket, and nothing else. The antenna for it is in the box - the part list is the board x1 plus an antenna x1 - and Seeed rates the pair for "communication over 100m", so fit it before judging the board's range. Seeed sells a 2.4 GHz rod antenna for it. Seeed's own warning…
Unlike the XIAO ESP32C6, the C3 has no onboard antenna. Seeed's pin map and schematic show one RF path off the chip, into a U.FL-R-SMT1 socket, and nothing else. The antenna for it is in the box - the part list is the board x1 plus an antenna x1 - and Seeed rates the pair for "communication over 100m", so fit it before judging the board's range.
Seeed sells a 2.4 GHz rod antenna for it.
Seeed's own warning about the connector: "It will be a little hard to connect the antenna at the first time using the board. Please connect the antenna at the vertical direction and do not drag at the horizontal direction."
USB-C goes straight into the ESP32-C3's native USB; there is no USB-serial bridge on the board. arduino-esp32 already ships this board with Tools → USB CDC On Boot set to Enabled, so Serial.print() reaches the serial monitor out of the box. Switch that menu to Disabled and Serial goes to the UART pins D6/D7 (GPIO21/GPIO20) instead. If the port never shows up, Seeed's troubleshooting order is: click RESET once while…
USB-C goes straight into the ESP32-C3's native USB; there is no USB-serial bridge on the board. arduino-esp32 already ships this board with Tools → USB CDC On Boot set to Enabled, so Serial.print() reaches the serial monitor out of the box. Switch that menu to Disabled and Serial goes to the UART pins D6/D7 (GPIO21/GPIO20) instead.
If the port never shows up, Seeed's troubleshooting order is: click RESET once while the board is plugged in; if that does not help, hold BOOT, connect the board to USB while holding it, then release it to enter bootloader mode.
D3 (GPIO5) is the one analog pin on ADC2. Seeed warns it "may become inoperative due to false sampling signals" and points you at ADC1 instead, so use D0-D2 (GPIO2-4) for analog readings.
Specifications
ESP32-C3 · 21 × 17.8 mm · vs other ESP32 chips →About this board
At 21 × 17.8 mm it's the smallest ESP32-C3 board we've measured.
Inside sits the ESP32-C3 - a single-core RISC-V and the budget low-power pick.
At $4.90 it's cheaper than most ESP32-C3 boards, which usually run around $10.
Around the module: battery charging via Solder pads, status LEDs (Charge) and Reset/Boot buttons.
It flashes over native USB - no serial-converter driver needed, which isn't a given among ESP32-C3 boards.
The XIAO ESP32C3 is Seeed Studio's ESP32-C3 entry in the XIAO family: a 21 x 17.8 mm board with USB-C, Wi-Fi 4 (802.11 b/g/n) and Bluetooth 5 LE, and a u.FL connector for an external antenna instead of an onboard one - Seeed ships that antenna in the box. The single RISC-V core runs at 160 MHz with 400 KB SRAM and 4 MB flash, and there is no PSRAM, so it fits sensors, buttons and small web services rather than camera or audio buffers.
Two extras lift it above a bare module. Solder pads take a 3.7 V lithium cell with onboard charging (380 mA fast, 40 mA trickle) and a charge LED, and deep sleep drops to about 44 µA. There is no user LED, only that charge indicator, so a first blink needs an LED and a series resistor wired to a free pin (Seeed's own example uses D10 with a 150 ohm resistor).
Programming runs over the C3's native USB (no serial chip), and arduino-esp32 lists the board as XIAO_ESP32C3. The standard XIAO ships without headers; Seeed also sells a pre-soldered variant with them already soldered on.
- Ultra-small form factor (21x17.8 mm)
- Deep sleep down to 44 µA, with GPIO and timer wake-up
- Ships with an external u.FL antenna
- Onboard LiPo charge management via solder pads (380 mA fast, 40 mA trickle)
Where to buy
prices are typical street prices
Resources
Similar boards






