XIAO ESP32C3

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

Our pick USB-C Native USB
XIAO ESP32C3 board
21 × 17.8 mm
ESP32-C3
RISC-V MCU
160MHz
clock
4MB
flash
400KB
SRAM
11· 4 ADC
GPIO
BLE 5.0+ WiFi
radio
On this page

XIAO ESP32C3 Pinout

14 pins · 2.54 mm pitch
XIAO ESP32C3 pinout diagram, high resolution: all 14 pins, with GPIO numbers, ADC channels and strapping pins
XIAO ESP32C3 pinout, drawn by ESPboards from the ESP32-C3 Series Datasheet v2.4.
XIAO ESP32C3 pinout diagram
PinGPIOLabelsStatusCapabilitiesNotes
12D0A0GPIO2strappingadc · pwm
23D1A1GPIO3safeadc · pwm
34D2A2GPIO4strappingadc · pwm
45D3A3GPIO5strappingadc · pwmADC2_CH0; Seeed warns ADC2 readings may be unreliable - use D0-D2 (ADC1) for analog
56D4SDAGPIO6strappingi2c · pwm
67D5SCLGPIO7strappingi2c · pwm
721D6TXGPIO21uartuart · pwm
8-5Vpower-5V power input/output
9-GNDground-
10-3V3power-3.3V power
1110D10MOSIGPIO10safespi · pwm
129D9MISOGPIO9strappingspi · pwm
138D8SCKGPIO8strappingspi · pwm
1420D7RXGPIO20uartuart · pwm
Download the XIAO ESP32C3 pinout Free to use and share for non-commercial work, as long as you credit espboards.dev. License.
11 GPIOs broken out 2 free · 9 need care · 0 to avoid

Start with these

2 pins with no boot or system involvement
D1GPIO3D10GPIO10

Freely assignable - no strapping, flash, USB or JTAG duties. Ideal first picks for buttons, sensors and LEDs.

Fine - with a little care

9 pins · 9 things to know
D0GPIO2 Strapping pin, but it does not select the boot mode - GPIO9 does. Espressif only recommend pulling it up against reset-time glitches. Floating by default. Strapping

A strapping pin: Espressif recommend an external pull-up against glitches at reset, so avoid heavy capacitive loads or a strong low drive here. It does not put the chip into download mode (that is GPIO9).

D2GPIO4 Bootstrapping pin; JTAG TMS; Flash data (FSPIHD in internal-flash models) JTAG

Used during boot; JTAG TMS for debugging; acts as Quad-SPI flash IO (hold data line) in internal-flash variants

D3GPIO5 Bootstrapping pin; JTAG TDI; Flash data (FSPIWP in internal-flash models) JTAG

Used during boot; JTAG TDI for debugging; acts as Quad-SPI flash IO (write-protect data line) in internal-flash variants

D4GPIO6 Bootstrapping pin; JTAG TCK; Flash clock (FSPICLK in internal-flash models) JTAG

Used during boot; JTAG TCK for debugging; provides flash clock in internal-flash variants

D5GPIO7 Bootstrapping pin; JTAG TDO; Flash data (FSPID in internal-flash models) JTAG

Used during boot; JTAG TDO for debugging; acts as Quad-SPI flash IO (data line) in internal-flash variants

D6GPIO21 UART0 TXD (default serial output) UART

Used as UART0 transmit (console/bootloader); repurposing may disable serial console output and printing

D9GPIO9 Bootstrapping pin; selects boot mode (HIGH = SPI flash boot, LOW = UART download) Strapping

Controls boot mode on reset (HIGH for normal flash boot, LOW enters serial download mode)

D8GPIO8 Bootstrapping pin (needs HIGH at reset); also gates ROM boot message printing (UART_PRINT_CONTROL efuse) Strapping

Must be held high during reset (if low, UART flashing/boot may not work)

D7GPIO20 UART0 RXD (default serial input) UART

Used as UART0 receive (console/bootloader); repurposing may disable serial programming and debug logs

