The ESP32-C3 Super Mini shows just how much technology can fit into a very small space. About the size of a thumb, this tiny board is built around Espressif’s ESP32-C3 chip and brings powerful wireless computing into a compact form that is perfect for small electronics projects. It is also an important step forward in the ESP32 family, using a 32-bit RISC-V processor instead of the older Tensilica Xtensa architecture found in earlier versions.
To use it well, though, you need to understand its pinout. Each pin has a job, and knowing what each one does will help you build circuits more confidently, avoid mistakes, and get the most out of this little board.
ESP32-C3 Super Mini Pinout
The ESP32-C3 Super Mini is designed to be incredibly easy to use for prototyping. It features two rows of eight pins along its sides, giving you 16 main connection points in total. These pins are spaced at the standard 2.54 mm distance, which means the board will snap perfectly into a standard breadboard or fit seamlessly onto a custom circuit board using regular headers.
The pinout is shown below:

Please note that the pinout may vary slightly depending on the manufacturer. Therefore, double-check the pinout with the pin mapping on your board’s silkscreen.
Let’s take a closer look at the ESP32-C3 Super Mini pins and their functions, starting with the GPIO pins.
ESP32-C3 Super Mini GPIO Pins
The ESP32-C3 Super Mini exposes 13 GPIO pins on its headers: GPIO 0 through GPIO 10, as well as GPIO 20 and GPIO 21.

The most important rule to remember when using this board is that the microcontroller operates strictly on 3.3V logic. This means you must never expose the GPIO pins to a 5V source. Doing so can permanently damage the board.
The GPIO Matrix and the IO MUX
One of the most powerful features of the ESP32-C3 is its GPIO Matrix. You can think of it as an internal routing system inside the chip. It allows you to assign almost any digital functions—like PWM, I2C, SPI, UART, I2S or TWAI—to almost any physical pin simply by changing your code.
However, this flexible system is not perfect for every job. Because signals have to pass through the GPIO Matrix, there is a small delay. In most projects, this delay is so small that it does not matter. But for very fast signals, or for sensitive analog signals that cannot be processed digitally, the ESP32-C3 bypasses the GPIO Matrix and uses something called the IO MUX.
The IO MUX connects certain pins directly to specific hardware inside the chip. Some of these connections are fixed and cannot be moved in software, while others have default pin locations but can still be rerouted through the GPIO Matrix. Functions that strictly depend on the IO MUX include ADC channels, the internal JTAG debugging interface, the USB Serial/JTAG controller, and the high-speed SPI connections used for the built-in flash memory.
So, while you have the freedom to route signals like I2C or PWM to almost any pin on the Super Mini, you cannot freely move every function. Some features, especially analog or high-speed ones, must stay on their assigned pins because they rely on the IO MUX.
In simple terms, the ESP32-C3’s peripheral signals can be grouped like this:
| Routing type | Peripheral examples | What it means |
| Fixed to specific pins through the IO MUX | ADC1, ADC2 | These functions must use their assigned pins and cannot be moved in software. |
| Connected to default IO MUX pins, but can also be rerouted through the GPIO Matrix | UART0, SPI2 | These functions have standard pin locations, but they can be moved to other GPIO pins if needed. |
| Not assigned to fixed pins by default and routed through the GPIO Matrix | UART1, I2C, I2S, TWAI | These functions are flexible and can be assigned to different GPIO pins in software. |
Which ESP32-C3 Super Mini GPIOs are safe to use?
Although the ESP32-C3 Super Mini has a lot of pins with various functions, some of them may not be suitable for your projects. The table below shows which pins are safe to use and which pins should be used with caution.
- – Your top priority pins. They are perfectly safe to use.
- – Pay close attention because their behavior, particularly during boot, can be unpredictable. Use them with caution.
| Label | GPIO | Safe to use? | Reason |
| GPIO 0 | |||
| GPIO 1 | |||
| GPIO 2 | Strapping pin | Must be held high during boot (if low on reset, normal flash boot may fail) | |
| GPIO 3 | |||
| GPIO 4 | JTAG | Used during boot; JTAG TMS for debugging; acts as Quad-SPI flash IO (hold data line) in internal-flash variants | |
| GPIO 5 | JTAG | Used during boot; JTAG TDI for debugging; acts as Quad-SPI flash IO (write-protect data line) in internal-flash variants | |
| GPIO 6 | JTAG | Used during boot; JTAG TCK for debugging; provides flash clock in internal-flash variants | |
| GPIO 7 | JTAG | Used during boot; JTAG TDO for debugging; acts as Quad-SPI flash IO (data line) in internal-flash variants | |
| GPIO 8 | Strapping pin | Must be held high during reset (if low, UART flashing/boot may not work) | |
| GPIO 9 | Strapping pin | Controls boot mode on reset (HIGH for normal flash boot, LOW enters serial download mode) | |
| GPIO 10 | |||
| GPIO 20 | UART-RX | Used as UART0 receive (console/bootloader); repurposing may disable serial programming and debug logs | |
| GPIO 21 | UART-TX | Used as UART0 transmit (console/bootloader); repurposing may disable serial console output and printing |
The image below shows which GPIO pins can be used safely.

