The ESP32-C3 is a 32-bit RISC-V single-core microcontroller featuring Wi-Fi and Bluetooth 5. Unlike its dual-core ESP32 predecessor, the C3 variant offers a lower pin count (22 usable GPIOs) but excels in low-power IoT applications. Crucially, the ESP32-C3 operates strictly at 3.3V logic and is not 5V tolerant on its GPIO pins. Below is the definitive pinout and peripheral wiring reference for the two most common 2026 variants: the ESP32-C3-SuperMini and the official ESP32-C3-DevKitM-1.

The Complete ESP32-C3 Pinout & Peripheral Color Code Table

This table maps the physical GPIO pins to their default peripheral functions and cross-references them with standard wiring color codes. Use this as your primary bench reference when wiring sensors, displays, and communication buses.

GPIOSymbol / Default FunctionPeripheral BusIEC 60446 (EU/Global)TIA-598 (US Data)Maker Hobbyist Standard
5VVBUS / 5V InputPowerBrownOrange/WhiteRed
GNDGround ReferencePowerBlueBlueBlack
3V33.3V Regulated OutputPowerBrown (Striped)Green/WhiteOrange / Red
GPIO0ADC1_CH0 / I2S / SPIADC1 / SPIBlackBlueYellow
GPIO1ADC1_CH1 / I2S / SPIADC1 / SPIBlackOrangeWhite
GPIO2ADC1_CH2 / Strapping PinADC1 / BootGreyGreenPurple (Caution)
GPIO3ADC1_CH3 / SPI MISOADC1 / SPIGreyBrownGreen
GPIO4ADC1_CH4 / I2C SDA / SPII2C / SPIVioletSlateBlue (SDA)
GPIO5I2C SCL / SPI CSI2C / SPIVioletWhiteYellow (SCL)
GPIO6UART1 TX / SPI CLKUART / SPIPinkRedGreen (TX)
GPIO7UART1 RX / SPI MISOUART / SPIPinkBlackWhite (RX)
GPIO8I2C SCL / Strapping PinI2C / BootWhiteYellowPurple (Caution)
GPIO9I2C SDA / Strapping PinI2C / BootWhiteVioletPurple (Caution)
GPIO10SPI FSPICS0 / PWMSPI / LEDCGreen/YellowPinkGrey
GPIO18USB D- (Native USB)USB SerialGreenGreenWhite (D-)
GPIO19USB D+ (Native USB)USB SerialYellowOrangeGreen (D+)
GPIO20UART0 RX (Default Serial)UART0RedBlue/WhiteBlack (RX0)
GPIO21UART0 TX (Default Serial)UART0RedOrange/WhiteGrey (TX0)
WARNING: The 5V pin on ESP32-C3 dev boards is directly tied to the USB VBUS. It can power external 5V sensors, but you must NEVER feed 5V back into any GPIO pin. The RISC-V core will suffer catastrophic latch-up and permanent damage above 3.6V. Always use a logic level shifter (like the BSS138 or TXS0108E) when interfacing with 5V I2C/SPI devices.

Rows People Get Wrong: Strapping Pins & 5V Tolerance Myths

When reading the ESP32-C3 Technical Reference Manual, three specific rows in the pinout table cause the most bricked boards and boot-looping firmware: GPIO2, GPIO8, and GPIO9.

The Strapping Pin Trap

GPIO2, GPIO8, and GPIO9 are 'strapping pins.' During reset, the ESP32-C3 samples the voltage on these pins to determine its boot mode.

  • GPIO8: Controls the boot source. If pulled HIGH at boot, it attempts to boot from the SPI flash. If pulled LOW, it enters the serial bootloader. Many off-the-shelf I2C sensor breakout boards have internal pull-up resistors on the SCL line. If you wire your I2C SCL to GPIO8, the sensor's pull-up resistor can force GPIO8 HIGH during a soft reset, causing the C3 to hang or fail to enter flash mode during OTA updates.
  • GPIO9: Dictates the boot log output. If you wire a low-impedance load (like an LED without a sufficient current-limiting resistor) to GPIO9, it will drag the pin LOW during boot, redirecting boot logs to GPIO2 and potentially stalling the boot sequence.
  • GPIO2: Tied to the internal pull-up during boot. If externally pulled LOW, it disables the boot log printing.
Bench Tip: Never use GPIO8 and GPIO9 for I2C, despite some older Arduino core defaults mapping them as SCL/SDA. Always remap your I2C bus to GPIO4 (SDA) and GPIO5 (SCL) in your Wire.begin(4, 5); initialization to avoid strapping pin conflicts.

The ADC Limitation

Unlike the original ESP32 which featured two ADC units, the ESP32-C3 only has ADC1, limited to GPIO0 through GPIO4. If your project requires more than 5 analog inputs, the C3 is the wrong silicon; step up to an ESP32-S3.