These are recommendations, not hard rules - with the right pull-ups, timing and boot-state awareness most pins can be made to work. When in doubt, start green.

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 minutes
Tool:
1
Connect over USB
Native USB - shows up as a port right away, no driver needed. Not detected? Hold BOOT while plugging in.
2
Match & flash
Set the Tools options shown, then click Upload.
3
Verify it runs
GPIO3 toggles - wire an LED and resistor to it, or change the pin to your board's own LED.
Set these in Tools · leave everything else at default
Arduino IDE 2.x - Tools Copy
Board: "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)" (default)▸
Upload Speed: "921600"▸
▸ every other Tools option - leave at default
Board: 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
Find it: Tools ▸ Board ▸ ESP32 Arduino ▸ XIAO_ESP32C3
blink.ino Copy
// 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);
}
board to selectseeed_xiao_esp32c3⧉ copy
platformio.ini Copy
[env:XIAO_ESP32C3]
platform = espressif32
board = seeed_xiao_esp32c3
framework = arduino
monitor_speed = 115200
upload_speed = 921600
Find it: PlatformIO Home ▸ Boards, search seeed_xiao_esp32c3 - or type it after board =.
board to selectseeed_xiao_esp32c3⧉ copy
device.yaml Copy
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_out
Find it: search ESPHome's board list for seeed_xiao_esp32c3 (same ids as PlatformIO).
esptool doesn't pick board settings - a prebuilt .bin already has them baked in. This is just the raw flash command.
terminal Copy
esptool.py --chip esp32c3 --port /dev/ttyACM0 \
  --baud 921600 write_flash 0x0 firmware.bin
--port = your /dev/tty* (macOS/Linux) or COMx (Windows).
Build details: sketch space 1310720 B · data 327680 B · QIO

Good to know

board-specific quirks worth 60 seconds
Antenna - you must attach one illustration
Antenna - you must attach one
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…

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."

No USB-serial chip - Serial rides on USB CDC illustration
No USB-serial chip - Serial rides on USB CDC
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.

Downloads

Free for non-commercial use, credit espboards.dev · License
XIAO ESP32C3 board illustration, front

Board illustration

The bare XIAO ESP32C3 board drawn to scale at 21 × 17.8 mm, with no pin labels on it. Made for slide decks, wiring diagrams and project write-ups where a photo is too busy. Take the scalable SVG for print or editing, the high-resolution PNG to drop straight in, or the transparent PNG when you need it with no background behind it.

XIAO ESP32C3 pinout diagram

Pinout diagram

Every pin on both sides of the board with its functions, drawn by ESPboards from the ESP32-C3 Series Datasheet v2.4 - the same sheet shown at the top of this page. The PNG is a high-resolution image for screens, the SVG is vector so it stays sharp at any size, and the PDF is laid out to print on A4 or Letter.

Free for non-commercial use, with the credit line kept.

Embed the XIAO ESP32C3 pinout

Paste this where you want the diagram. Keep the credit line - it is what the licence asks for, and it is the only thing we want in return.

<figure>
  <img src="https://cdn.espboards.net/boards/xiao-esp32c3/diagram-1600.png"
       alt="XIAO ESP32C3 pinout diagram" width="1600" loading="lazy">
  <figcaption>
    XIAO ESP32C3 pinout by
    <a href="https://www.espboards.dev/esp32/XIAO_ESP32C3/">ESPboards</a>,
    <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC BY-NC 4.0</a>
  </figcaption>
</figure>

Using it commercially? Ask us first - it takes one email.

Yours to use, share and adapt for non-commercial work, as long as you credit espboards.dev - the full terms and ready-made credit lines are here.

Specifications

ESP32-C3 · 21 × 17.8 mm · vs other ESP32 chips →
Compute
MCU
ESP32-C3 · RISC-V
Clock
160 MHz
SRAM · Flash
400 KB · 4MB
Radio
Wi-Fi
802.11 b/g/n
Bluetooth
5.0 LE
Antenna
u.FL
I/O
GPIO · ADC
11 · 4
UART · I²C · SPI
2 · 1 · 1
PWM
6 channels
Power
USB
USB-C
Serial
Native (CDC)
Boot address
0x0
Electrical
Input
5V USB-C · 3.7V LiPo
Consumption
75mA active · 44µA sleep
Regulator
TLV75733P
Flashing
Upload · OTA
esptool_py · esp_ota
Flash · Boot mode
QIO · QIO
Sketch · Data
1.25 MB · 320 KB

Dimensions

XIAO ESP32C3 board, drawn to scale
17.8 mm21 mm
21 × 17.8 mm · pin pitch 2.54 mm
The XIAO ESP32C3 uses esptool_py for firmware uploads, esp_ota for over-the-air (OTA) updates. Flash mode is QIO with QIO boot mode. The maximum sketch size is 1.25 MB with 320 KB available for data.

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
As an Amazon Associate, ESPboards earns from qualifying purchases.
The Seeed Studio store link is an affiliate link - ESPboards may earn a commission on purchases, at no extra cost to you.

Resources

Similar boards