Source: https://mokxi.com/learn/xiao-esp32c3-pinout
Updated: 2026-10-26

Learn

# Seeed XIAO ESP32-C3 pinout: D0 to D10, GPIO numbers and boot pins

Beginner

Written by the Mokxi team, updated October 26, 2026

Start building free Open the editor

Or see every lesson.

- 455 parts on the bench
- 43 boards running now
- 1.00x real time, on every board

Click to open it in the editor

A potentiometer on D0 (A0, GPIO 2) dims an LED on D10, with the reading printed in millivolts.

The Seeed Studio XIAO ESP32-C3 is an ESP32-C3 on a board 21 by 17.5 mm with seven pads down each side and a USB-C socket. Its silkscreen says D0 to D10, and those are the XIAO family’s numbers, not the chip’s: D0 is GPIO 2 and D6 is GPIO 21. This page gives the GPIO behind every pad, what each one can do, the analog pins, the three pads that decide whether the board boots, and which pad to use for what.

The circuit above is the board in Mokxi with a potentiometer on D0 dimming an LED on D10, and the reading printed in millivolts: with the knob in the middle it prints "D0 1649 mV". There is no LED on the board to blink, which is the first thing to know about it. The table is held to the same board model the simulator runs, and where Mokxi does less than the chip, the row says so.

## Every pad, with its GPIO number

With the USB socket at the top, the left side reads D0 to D6 and the right side reads 5V, GND, 3V3, then D10, D9, D8 and D7. The Arduino core for the XIAO defines D0 to D10 and A0 to A3, so digitalWrite(D0, HIGH) drives the pad marked D0, which is GPIO 2. digitalWrite(0, HIGH) drives GPIO 0, which reaches no pad at all. Only D8, D9 and D10 have the same number both ways.

The I2C, SPI and UART pads are where the silkscreen and the core put them: SDA on D4, SCL on D5, SCK, MISO and MOSI on D8 to D10, and TX and RX on D6 and D7. The C3 can route any bus to other pads through its GPIO matrix, and Wire.begin(sda, scl) does that for I2C.

Seeed XIAO ESP32-C3: the left side top to bottom, then the right, USB at the top
Pin | GPIO | What it can do | Watch out for

D0 | 2 | ADC1_CH2 (A0). PWM. | Strapping pin: do not hold it low at power-on.

D1 | 3 | ADC1_CH3 (A1). PWM. | A safe all-rounder.

D2 | 4 | ADC1_CH4 (A2). PWM. | A safe all-rounder.

D3 | 5 | PWM. SPI SS (Mokxi’s default). Printed A3, but ADC2_CH0 on the chip (not modeled). | analogRead(A3) reads 0 in Mokxi.

D4 | 6 | PWM. I2C SDA (default). | -

D5 | 7 | PWM. I2C SCL (default). | -

D6 | 21 | PWM. UART0 TX on the chip. | In Mokxi a plain pin; Serial goes to the monitor.

5V | - | USB 5 V with a cable in; put 5 V here to run the board without one. | Not a GPIO.

GND | - | Ground. | -

3V3 | - | The regulator’s 3.3 V output. | Not a GPIO.

D10 | 10 | PWM. SPI MOSI (default). | -

D9 | 9 | PWM. SPI MISO (default). The BOOT button. | Strapping pin: low at reset waits for an upload.

D8 | 8 | PWM. SPI SCK (default). | Strapping pin: do not hold it low at power-on.

D7 | 20 | PWM. UART0 RX on the chip. | In Mokxi a plain pin; Serial goes to the monitor.

## Power: 5V, 3V3, GND and the battery pads

5V is the USB rail when a cable is plugged in, and the input when one is not: put 5 V on it to run the board from a supply. 3V3 is the onboard regulator’s output, enough for a sensor or a small display. GND is ground. On the back are two pads for a 3.7 V lithium battery, with a charger on the board, and the charger’s lamp is the only one the board has. Mokxi does not model the battery pads or the charger.

The C3’s pins are 3.3 V and none is 5 V tolerant, so a 5 V module’s output needs a divider before it reaches one. Keep each pin to an LED’s worth of current, with a resistor.

## Boot pins: D0, D8 and D9