ESP32-C3 Super Mini Interrupt Pins
The ESP32-C3 Super Mini supports interrupts on all of its 13 user-accessible GPIO pins.

The Super Mini supports four different trigger modes that determine exactly when this interruption happens:
| Mode | Trigger Condition | Typical Use Cases |
RISING | Pin transitions from LOW to HIGH | Button press detection (pull-down) |
FALLING | Pin transitions from HIGH to LOW | Button press detection (pull-up) |
CHANGE | Pin changes state (either direction) | Encoder reading, pulse counting |
LOW | Pin remains at LOW level | Level-triggered events |
ESP32-C3 Super Mini RTC GPIO Pins
Some GPIO pins on the ESP32-C3 are connected to the RTC, or real-time clock, low-power system. These pins are called RTC GPIOs. On the ESP32-C3 Super Mini, these are GPIO 0, GPIO 1, GPIO 2, GPIO 3, GPIO 4, and GPIO 5.

These pins are especially important when the ESP32 is in deep sleep mode. They can wake the chip up when an external event happens, such as a person pressing a button, a PIR motion sensor detecting movement, or an accelerometer sending an alert signal.
The other standard GPIO pins are only capable of waking the board from a light sleep mode.
ESP32-C3 Super Mini Strapping Pins
The ESP32-C3 Super Mini has three strapping pins: GPIO 2, GPIO 8, and GPIO 9.

These pins help decide how the ESP32 starts up when power is turned on or when the board is reset. Depending on the electrical state of these three pins at startup, they tell the ESP32 whether it should boot up normally and run your code (BOOT mode), or receive a new program from your computer (FLASH mode).
In most cases, you do not need to worry about these pins because the board already sets them correctly for normal use.
However, you must use these pins with caution. If you connect an external component to a strapping pin, it might accidentally change the pin’s state during startup. If you ever find that your ESP32 is suddenly refusing to let you upload new code, check to see if you have anything plugged into GPIO 2, 8, or 9!
ESP32-C3 Super Mini ADC Pins
The ESP32-C3 integrates two separate, high-performance SAR ADCs: ADC1 and ADC2. These let the board read analog voltages from sensors such as potentiometers, light sensors, or temperature sensors. On the Super Mini board, six pins with analog input capability are available.