Regional & Standard Wiring Variants for Peripherals

While microcontrollers don't fall under NEC or IEC mains wiring codes, the peripheral wires connecting them to sensors, relays, and industrial PLCs do follow distinct regional and industry standards. Choosing the right color code prevents catastrophic cross-wiring when a project moves from the hobbyist bench to a commercial enclosure.

StandardRegion / IndustryVCC / PositiveGND / NegativeData / SignalWhen to Use
IEC 60446EU / Global IndustrialBrownBlueBlack / GreyWiring 24VDC industrial sensors, PLCs, and CE-marked control panels.
TIA/EIA-598US Telecom / DataOrange/WhiteBlueGreen/Brown pairsPulling CAT5e/CAT6 cable for long-distance RS485 or UART runs.
Maker HobbyistGlobal (Adafruit/SparkFun)RedBlackYellow/White/BlueBreadboarding, 3D printer control boards, and quick prototyping.

What this means in practice: If you are building a home automation node that will eventually be mounted in a DIN-rail enclosure alongside 24VDC relays, use IEC 60446 colors (Brown for 3.3V/5V, Blue for GND). If a maintenance technician opens that panel, they will instantly recognize Brown/Blue as DC power. Using Red/Black (Hobbyist) in an industrial panel creates a severe safety hazard, as Red is often reserved for emergency stop circuits or high-voltage DC in specific regional contexts.

Decision Path: Which Pin and Board Variant to Choose

Stop guessing which pin to use. Follow this decision tree to terminate your design with a concrete pick.

Application NeedConditionConcrete Pick (GPIO)Required Code / Config
I2C Sensor (BME280, OLED)Needs stable boot, no strapping conflictsGPIO4 (SDA), GPIO5 (SCL)Wire.begin(4, 5);
SPI Display (ST7789, ILI9341)High-speed data, needs dedicated SPI busGPIO2 (CS), GPIO3 (MISO), GPIO4 (MOSI), GPIO5 (CLK)Use hardware SPI1, avoid bit-banging.
Analog Reading (Potentiometer, LDR)Needs 12-bit ADCGPIO0, GPIO1, or GPIO3analogRead(0); (Note: 12-bit max, 2.5V ref limit).
Hardware UART (GPS, PMS5003)Needs dedicated serial port, not USB debugGPIO6 (TX), GPIO7 (RX)Serial1.begin(9600, SERIAL_8N1, 7, 6);
Deep Sleep WakeupNeeds EXT0 or EXT1 interrupt wakeupGPIO2 or GPIO3Configure RTC_GPIO in ESP-IDF or Arduino deep sleep API.

The Default Recommendation: For 90% of general-purpose IoT sensor nodes using the ESP32-C3-SuperMini, wire your primary I2C bus to GPIO4 and GPIO5, reserve GPIO6 and GPIO7 for a secondary UART device (like a GPS module), and leave GPIO8 and GPIO9 completely unconnected to guarantee flawless OTA flashing and boot sequences.

Verifying Dead Boards and Faded Markings

The ESP32-C3-SuperMini is notorious for poor silkscreen quality. After a few weeks on the bench, the pin labels rub off, leaving you with a blank black PCB and a row of unmarked castellated holes. Here is how to safely interpret the pinout when markings are missing, without relying on guesswork.

  1. Identify Ground (GND): Set your multimeter to continuity mode (the diode/beep setting). Place the black probe on the metal shield of the USB-C connector. Probe the header pins with the red probe. Any pin that beeps (reads less than 1.0 ohm) is a GND pin. On the SuperMini, there are typically two GND pins located on opposite corners of the header.
  2. Identify 5V (VBUS): Switch the multimeter to DC Voltage. Plug the board into a known-good 5V USB data cable (do not connect to a PC yet; use a dumb wall charger to avoid shorting PC USB ports if you make a mistake). Place the black probe on your identified GND pin. Probe the remaining pins. The pin reading exactly 4.8V to 5.2V is your 5V VBUS pin.
  3. Identify 3.3V: With the board still powered, probe the remaining pins against GND. The pin reading 3.25V to 3.35V is the 3V3 output from the onboard LDO regulator.
  4. Locate the LDO Capacitors: Visually locate the largest ceramic capacitor (usually 10uF, marked '106') near the voltage regulator. One side of this capacitor is tied directly to the 3.3V rail, and the other to GND. Tracing the copper pour from these capacitors under a magnifying glass will confirm your power pins with 100% certainty, bypassing the need for faded silkscreen entirely.

For comprehensive hardware layout rules and RF antenna keep-out zones when designing custom carrier boards, always defer to the official Espressif Hardware Design Guidelines. Never route high-speed SPI traces directly under the PCB antenna trace, as the 2.4GHz harmonic noise will desensitize the Wi-Fi receiver by up to 15dB.