Espressif lists three strapping pins on the ESP32-C3, GPIO 2, 8 and 9, and on a XIAO they are D0, D8 and D9. The chip reads them as it comes out of reset. GPIO 9 low means "wait for an upload", which is what the BOOT button does: hold it, press RESET, and the board is ready to flash. GPIO 2 and 8 should not be held low at power-on either.

So no button to ground on D0, D8 or D9 that might be pressed at power-on, and no module with a strong pull-down on them. D8 and D9 are also SPI’s SCK and MISO, which is usually fine, because an SPI device does not pull its lines low while it waits. Mokxi does not model strapping and starts whatever is wired there, so a circuit that runs here can still fail to boot on a desk.

## There is no user LED

The one lamp on the board belongs to the battery charger, and no pin reaches it. In Mokxi there is no LED_BUILTIN on this board, so a sketch that uses it does not compile, which is more honest than one that blinks nothing. Wire an LED and a 220 ohm resistor from a pad to GND instead; the circuit above uses D10, which is a safe pad for it.

BOOT and RESET are buttons, not pads. BOOT grounds GPIO 9, which is D9, so digitalRead(D9) reads it once the sketch is running.

## Analog inputs, PWM, the USB and the antenna

The analog inputs are D0, D1 and D2, which are A0 to A2 and ADC1 channels 2 to 4. Twelve bits, 0 to 4095. The board prints A3 beside D3 as well, but GPIO 5 is on ADC2, which Seeed and Espressif advise against on the C3, and Mokxi does not model it: analogRead(A3) reads 0 here. Use A0, A1 or A2.

Any pad can do PWM through LEDC, which has six channels on the C3, so six pads can fade at once. The USB-C socket goes to the chip’s own USB on GPIO 18 and 19, which reach no pad, and Serial is that USB port; in Mokxi Serial reaches the serial monitor directly. The antenna is a separate one on a small socket: plug it in on a desk. In Mokxi the WiFi is simulated, with no radio behind it.

## Questions

What GPIO is D0 on the XIAO ESP32-C3?

GPIO 2. D1 to D5 are GPIO 3 to 7, D6 is 21, D7 is 20, and D8 to D10 are GPIO 8 to 10. Write `D0` in your sketch and the core turns it into the right number.

Which XIAO ESP32-C3 pins are analog?

D0, D1 and D2, which are A0 to A2 on ADC1. A3, on D3, is on ADC2: avoid it.

What are the XIAO ESP32-C3 I2C pins?

SDA is D4 (GPIO 6) and SCL is D5 (GPIO 7), the pads `Wire.begin()` uses.

Does the XIAO ESP32-C3 have an LED?

Not one a sketch can drive. The lamp on the board is the battery charger’s. Wire an LED and a resistor to a pad.

Which XIAO ESP32-C3 pin should I use for a button?

D1 to D5 or D10, with `INPUT_PULLUP` and the button to ground. Avoid D0, D8 and D9 for a button that might be held at power-on.

Which pins are UART on the XIAO ESP32-C3?

D6 is TX and D7 is RX, GPIO 21 and 20, the chip’s UART0. `Serial` is the USB socket, so they are free for a GPS module or another board.

Can the XIAO ESP32-C3 run on a battery?

Yes. Two pads on the back take a 3.7 V lithium cell, and the board has a charger for it, whose lamp is the only light on the board. Mokxi does not model the battery pads or the charger, so in the simulator the battery is not part of the circuit.

Related

## Keep going

ESP32-C3 SuperMini Pinout: LED, ADC, I2C, Boot Pins ESP32 DevKit V1 Pinout: Every Pin and Which to Avoid I2C Scanner for Arduino and ESP32, and Fixes Connect a Board to WiFi and Serve a Page Run the XIAO ESP32-C3 in the simulator Help: the XIAO ESP32-C3 model The project page, with the full sketch Beginner

Sources

## Where the facts on this page come from

- Seeed Studio: getting started with the XIAO ESP32C3 (pinout, battery, ADC2, antenna)
- Espressif: ESP32-C3 Series datasheet (strapping pins, ADC, USB)

## Build this for real

Open the editor, change a value and watch the number move with it. Nothing to install, and no account needed.

Start building free Open the editor
