The ESP32 is the newest of the two chips and as you would expect it
is the more powerful of the two. There are a few areas that provide the
most obvious differences:
|Max Clock Speed (MHz)
|Number of cores
|SRAM size (kByte)
|Flash Size (MBytes)
 The default speed of the ESP32 is 160MHz unless you decide to program it to 240MHz.
 The default speed of the ESP8622 is 80MHz un
less you decide to program it to 160MHz.
Interestingly the 4MByte Flash size is the same size in both chips.
The is because it is quite hard to fill up that memory with a program -
most of your programs will use only a tiny fraction of that to implement
This is also why you can dedicate some of the Flash memory to a
file system called SPIFFS or FATFS. That allows you to do some fancy stuff
emulating an SD card within the flash memory itself.
So the main difference comes down to speed, and for the ESP32 that is
twice the speed of the ESP8266. Additionally the ESP32 has a dual core
architecture further enhancing performance. The ESP32 also has far more
SRAM than the ESP8266; actually four times the ESP8266 SRAM.
|Bluetooth Low Energy
|Magnetic Hall Sensor
|DAC (8 bit)
|Ultra Low Power Processor (ULP)
[*] - Implemented in software.
 - I2S for high quality stereo audio (can adapt for other serial data uses).
When you create a useful IOT device such as an ESP8266 it will inevitably be used for stand alone battery powered operation. There's a big problem in that when a 32bit processor is operating at 160/80MHz (240/160MHz for the ESP32) then power consumption will be through the roof.
You need that computational power to create the 802.11b/g/n WiFi operation but it is also true that while you need that to communicate to a web page you can design a system that only periodically updates an output. For instance you may want to get a temperature reading only once an hour.
In this instance, you don't need the device powered up and continuously doing WiFi operations.
For both the ESP32 and the ESP8266 you can choose a low power
operating mode - you can periodically wake the processor to transmit
data over WiFi as needed, and this will save a lot of power. However, In
the low power sleep modes you can't do a lot - only react to interrupts
The ESP32 does have a ULP (Ultra Low Power) processor that is an
entirely separate processor which can do simple tasks, even while the
main system is asleep. The big problem with this processor is that it
has a subset language and is very difficult to use. That said, if you
really need ulra low power battery operation then this is the way to do
The ESP32 and ESP8266 processors are powerful options for Arduino projects, offering built-in WiFi connectivity and compatibility with the Arduino IDE. They both use 32-bit core technology with WiFi support but the ESP32 is the newer and more powerful chip, having a higher clock speed of larger SRAM size of 320kBytes, enabling more complex programs and data storage.
Additionally, the ESP32 offers several additional hardware features absent in the ESP8266. These include:
Both microcontrollers provide low power operation options by periodically waking the processor to transmit data over WiFi. However, the ESP32's ULP processor allows the main system to remain asleep while handling simple tasks, providing even greater power efficiency. Note though, that it is extremely hard to use.
When choosing between the ESP32 and ESP8266, consider factors such as additional hardware modules, SRAM size, and budget. The ESP32 offers more capabilities but has a steeper learning curve (although core WiFi operation is the same), while the ESP8266 remains a cost-effective solution with significant functionality. Regardless of the choice, both microcontrollers excel in building IoT systems with WiFi connectivity and the flexibility of the Arduino IDE.
Note: Parts of this page were written using chatgpt
as a research assistant.
Have your say about what you just read! Leave me a comment in the box below.
Don’t see the comments box? Log in to your Facebook account, give Facebook consent, then return to this page and refresh it.