ESP32 Variants Compared: How Do You Choose the Right One?
Last updated 28 June 2026 · 10 min read
Direct Answer
Espressif's ESP32 family covers six main variants with different CPU architectures, wireless capabilities, and peripheral sets. The original ESP32 has dual-core Xtensa LX6 with Wi-Fi and Bluetooth Classic + BLE — best for applications that need both classic Bluetooth and Wi-Fi. The ESP32-S3 adds AI vector instructions and USB OTG — best for edge ML and USB peripherals. The ESP32-C3 is a lower-cost RISC-V with Wi-Fi + BLE 5.0 — best for simple connected sensors. The ESP32-C6 adds Wi-Fi 6 and IEEE 802.15.4 (Thread/Zigbee) — best for Matter-compatible smart home devices. The ESP32-H2 has 802.15.4 and BLE but no Wi-Fi — best for Thread or Zigbee devices that border-router to Wi-Fi externally. The ESP32-S2 has Wi-Fi and USB OTG but no Bluetooth — best for USB device applications with no BLE requirement.
Detailed Explanation
The Espressif ESP32 family has expanded from a single chip to a range of SoCs with different CPUs, wireless capabilities, and peripheral sets. Choosing the wrong variant early in a project can require a costly respin or limit what the product can do in the field.
This page compares all major current ESP32 variants — their architectures, wireless stacks, peripherals, and the specific use cases each is optimised for. All specifications are from Espressif datasheets (linked above); verify against the specific revision applicable to your design.
Comparison Table
| Variant | CPU | Speed | SRAM | Wi-Fi | Bluetooth | 802.15.4 | USB | Key differentiator |
|---|---|---|---|---|---|---|---|---|
| ESP32 | Xtensa LX6 ×2 | 240 MHz | 520 KB | b/g/n | Classic + BLE 4.2 | No | No | Classic Bluetooth; max peripherals |
| ESP32-S3 | Xtensa LX7 ×2 | 240 MHz | 512 KB | b/g/n | BLE 5.0 | OTG | Yes | AI vector instructions; USB OTG |
| ESP32-S2 | Xtensa LX7 ×1 | 240 MHz | 320 KB | b/g/n | None | OTG | Yes | Wi-Fi only; high GPIO count; USB |
| ESP32-C3 | RISC-V ×1 | 160 MHz | 400 KB | b/g/n | BLE 5.0 | Serial/JTAG only | Partial | Lowest cost; RISC-V; small package |
| ESP32-C6 | RISC-V ×1 HP + LP | 160 MHz | 512 KB | 802.11ax (Wi-Fi 6) | BLE 5.0 | Serial/JTAG only | No | Wi-Fi 6; Thread/Zigbee; Matter |
| ESP32-H2 | RISC-V ×1 | 96 MHz | 320 KB | None | BLE 5.3 | Serial/JTAG only | No | Thread/Zigbee only; no Wi-Fi |
ESP32 (Original / Classic)
The original ESP32 remains the right choice when Bluetooth Classic is needed — the S3, C3, C6, and C6 variants dropped Classic Bluetooth in favour of BLE 5.0 only. Bluetooth Classic is required for A2DP audio streaming, SPP serial profiles, and pairing with older Bluetooth devices that predate BLE.
Other reasons to choose the classic ESP32:
- Legacy software compatibility: the largest body of example code, community libraries, and commercial firmware targets the ESP32. Porting to another variant requires validating the codebase.
- DAC output: the ESP32 has two 8-bit DAC channels (GPIO25, GPIO26). No other current ESP32 variant includes a hardware DAC. For audio output or simple analog waveform generation without an external DAC chip, only the ESP32 provides this.
- Capacitive touch sensing: 10 capacitive touch-capable GPIO pins (vs none on the RISC-V variants).
- Hall sensor: the ESP32 includes a built-in hall effect sensor (internal, connected to ADC). A niche feature, but unique to this variant.
The original ESP32 is available in WROOM-32 (with 4 MB flash, 2.4 GHz PCB trace antenna) and WROVER-B (with 4 MB flash + 8 MB PSRAM) modules. Both carry ACMA certification for Australia.
Avoid the original ESP32 when: BLE 5.0 long-range, extended advertising, or higher-throughput BLE is required (BLE 4.2 on ESP32 lacks these); for new designs without a Bluetooth Classic requirement, the S3 or C3 offers better performance and lower power.
ESP32-S3
The S3 is the best choice for:
- Edge ML: the S3 adds PIE vector instructions optimised for neural network inference. When combined with the ESP-NN library, common TinyML workloads run significantly faster on the S3 than on the ESP32 at the same clock frequency.
- USB device or host: the S3 has a full-speed USB OTG controller, enabling USB HID, CDC, MSC, and vendor-specific USB device implementations. The ESP32 has no USB OTG.
- High GPIO count: 45 usable GPIO pins — more than any other ESP32 variant. Critical for designs with many SPI devices, parallel interfaces, or keyboard matrices.
- Camera and display applications: the S3 has a dedicated LCD interface (parallel RGB) and camera interface (DVP), plus support for external PSRAM up to 8 MB (or 16 MB with Octal PSRAM). Combined with the higher GPIO count and USB, the S3 is the standard choice for ESP32-based display products.
The S3 dropped Bluetooth Classic (BLE 5.0 only) and the hall sensor/DAC of the original ESP32.
Module options: ESP32-S3-WROOM-1 (PCB trace antenna or IPEX connector), ESP32-S3-MINI-1 (compact footprint).
ESP32-S2
The S2 is a single-core variant with no Bluetooth at all — Wi-Fi only. Its niche:
- USB HID or USB host without BLE: the S2 was the first ESP32 variant with USB OTG. If BLE is not needed and Wi-Fi + USB are sufficient, the S2 saves cost vs the S3.
- Applications requiring more GPIO with Wi-Fi only: 43 GPIO (vs 34 on ESP32), all with a single-core Xtensa LX7.
- Temperature sensor: the S2 has an on-chip temperature sensor absent from the ESP32. It also has a built-in USB Serial/JTAG controller shared with the S3.
The S2 has limited module availability compared to the ESP32 and S3, and the lack of Bluetooth is a significant limitation for modern IoT products that often require BLE for provisioning or device control.
ESP32-C3
The C3 is Espressif's cost-optimised RISC-V variant with Wi-Fi + BLE 5.0. It is the most widely used variant for simple connected sensor products:
- Lowest bill of materials cost among ESP32 variants with both Wi-Fi and BLE.
- Compact package: available in QFN-32 (5×5 mm) and modules as small as 13.2×12.5 mm (ESP32-C3-MINI-1).
- RISC-V core: the 160 MHz RISC-V RV32IMC core is smaller and more power-efficient than the Xtensa LX6. For applications that don't need heavy compute, the power difference vs the dual-core ESP32 is meaningful at the battery level.
- USB Serial/JTAG: the C3 integrates a USB Serial/JTAG controller, enabling UART-over-USB (no USB-to-UART chip required) and JTAG debugging over USB.
Limitations: 22 GPIO only, single core, no DAC, no capacitive touch, no AI acceleration, BLE 4.2 advertising sets only (BLE 5.0 extended advertising requires firmware support that varies by ESP-IDF version).
ESP32-C6
The C6 is Espressif's Matter-optimised variant and the right choice for:
- Matter over Thread or Wi-Fi: the C6 integrates the three radios needed for Matter products — Wi-Fi (802.11ax), BLE 5.0 (for Matter commissioning), and IEEE 802.15.4 (for Thread). It is the only ESP32 variant supporting all three simultaneously.
- Wi-Fi 6 (802.11ax): the C6 is the only ESP32 variant with Wi-Fi 6, providing better performance in dense Wi-Fi environments (apartment blocks, offices) and improved power management via TWT (Target Wake Time).
- Zigbee coordinator or router: the 802.15.4 radio supports the Espressif Zigbee SDK for Zigbee 3.0 devices.
- Low-power design: the C6 has a dedicated LP (Low Power) RISC-V core at 20 MHz for ultra-low-power tasks while the main HP core is sleeping, similar to the ULP co-processor in earlier variants but more capable.
Module: ESP32-C6-WROOM-1.
ESP32-H2
The H2 is for applications that need Thread or Zigbee mesh networking and do not need Wi-Fi at the device level — the network-to-IP border routing is handled by a separate gateway device:
- Thread-only or Zigbee-only end devices: smart bulbs, sensors, switches in Zigbee or Thread mesh networks.
- Matter over Thread end devices paired with a Matter hub or border router (which provides the Wi-Fi/Ethernet backbone).
- BLE 5.3: the H2 includes BLE for Matter commissioning or direct BLE connectivity.
At 96 MHz, the H2 has the lowest clock speed in the family and 320 KB SRAM. It is not suitable for compute-intensive applications. No Wi-Fi means it cannot operate standalone as a connected device — it requires an external border router.
Module Selection
For most designs, use a pre-certified module rather than the bare SoC:
- PCB trace antenna (e.g. WROOM-32, S3-WROOM-1, C3-MINI-1): antenna is integrated into the module; PCB must maintain the antenna keepout zone specified in the module datasheet. Best for products where the antenna orientation is controlled.
- External antenna connector (e.g. WROOM-32E with IPEX): connects to an external antenna via a U.FL/IPEX connector. Best for products in enclosures that would attenuate the PCB trace antenna.
- WROVER: the original ESP32 WROVER adds 8 MB PSRAM over the WROOM, enabling larger data buffers (audio processing, image capture) without requiring external PSRAM chips.
Pre-certified modules carry Espressif's ACMA type approval for Australia — the host PCB does not require additional RF certification for the wireless functions if the module reference design layout is followed. The module's certification covers only its intentional radio transmissions; the host board's non-intentional emissions (MCU clocks, switching power supply, digital buses) still require CISPR 32 testing before RCM marking — see what a pre-certified radio module's ACMA certification covers and what the host board must still address. Using the bare SoC with a custom antenna requires full RCM (Regulatory Compliance Mark) certification of the radio.
For product design involving ESP32 variant selection, antenna layout, and firmware architecture, Zeus Design's embedded team regularly advises on and implements ESP32-based IoT products from prototype to production.
Design Considerations
- Compiler flags differ between Xtensa and RISC-V. ESP-IDF handles this via the target configuration (
idf.py set-target esp32c3), but third-party libraries with architecture-specific assembly code (e.g. crypto accelerator libraries, some FFT libraries) may not compile on RISC-V without modification. - Module availability and longevity vary by variant. The original ESP32 WROOM-32 has the longest track record and broadest availability. Newer variants (C6, H2) may have shorter module lead times or more volatile supply chains. For production designs, verify the module's long-term availability (LTA) status with the module distributor.
- PSRAM considerations. The ESP32, S3, and S2 support external PSRAM (Pseudo-SRAM) for larger heap allocation. The RISC-V variants (C3, C6, H2) generally do not support PSRAM in current modules. If the firmware needs more than ~300 KB of heap, choose a variant that supports external PSRAM.
Common Mistakes
- Choosing the cheapest variant without checking GPIO count. The C3 has 22 GPIO — if the design needs 25+ GPIO for its peripheral set, the C3 requires a GPIO expander or a different variant. Count GPIO requirements early, including any used for strapping pins (which must be tied to specific levels at boot) that reduce usable count. On Wi-Fi-capable variants, also audit ADC channel allocation — ADC2 channels conflict with the Wi-Fi radio and cannot be used for sensor readings while Wi-Fi is active. See GPIO, ADC, and timers on the ESP32 for the full peripheral constraint breakdown and ESP-IDF v5.x examples.
- Assuming Wi-Fi and 802.15.4 can run simultaneously on the C6. The C6 has one 802.15.4 radio. Thread and Zigbee cannot run simultaneously; only one protocol at a time is supported in the current ESP-IDF. For concurrent multi-protocol operation (Zigbee + BLE), external coordinator architectures or future SDK support is required — check the Espressif SDK release notes for the target production date.
- Using the ESP32 for a new BLE-only product. The classic ESP32 with BLE 4.2 is not the right choice for a new design that only uses BLE. The C3 or C6 provides BLE 5.0 at lower cost and power.
- Ignoring the strapping pin restrictions. Both Xtensa and RISC-V ESP32 variants have GPIO pins that control boot mode and flash voltage at reset — these must be tied to specific levels or left unconnected (which implies a pull in the silicon). Connecting peripherals to strapping pins without accounting for boot-time voltage levels can prevent the chip from booting correctly.
Frequently Asked Questions
- Is the ESP32-C3 a drop-in replacement for the original ESP32?
- Not quite. The C3 uses a different CPU architecture (RISC-V rather than Xtensa LX6), which affects compiler flags and any assembly code. The C3 has fewer GPIO pins (22 vs 34 on the ESP32), no Bluetooth Classic (BLE 5.0 only), no DAC, no hall sensor, and no capacitive touch peripheral. The C3 does have Wi-Fi + BLE at a lower cost and with lower typical active current. For new designs, the C3 is often the right choice for BLE + Wi-Fi sensor nodes; for existing ESP32 designs, porting requires reviewing GPIO mapping and removing any Bluetooth Classic or Xtensa-specific code.
- Can the ESP32-C6 replace a separate Zigbee module?
- Yes, for many applications. The C6 integrates an IEEE 802.15.4 radio alongside Wi-Fi 6 and BLE, enabling Zigbee or Thread mesh networking without a separate radio module. The ESP-Zigbee SDK provides a full Zigbee stack (coordinator, router, end device) for the C6. For Thread, the esp_openthread component implements OpenThread. The limitation is that the single 802.15.4 radio cannot simultaneously run Zigbee and Thread — only one protocol at a time in the current SDK. For Matter products, the C6 is Espressif's recommended chip (Matter over Thread or Matter over Wi-Fi).
- Does the ESP32-S3 run ML models faster than the ESP32?
- Yes, for vector operations commonly used in neural network inference. The S3 adds 'PIE' (Processor Instruction Extension) — a set of SIMD-style instructions optimised for fixed-point and floating-point vector multiply-accumulate operations. The ESP-NN library from Espressif is optimised for these instructions. For typical TinyML workloads (keyword detection, image classification on small models), the S3 is roughly 5–10× faster on inference tasks than the ESP32 for the same clock speed. The S3's 45 GPIO (vs 34 on ESP32) and external PSRAM support also make it better suited for camera or audio applications that feed ML models.
References
Related Questions
How Do You Choose the Right Microcontroller for Your Project?
Choosing the right MCU comes down to peripherals, memory, power, wireless needs, and toolchain. This guide walks through every factor with concrete examples.
How Do You Manage Power and Use Deep Sleep on the ESP32?
ESP32 power modes: active, modem sleep, light sleep, deep sleep; RTC timer, GPIO, and ULP wake sources; measured currents and battery runtime estimation.
ESP-IDF vs Arduino for ESP32: Which Framework Should You Use?
ESP-IDF gives full FreeRTOS control and is production-grade; Arduino is faster to start. Covers the differences, limitations of each, and when to switch.
How Do You Set Up Wi-Fi and Provision an ESP32 Device?
Covers ESP32 Wi-Fi station and AP mode in ESP-IDF, event-loop connection handling, SoftAP provisioning, and the ESP32 HTTP server for local API endpoints.
How Do You Use GPIO, ADC, and Timers on the ESP32?
ESP32 GPIO, ADC, and timers in ESP-IDF: pin configuration, interrupts, ADC calibration and attenuation, and periodic timers with esp_timer and GPTimer.
Bluetooth vs Wi-Fi vs LoRa vs Zigbee: Which Protocol Should You Use?
Comparing BLE, Wi-Fi, LoRa, and Zigbee? This guide covers range, data rate, power, and topology to help you pick the right wireless protocol for your product.
Related Forum Discussions
ESP32 keeps dropping Wi-Fi after 20–30 minutes in deployed location — reconnect loop doesn't always recover
Having a frustrating one. Built an ESP32 environmental monitor (SHT40 temp/humidity, reports to an MQTT broker every 5 minutes). Works flawl
Is a double-sided PCB enough for a simple ESP32 sensor board, or should I go multi-layer?
Building a little battery-powered sensor board around an ESP32 module (the kind with the PCB antenna already built into the module, not desi