The ESP32-C3 is a single-core RISC-V microcontroller featuring 22 programmable GPIOs, native USB, and Wi-Fi/BLE 5.0. However, the physical esp32c3 pinout you can actually access on your bench depends entirely on your carrier board. The ubiquitous "SuperMini" clone exposes 20 pins, while the official ESP32-C3-DevKitM-1 exposes all 22. Below is the definitive silicon-level reference, followed by the practical realities of wiring it without bricking the chip.
The Complete ESP32-C3 Pinout Reference Table
This table maps the raw ESP32-C3-WROOM-02 silicon GPIOs to their default functions, alternate multiplexed roles, and physical availability on the two most common development boards. Use this as your master cheat sheet when designing custom PCBs or wiring breadboards.
| GPIO | Default / Primary Function | Alternate Functions (I2C/SPI/ADC) | SuperMini Exposed? | Hardware Notes & Gotchas |
|---|---|---|---|---|
| 0 | ADC1_CH0 | SPI2, I2S | Yes | 12-bit ADC. Do not use for precision analog without oversampling. |
| 1 | ADC1_CH1 | SPI2, I2S | Yes | 12-bit ADC. Safe for general sensor reading. |
| 2 | ADC1_CH2 | I2C, JTAG | Yes | Strapping/JTAG: Pull-ups here can interfere with USB-JTAG boot. |
| 3 | ADC1_CH3 | I2C, JTAG | Yes | Strapping/JTAG: Avoid using for I2C SDA if USB-JTAG is needed. |
| 4 | ADC1_CH4 | SPI2, JTAG | Yes | Strapping/JTAG: Must be floating or pulled high for normal boot. |
| 5 | ADC2_CH0 | JTAG | Yes | Strapping/JTAG: Conflicts with Wi-Fi usage if ADC2 is active. |
| 6 | General I/O | SPI2, I2C, UART1 | Yes | Excellent general-purpose pin. No boot strapping conflicts. |
| 7 | General I/O | SPI2, I2C, UART1 | Yes | Excellent general-purpose pin. Safe for I2C SCL. |
| 8 | I2C, UART1 | SPI2, Native LED | Yes | Strapping Pin: Controls log output. Drives the onboard WS2812/LED on SuperMini. |
| 9 | UART1 TX | SPI2, Boot Button | Yes | Strapping Pin: Pulled low at boot enters UART download mode. Tied to the physical BOOT button. |
| 10 | UART1 RX | SPI2, I2C | Yes | Safe for general I/O or secondary UART RX. |
| 11 | SPI2 CS0 | I2S, UART1 | Yes | Default Chip Select for SPI peripherals (e.g., SD cards, displays). |
| 12 | SPI2 MISO | I2S | No (Internal Flash) | Reserved: Routed to the internal SPI flash. Do not use. |
| 13 | SPI2 MOSI | I2S | No (Internal Flash) | Reserved: Routed to the internal SPI flash. Do not use. |
| 14 | SPI2 SCLK | I2S | No (Internal Flash) | Reserved: Routed to the internal SPI flash. Do not use. |
| 15 | SPI2 CS1 | I2S, ADC | No (Internal Flash) | Reserved: Routed to the internal SPI flash. Do not use. |
| 16 | SPI2 HD | UART1 | No (Internal Flash) | Reserved: Routed to the internal SPI flash. Do not use. |
| 17 | SPI2 WP | UART1 | No (Internal Flash) | Reserved: Routed to the internal SPI flash. Do not use. |
| 18 | Native USB D- | GPIO, UART0 | No (USB-C routed) | USB Data: Hardwired to the USB-C connector on most dev boards. |
| 19 | Native USB D+ | GPIO, UART0 | No (USB-C routed) | USB Data: Hardwired to the USB-C connector on most dev boards. |
| 20 | UART0 RX (U0RXD) | I2S, SPI3 | Yes | Default debug console RX. Connected to the onboard USB-UART bridge. |
| 21 | UART0 TX (U0TXD) | I2S, SPI3 | Yes | Default debug console TX. Connected to the onboard USB-UART bridge. |
Board Variants, USB Standards, and Faded Silkscreen
Unlike household AC wiring governed by NEC or IEC 60446, microcontroller pinouts are dictated by the specific carrier board's engineering. The two dominant ESP32-C3 form factors handle the silicon's 22 pins very differently.
SuperMini vs. DevKitM-1
The ESP32-C3 SuperMini is a community-designed, ultra-compact board that sacrifices GPIO12 through GPIO17 (which are permanently consumed by the onboard SPI flash) and GPIO18/19 (routed to the USB-C port) to achieve its tiny footprint. It exposes exactly 20 pins. The official ESP32-C3-DevKitM-1 is larger, includes an onboard USB-to-UART bridge (allowing GPIO18/19 to be broken out as standard I/O if you desolder zero-ohm resistors), and exposes all usable silicon pins.
Interpreting USB and Peripheral Wiring Standards
When wiring custom harnesses to the ESP32-C3's USB or sensor ports, you must follow established DC and data standards to avoid short circuits:
- USB 2.0 Wiring (IEC 62684 / USB-IF): If you are wiring a raw USB-C receptacle to GPIO18/19 for a custom PCB, follow standard USB color codes: Red = VBUS (5V), Black = GND, Green = D+ (GPIO19), White = D- (GPIO18). Reversing D+ and D- will prevent the RISC-V core from enumerating on your PC.
- DC Peripheral Wiring (IEC 60446 adapted for DC): While IEC 60446 specifies Brown for Line and Blue for Neutral in AC systems, the accepted global standard for low-voltage DC sensor wiring (like I2C or SPI harnesses) is Red for VCC (3.3V), Black for GND, and Yellow/Orange for Signal lines. Stick to this to prevent instant death to the 3.3V logic gates.
Safe Interpretation When Markings are Faded
Cheap clone boards often feature poorly aligned or faded silkscreen. If you cannot read the pin labels, orient the board with the USB-C port facing away from you and the main RISC-V shield can facing up. The pin immediately to the left of the USB port shell is typically GND or 5V (depending on the specific clone revision), but the safest method is to use a multimeter in continuity mode. Probe the suspected GND pin against the metal shell of the USB-C port; a reading of < 1 ohm confirms ground. Never guess VCC pins based on faded ink.
Rows People Get Wrong (Strapping Pins and JTAG Conflicts)
The ESP32-C3 datasheet outlines specific "strapping pins" that the bootloader samples during power-on to determine boot modes. Attaching sensors, relays, or pull-up resistors to these pins is the number one cause of "failed to connect to ESP32" errors in the Arduino IDE or ESP-IDF.
GPIO2, GPIO3, and GPIO8 control JTAG routing and log output. If you wire an I2C sensor (like a BME280) to GPIO2 (SDA) and GPIO3 (SCL) and use standard 4.7kΩ pull-up resistors to 3.3V, you will force the ESP32-C3 into USB-JTAG mode at boot. This disables the standard UART bootloader, making it impossible to flash new code via the Arduino IDE without manually holding the physical BOOT button (GPIO9) during every reset. Fix: Use GPIO6 and GPIO7 for your primary I2C bus.
GPIO 9 (The Boot Button): This pin is internally pulled high. If it is sampled LOW during a reset, the chip enters UART download mode. If your external circuit pulls GPIO9 low (e.g., a relay coil or a switch wired to ground without a pull-up), the board will sit silently in download mode and your application code will never run.
GPIO 18 and 19 (Native USB): On the SuperMini, these are hardwired to the USB-C data lines. If you attempt to use them as standard digital outputs in your code while the board is plugged into a PC, you will short the USB D+/D- lines through the RISC-V core's output drivers, causing your PC's USB hub to reset or throw an "Overcurrent" warning. Treat them as strictly off-limits for general I/O on SuperMini boards.
Peripheral Wiring Colors and 3.3V Logic Safety
The most catastrophic mistake makers make with the ESP32-C3 is assuming it shares the 5V tolerance of older Arduino UNO (ATmega328P) boards. The ESP32-C3 is built on a 40nm process and operates at a strict 3.3V logic level.
The 5V Tolerance Myth
Feeding a 5V signal into any ESP32-C3 GPIO (even for a millisecond) will exceed the absolute maximum ratings of the input buffer, permanently damaging the silicon gate. This is common when wiring 5V I2C sensors (like older Adafruit breakout boards) or 5V WS2812B LED strips directly to the data pins.
If your peripheral requires 5V logic (e.g., a 5V relay module with an optocoupler, or a standard HC-SR04 ultrasonic sensor), you must use a bidirectional logic level shifter (like the Texas Instruments TXS0108E or a cheap BSS138 MOSFET-based module). Wire the ESP32-C3 GPIO to the low-voltage (LV) side, and the 5V sensor to the high-voltage (HV) side. Never rely on internal clamping diodes to drop 5V down to 3.3V; they will burn out and short the pin to VDD.
Powering the Board: 5V vs 3.3V Pins
While the logic is 3.3V, the ESP32-C3 SuperMini and DevKit boards include an onboard LDO (Low Dropout) regulator. You can safely supply 5V to the "5V" or "VIN" pin (which feeds the LDO, which then generates the 3.3V rail), or you can bypass the LDO and supply exactly 3.3V to the "3.3V" pin.
- When to use the 5V pin: When powering from a USB power bank, a 5V solar charge controller, or a 5V bench supply. The onboard LDO will handle the step-down, but it will dissipate heat. Keep total 3.3V rail draw under 400mA to prevent thermal shutdown.
- When to use the 3.3V pin: When running from a single-cell LiPo (via a boost converter set to 3.3V) or a dedicated 3.3V lab supply. This bypasses the inefficient onboard LDO, drastically reducing quiescent current draw for deep-sleep battery applications.
For authoritative hardware design constraints and absolute maximum ratings, always cross-reference your specific carrier board schematic with the official ESP32-C3 Datasheet and the Espressif Hardware Design Guidelines. Understanding the physical realities of your specific board variant is the difference between a robust embedded deployment and a fried RISC-V core.