GPIO 0 through GPIO 4 belong to ADC1, where they are Channel 0 through Channel 4. GPIO 5 belongs to ADC2 and is Channel 0.
| Physical GPIO Pin | Assigned ADC Unit | Analog Channel Designation |
| GPIO 0 | ADC1 | Channel 0 |
| GPIO 1 | ADC1 | Channel 1 |
| GPIO 2 | ADC1 | Channel 2 |
| GPIO 3 | ADC1 | Channel 3 |
| GPIO 4 | ADC1 | Channel 4 |
| GPIO 5 | ADC2 | Channel 0 |
Note that these ADCs have a 12-bit resolution. This means they can take a voltage reading between 0V and 3.3V and slice it up into 4,096 distinct steps (from 0 to 4095). To put that into perspective, 3.3 volts divided by 4096 steps equals roughly 0.0008 volts. This gives your board the ability to detect voltage changes as tiny as 0.8 millivolts!
Note:
According to the official datasheet, the five channels on ADC1 are factory-calibrated for accuracy, while the single channel on ADC2 is not.
Also ADC2 cannot be used when Wi-Fi is enabled. So, if your project needs Wi-Fi and analog input at the same time, it is better to use the ADC1 pins instead.
ESP32-C3 Super Mini PWM Pins
Every single exposed GPIO pin on the ESP32-C3 Super Mini (GPIO 0 through 10, plus 20 and 21) can output a high-resolution Pulse Width Modulation (PWM) signal.

To achieve this, the ESP32-C3 uses a built-in controller called LEDC (LED PWM Controller). Even though the name makes it sound like it is only for LEDs, it can actually generate PWM signals for many different purposes. The LEDC hardware has 6 independent channels, and each channel can create PWM signals with different frequencies and duty cycles. This makes it useful not only for dimming LEDs, but also for controlling motors, buzzers, and other devices that need PWM output.
ESP32-C3 Super Mini I2C Pins
The ESP32-C3 features a single hardware I2C controller capable of operating in standard mode (100 kbit/s), fast mode (400 kbit/s), and higher speeds depending on bus capacitance.
Unlike some other functions on the ESP32-C3, the I2C controller is not assigned to fixed pins by default. Instead, it can be mapped to any GPIO pin through the GPIO Matrix.
Important Warning:
You may see many websites on the internet that claim that SDA is GPIO 8 and SCL is GPIO 9 on the ESP32-C3 Super Mini. This information is misleading.

According to Espressif’s official ESP32-C3 datasheet, I2C is not connected to specific GPIO pins through the IO MUX. In other words, there are no true fixed default I2C pins at the chip level. The reason GPIO 8 and GPIO 9 often appear online is that some Arduino examples or libraries use those pins in their code. That does not mean they are the correct or safest choice.
In fact, GPIO 8 and GPIO 9 are risky choices for I2C because they are also strapping pins. These pins help decide how the ESP32-C3 starts up when power is turned on.
I2C communication fundamentally relies on hardware pull-up resistors to keep the data lines at a HIGH logic state when idle. However, some sensors, displays, or other I2C devices may briefly pull one of these lines LOW while they are powering up, resetting, or having communication problems. If that happens at the exact moment the ESP32-C3 is booting, the chip may read the pin states incorrectly.
For example, if a connected I2C device pulls GPIO 9 LOW during boot, the ESP32-C3 may think it should enter firmware download mode instead of running the program normally. As a result, the board may fail to boot normally until you physically disconnect the sensor and restart the board. Similarly, pulling GPIO 8 LOW during startup will block your critical debugging logs.
To avoid these problems and make startup more reliable, it is a good idea to remap your I2C connections away from pins 8 and 9 entirely. You can easily do this in the Arduino IDE using the Wire.begin() function to assign I2C to safer pins like GPIO 0, 1, 3, or 10.
Wire.begin(SDA_pin, SCL_pin);ESP32-C3 Super Mini SPI Pins
The ESP32-C3 actually features three distinct SPI controllers (SPI0, SPI1, and SPI2). However, SPI0 and SPI1 are utilized internally to communicate with the chip’s onboard 4 MB flash memory. Therefore, SPI2 is the only usable SPI interface available on the ESP32-C3 Super Mini.
By default, SPI2 is mapped through the IO MUX directly to below native pins:
| SPI Signal | SPI2 Default Pin Mapping |
| SCK / CLK | GPIO6 |
| MOSI | GPIO7 |
| MISO | GPIO2 |
| CS (Chip Select) | GPIO10 |

