Articles › Microcontrollers and code
Which ESP32 board? Classic, S3, C3 and C6 compared for makers
Original ESP32, S3, C3 and C6 compared: cores, Wi-Fi 6, Bluetooth Classic vs LE, native USB, pin counts. Small boards vs DevKits, and picking a board per project.
- Need Bluetooth Classic (e.g. A2DP audio)? Only the original ESP32 has it. The S3, C3 and C6 are Bluetooth LE only.
- Want the board itself to be a keyboard or other USB device? Pick the S3, which has USB OTG. The C3 and C6 have USB only for flashing and serial.
- Every chip here is 2.4 GHz Wi-Fi only. The C6 is the one with Wi-Fi 6 and Thread/Zigbee.
- A chip's GPIO count is not the number of pins on the board. Always check the pinout of the board you are buying.
ESP32 isn’t one chip. The S3, C3 and C6 you see in shops are different chips that differ in cores, radios, USB and pin count. Pick the wrong one and some projects simply can’t be built, such as buying an S3 for a Bluetooth speaker that needs Bluetooth Classic. This lesson compares the four you’ll meet most often, using Espressif’s own data, then works through choosing for real projects.
Four chips in one table
Figures are for the chip itself (from Espressif); a given board may not break out every pin.
| ESP32 (original) | ESP32-S3 | ESP32-C3 | ESP32-C6 | |
|---|---|---|---|---|
| Cores | Dual Xtensa LX6 | Dual Xtensa LX7 | Single RISC-V | Single RISC-V + low-power core |
| Max clock | 240 MHz | 240 MHz | 160 MHz | 160 MHz (LP core 20 MHz) |
| Wi-Fi | 802.11 b/g/n (Wi-Fi 4), 2.4 GHz | Wi-Fi 4, 2.4 GHz | Wi-Fi 4, 2.4 GHz | Wi-Fi 6, 2.4 GHz |
| Bluetooth | Classic (BR/EDR) + BLE, v4.2 | BLE 5 | BLE 5 | BLE 5 |
| Thread / Zigbee (802.15.4) | No | No | No | Yes |
| USB on the chip | None (boards use a USB-UART bridge) | USB OTG + USB Serial/JTAG | USB Serial/JTAG | USB Serial/JTAG |
| GPIO (chip) | 34 | 45 | 22 | 30 |
| SRAM | 520 KB | 512 KB | 400 KB | 512 KB |
Other differences: the original ESP32 has two 8-bit DAC channels and 10 touch pins. The S3 has no DAC but 14 touch pins, plus vector instructions that speed up signal processing and small neural networks. The C3 has neither DAC nor touch.
Bluetooth: Classic is only on the original
There are two kinds of Bluetooth, used for different jobs:
- Bluetooth Classic (BR/EDR) carries audio (speakers, headphones) and older serial-style devices.
- Bluetooth LE is low power: sensors, buttons, remotes, talking to a phone app.
Of these four, only the original ESP32 does Classic. The S3, C3 and C6 are LE only. If the project is a speaker or receives audio from a phone, it has to be the original.
Native USB: OTG and Serial/JTAG are not the same
- The original ESP32 has no USB on the chip. A DevKit therefore carries a USB-to-UART bridge chip next to the connector for flashing and the serial monitor. Some computers need the bridge chip’s driver installed first.
- USB Serial/JTAG (S3, C3, C6) is a fixed-function USB block inside the chip. One USB cable gives you flashing, a serial monitor and JTAG debugging, but it can’t be turned into any other kind of USB device.
- USB OTG (on the S3) lets the board be many kinds of USB device: a keyboard or mouse (HID), a MIDI device, or a flash drive (MSC). This is the chip for a macro pad or a game controller that just works when plugged into a computer.
USB takes two GPIO pins. The C3 uses GPIO18 and GPIO19; the S3 and C6 have their own fixed pins. If you use the built-in USB, those two pins are not available for anything else.
C6: Wi-Fi 6 and the smart home
The C6 is the only one of the four with Wi-Fi 6 (802.11ax at 2.4 GHz) and an 802.15.4 radio for Thread and Zigbee, which suits smart-home devices that need to talk to those systems. It also has a separate low-power RISC-V core running at up to 20 MHz.
What doesn’t change: every chip in this lesson is 2.4 GHz Wi-Fi only, and the C6’s Wi-Fi 6 is at 2.4 GHz too.
Small boards vs DevKits
The same chip comes on boards of many sizes.
| DevKit | Small (thumb-sized) board | |
|---|---|---|
| Pins broken out | Nearly all, e.g. ESP32-DevKitC 38 pins, ESP32-C6-DevKitC-1 32 pins | Fewer; check that board’s pinout |
| USB ports | Some have two (via a bridge, and the chip’s own USB) | Usually one |
| Breadboard | A 38-pin board leaves no free holes on one breadboard | Narrower, leaves holes for wires |
| Good for | Bench experiments, learning | Fitting inside a toy or a 3D-printed case |
More on board width in the breadboard lesson. The board’s flash size matters if you plan to update firmware over Wi-Fi, because you need room for two firmware images; how OTA and rollback work is covered at 6amdev: ESP32 OTA updates without bricking.
Worked example: choosing from real requirements
Project 1: a 12-key macro pad that acts as a keyboard when plugged in
- Count pins: 12 keys + 1 single-wire LED strip + 2 for an I2C OLED = 15 pins
- Must be a USB HID device → needs USB OTG → ESP32-S3
- Check pins: the chip has 45, minus 2 for USB, plenty left, but confirm the board you choose actually breaks out 15 usable pins.
Project 2: a battery temperature sensor that sends readings to a phone over BLE
- Count pins: I2C sensor 2 + one button 1 = 3 pins
- Needs BLE, no special USB → a small C3 board is enough
- Check pins: 22 − 2 (GPIO18/19 for USB) = 20 on the chip, more than enough
Project 3: a plush speaker that plays music from a phone
- Ordinary phone audio over Bluetooth uses Bluetooth Classic
- → only the original ESP32 among these four
Project 4: a light switch that joins a smart home over Thread or Zigbee
- Needs an 802.15.4 radio → C6
Start with “which feature do only some chips have?” (Bluetooth Classic, USB OTG, Thread/Zigbee) before counting pins or MHz. A missing feature can’t be added; missing pins just mean a bigger board.
Common mistakes
- Buying an S3 or C3 for a Bluetooth speaker. They have no Bluetooth Classic.
- Expecting a C3 to be a USB keyboard. Its USB does flashing, serial and JTAG only, not OTG.
- Counting GPIO from the chip spec. Small boards break out far fewer, some pins go to USB, and modules use some internally: the ESP32-WROOM-32E module offers up to 26 GPIOs from a chip with 34, because GPIO6–11 drive its flash.
- Feeding a 5 V signal into a GPIO. ESP chip pins tolerate 3.6 V; every chip here runs at 3.3 V.
- Blaming the board when flashing fails. First check the USB cable isn’t charge-only, and that an original-ESP32 board’s bridge driver is installed.
- Expecting 5 GHz Wi-Fi. Every chip here is 2.4 GHz only.
Sources
FAQ
Which one should a beginner start with?
Without a specific reason, a DevKit for the original ESP32 or the S3 has the most examples and tutorials to follow. For a small battery toy that uses BLE, a small C3 board is a fine start too.
Can an ESP32 join 5 GHz Wi-Fi?
None of the four here can; they are 2.4 GHz only. If your router gives the bands separate names, join the 2.4 GHz one.
Will code written for the original ESP32 run on a C3?
Most Arduino or ESP-IDF code will, but you must change pin numbers to match the new board, and anything using chip-specific features such as Bluetooth Classic, the DAC or touch needs rewriting or a different chip.
Circuits and code were tested on sample boards. Boards differ in pin layout, so check your board's pinout before you power anything.