The ESP32 vs ESP8266 question refuses to die, and in 2026 it has a slightly annoying answer: the ESP8266 is still fine for a narrow class of jobs and the wrong choice for almost everything else. I build on both. I run an ESP32-C3 as a real overlay-network node and I still flash the odd ESP8266 because it is already in the parts bin. So this is not a “new chip good, old chip bad” post — it is the which ESP32 to buy guide I wish existed when I started, with the parts that actually change a purchase decision: memory, radios, security, toolchain and how long the thing will keep getting updates.
ESP32 vs ESP8266 in one paragraph
If the device reads a sensor and pushes a number over Wi-Fi, and you do not care about BLE, TLS-heavy workloads or future firmware, an ESP8266 is still cheap and adequate. If the device has to hold a long-lived connection, do TLS, sleep on a battery, speak BLE, or be updated over the air for years, buy an ESP32 — and for most new designs that means an ESP32-C3 (single-core RISC-V) or an ESP32-S3 (dual-core Xtensa, USB, more RAM). Everything below is the reasoning behind that one paragraph.
The specs that actually matter
Marketing sheets list everything; here are the numbers that decide a project. Treat all of them as tiers, not exact figures — every board vendor trims or stretches them.
| ESP8266 | ESP32 (classic) | ESP32-C3 | ESP32-S3 | |
|---|---|---|---|---|
| CPU | Tensilica L106, 1 core, ~80–160 MHz | Xtensa LX6, 2 cores, 240 MHz | RISC-V, 1 core, 160 MHz | Xtensa LX7, 2 cores, 240 MHz |
| SRAM | ~80 KB (user heap ~50 KB) | 520 KB | 400 KB | 512 KB (+ optional PSRAM) |
| Flash | usually 1–4 MB | 4–8 MB | 4 MB typical | 8 MB+ typical |
| Wi-Fi | 2.4 GHz b/g/n | 2.4 GHz b/g/n | 2.4 GHz b/g/n | 2.4 GHz b/g/n |
| Bluetooth | none | Classic + BLE 4.2 | BLE 5.0 | BLE 5.0 |
| GPIO | ~11 usable | ~34 | ~22 | ~45 |
| USB | external UART bridge | external UART bridge | native USB Serial/JTAG | native USB OTG |
| Security | essentially none | secure boot + flash encryption | secure boot + flash encryption | secure boot + flash encryption |
| Deep sleep | ~20 µA | ~10 µA | ~5 µA | ~10 µA |
| ESP-IDF support | no | yes | yes | yes |
The pattern is simple: the ESP8266 is a Wi-Fi modem with a CPU attached, and everything after it is a small computer with radios.
CPU, RAM and flash: where the ESP8266 runs out
The ESP8266’s ~50 KB of usable heap is the single constraint you will hit first. One TLS handshake can eat most of it; two buffers plus a JSON parser and you are out of memory with a crash that looks like a Wi-Fi bug. The ESP32’s 400–520 KB buys you a real TLS session, an HTTP server and a task or two at the same time without heroic buffer reuse.
Flash matters just as much, and it is where cheap boards quietly fail. A 1 MB ESP8266 cannot fit an OTA image with rollback; you need 2 MB minimum and 4 MB to be comfortable. Once you want OTA plus a filesystem plus a second partition scheme, you have already outgrown the smallest boards regardless of which chip is on them.
The C3 and S3 also give you hardware floating point and a sane FreeRTOS scheduler in ESP-IDF. The classic ESP32’s second core is genuinely useful when one task owns the network and another owns timing-critical I/O; the C3 has one core but a faster instruction set per clock for typical control code, and in practice it is plenty.
Wi-Fi, and the ESP32-C3 RISC-V question
Both families do 2.4 GHz 802.11 b/g/n, and both are fine at it. The differences
are in what sits around the radio. The ESP32 family gives you an event-driven
Wi-Fi stack (esp_wifi + esp_netif) with clean disconnect events, a full lwIP,
and access-point/station/sniffer modes that behave the same across C3, S3 and the
classic part. The ESP8266 gives you the older non-OS or RTOS SDK stack, with the
Arduino core hiding most of it until something goes wrong.
The RISC-V label on the ESP32-C3 spooks people unnecessarily. It is a
single-core 160 MHz core with a modern toolchain; you write the same C, you get
better code density and a cleaner architecture than the aging LX6. What it does
not mean is fewer libraries — ESP-IDF abstracts the target, so esp_wifi,
mbedTLS and the driver APIs look identical whether the core is Xtensa or RISC-V.
The real reason to pick C3 over the classic ESP32 is not the ISA, it is the
newer silicon: native USB, BLE 5, lower deep-sleep current, and a much longer
support runway. If you want to see what that stack looks like end to end, my
ESP-IDF getting-started walkthrough builds a
Wi-Fi station on the C3 in about an hour.
Bluetooth and BLE: the gap that never closes
The ESP8266 has no Bluetooth at all. Full stop. If your product needs to talk to a phone, pair with a BLE sensor, act as a beacon, or run a provisioning flow over BLE, the ESP8266 is not a cheaper option — it is not an option. The classic ESP32 gives you Bluetooth Classic plus BLE 4.2, which is handy for audio-ish legacy work but heavier than most people need. The ESP32-C3 and ESP32-S3 do BLE 5.0 with better range, more advertising capacity and far less memory overhead for a typical GATT server. For BLE-first designs, the C3 is the value pick and the S3 is the one when you also want USB and more RAM.
GPIO and peripherals
The ESP8266’s GPIO situation is the second thing that bites. Several pins have boot-time constraints, one is ADC-only, and the practical usable count is around eleven once you reserve the flash pins and UART. The ESP32 family roughly triples that. The C3’s ~22 pins include proper ADC, multiple UARTs, I2C, SPI, PWM and RMT (great for driving addressable LEDs or IR without bit-banging). The S3 adds even more pins and an LCD/camera peripheral that the others lack. If your design is “one sensor, one pin”, this does not matter; if it is “a display, three sensors and a button”, it decides the chip for you.
Security: why the ESP8266 is a liability in 2026
This is the section that changed the most since the ESP8266 was popular. The ESP8266 has no meaningful secure boot and no hardware-backed flash encryption — anyone with physical access can read your firmware and your stored credentials. The ESP32 family (classic, C3, S3) supports secure boot, flash encryption, hardware AES/SHA/RSA acceleration, HMAC and digital-signature peripherals. On the C3 and S3 those features are mature and documented in ESP-IDF.
If a device ships to a customer, holds an API key, joins your network, or is supposed to be updated remotely, that difference is not a nice-to-have. A field-replaceable credential on a chip with no secure storage is a breach waiting for a screwdriver. For anything internet-facing, choose an ESP32 and turn secure boot on from the first flash — retrofitting it later means re-provisioning every unit.
Power and battery life
All of these chips deep-sleep in the single-digit-to-low-tens of microamps, so on a coin cell the dominant cost is the radio, not the CPU. The C3 is the best of the bunch at roughly 5 µA deep sleep and a fast wake, which is why it shows up in battery sensor designs. The classic ESP32 is close but its BLE and dual cores draw more when awake. The ESP8266 is competitive on paper but its coarser sleep and wake behaviour, plus the memory ceiling, make it a worse choice for anything that must run for months. For mains-powered always-on nodes, power is a rounding error and should not drive the decision.
Toolchain: ESP-IDF, Arduino, PlatformIO
Here is the practical fork in the road, and it maps directly onto the chip choice. ESP-IDF does not support the ESP8266. Espressif’s own SDK targets the ESP32 family only; the ESP8266 lives on its own RTOS SDK or the community Arduino core. That single fact is the strongest argument for the ESP32 in a long-lived product: one SDK, one upgrade path, one set of security patches.
Arduino is still the fastest way to make hardware move, and its ESP32 core is first-class. PlatformIO wraps both Arduino and ESP-IDF behind one config and is the sane way to keep multiple boards in one repo:
; platformio.ini — two targets, one source tree
[env:esp8266]
platform = espressif8266
board = nodemcuv2
framework = arduino
monitor_speed = 115200
[env:esp32c3]
platform = espressif32
board = esp32-c3-devkitm-1
framework = espidf ; or arduino
monitor_speed = 115200
If the device’s job is the network — a long-lived connection, retries, TLS, a custom protocol — use raw ESP-IDF. When the network is the product, you want to see every layer, which is exactly what the ESP32-C3 EasyTier node does on this same stack. And because one codebase often has to cover several chips, compile-time guards are your friend:
/* Same source, three targets: guard board-specific pins at compile time. */
#if CONFIG_IDF_TARGET_ESP32C3
#define LED_GPIO 8
#elif CONFIG_IDF_TARGET_ESP32S3
#define LED_GPIO 48
#else
#define LED_GPIO 2
#endif
/* Confirm what is actually on the board before you trust a datasheet. */
/* shell: idf.py set-target esp32c3 && esptool.py --port /dev/ttyACM0 chip_id */
Price tiers and availability
I will not quote board prices: they move weekly and depend on where you buy, the module, the flash size and the shipping. What is stable is the tiers:
- Bare ESP8266 modules and dev boards sit at the very bottom. Cheapest possible, widest grey-market availability, and the most likely to arrive with a 1 MB flash you cannot do OTA on. Verify the flash size before you buy a bag of them.
- ESP32-C3 boards occupy the next tier up — a small premium over the ESP8266 for a much newer chip with BLE 5, native USB and real security. This is the sweet spot for new work.
- Classic ESP32 devkits are still everywhere and often discounted because they are the previous generation. Fine to buy if you specifically want two cores or Bluetooth Classic.
- ESP32-S3 boards cost more again, and the ones with PSRAM and a display header cost more still. Buy them when you need USB OTG, more GPIO or PSRAM.
A word on availability: the ESP8266’s advantage was always ubiquity, and that has eroded. C3 and S3 modules are now stocked as widely, which removes the last practical reason to design one into something new.
Longevity: what gets updates in 2026 and beyond
Support, not specs, is what makes an ESP8266 a dead end. It has no path into ESP-IDF, so it does not inherit the security fixes, new Wi-Fi stack or tooling that land there. The community Arduino core is maintained, but it is one layer removed from the vendor. The ESP32 family — and especially the C3/S3 — is where Espressif is investing: ESP-IDF releases, certification updates and long-term supply. For a hobby board that is irrelevant. For anything you will still be shipping in three years, it is the whole argument.
Decision table: which ESP32 to buy for your use case
| Your use case | Buy | Why |
|---|---|---|
| One sensor, publish over Wi-Fi, no BLE, fixed firmware | ESP8266 | Cheapest that works; accept the memory ceiling |
| Simple Wi-Fi sensor but you want OTA and TLS | ESP32-C3 | Headroom, security, same price tier |
| BLE device, provisioning, phone pairing | ESP32-C3 / ESP32-S3 | BLE 5, low overhead; S3 if you need USB + RAM |
| Battery-powered node, months of runtime | ESP32-C3 | ~5 µA deep sleep, fast wake |
| Display, camera, USB OTG, PSRAM | ESP32-S3 | Extra pins, LCD/camera peripheral, USB |
| Bluetooth Classic or two cores | ESP32 (classic) | Only family member that still offers both |
| Anything shipping to customers or facing the internet | ESP32-C3 / ESP32-S3 | Secure boot + flash encryption, long support |
Concrete recommendations
If you are buying today and want one answer: an ESP32-C3 dev board is the default for new work. It is the cheapest chip that removes every “I will deal with that later” item — BLE, USB, security, deep sleep and a support path. If your project needs a display, a camera, USB OTG or more RAM, step up to the ESP32-S3. Keep buying the ESP8266 only when a specific design is already proven on it, the workload is genuinely a Wi-Fi sensor, and you can live without BLE, real security and future firmware updates. Buy the classic ESP32 when you specifically want Bluetooth Classic or two cores and do not care that it is the older generation.
Where to go next
Once the board is on your desk, the useful next step is a working toolchain and
a first Wi-Fi connection, which is exactly what my
ESP32-C3 and ESP-IDF walkthrough covers from
app_main to a station-mode join. And if the reason you are buying is to put the
device on your own network, read the
ESP32-C3 EasyTier node to see how far the
networking path goes on a chip this small. The short version of all of this: the
ESP8266 is not a bad chip, it is a finished one — and in 2026 that is the one
thing a new design cannot afford.