ESP32-C3 Super Mini UART Pins
The ESP32-C3 Super Mini has two hardware UART interfaces:
- One serial connection is available through the USB-C port
- The other is available through the physical UART pins: TX on GPIO 21 and RX on GPIO 20.

Because of this dual setup, you must explicitly tell the Arduino IDE where to route your serial data using a specific setting called “USB CDC On Boot“.
If you want to plug a USB-C cable directly into your computer to read standard Serial.print() debugging messages, you must ensure “USB CDC On Boot” is enabled. If you forget and leave it disabled, the board will push all that serial data out of the physical pins instead, leaving your computer’s serial monitor completely blank and unresponsive. Conversely, if you want to wire up a separate USB-to-Serial adapter directly to the physical pins, you must disable that setting.
So the basic rule is simple. If you want to use the Serial Monitor over USB-C, enable USB CDC On Boot. If you want to use the TX and RX pins as a UART port, disable USB CDC On Boot.

Of course, if your project requires even more serial ports, you can always use libraries like SoftwareSerial to create virtual UART connections on any of your other free pins.
ESP32-C3 Super Mini Power Pins
The ESP32-C3 Super Mini has several power pins that are used to power the board itself and also to provide power to connected sensors, modules, and other external parts.

Type-C USB port is the primary way to power the Super Mini board. When you connect the board to a computer or a USB wall adapter, the USB port delivers 5V directly to an onboard Low-Dropout (LDO) voltage regulator. This regulator steps the 5V down to a stable 3.3V, which is required by the ESP32-C3 chip and other components.
5V pin allows you to power the Super Mini from an external source, such as a battery pack or a wall adapter, without using the USB port. This is useful for standalone projects that will run on their own without being connected to a computer. The input voltage for this pin is typically between 4.3V and 6.0V. Just like with USB power, the board’s onboard regulator lowers this voltage to 3.3V before it is used by the microcontroller and the rest of the circuit.
Important Warning:
The Super Mini is designed to be as small and inexpensive as possible, which means it lacks the internal safety circuits (such as an automatic load switch or a dual Schottky diode OR-ing configuration) needed to manage multiple power sources at once. You must never supply power to the 5V pin while the USB cable is also plugged in. Doing so will cause the two power sources to collide, which can permanently damage your computer’s USB port, ruin your external battery, or destroy the Super Mini.
3V3 pin serves a dual purpose depending on how you use it. Most of the time, when you power the board via USB or the 5V pin, the 3V3 pin acts as an output. It provides a steady 3.3V supply that you can use to power your small 3.3V sensors or modules. However, if you have a highly stable 3.3V external battery or power supply, you can use the 3V3 pin as an input. Doing this bypasses the board’s regulator entirely and feeds power directly to the microcontroller’s logic circuits.
ESP32-C3 Super Mini Special Function Pins

Onboard Status LED (GPIO 8) The Super Mini includes a small blue status LED mounted directly to the board. This LED is hardwired to GPIO 8 and is incredibly useful for visually debugging your code. It is important to note that this LED operates on inverted logic: setting the pin to LOW turns the LED on, while setting it to HIGH turns it off.
Next to the USB port, you will find two small tactile push-buttons. These are used for resetting the board and for manually entering the bootloader when needed:
BOOT Button (GPIO 9) is physically connected to GPIO 9. Holding this button forces the strapping logic to a physical LOW state, causing the ESP32-C3 to enter the bootloader mode.
RESET Button (CHIP_PU) is tied to the chip’s enable line (CHIP_PU). Pressing it briefly cuts power to the main digital logic, immediately halting the microcontroller and forcing it to restart.
These two buttons can be used together to place the ESP32-C3 Super Mini into Bootloader Mode, which is the mode used for uploading firmware. To do this manually, you
- First press and hold the BOOT button
- Then briefly press and release the RESET button
- Finally, release the BOOT button
Note that you will typically only need to do this the very first time you connect the board to your computer. However, some users find that they must repeat this process each time they want to upload new code.
