Copy the red text out of your serial monitor, drop it in, and see what it actually means. No signup, no upload — the whole thing runs in your browser.
① Who are you? (optional — it tailors the advice)
② Or just tap your symptom — it loads a matching log
③ Paste your log
🔒 Nothing is uploaded — everything runs locally in your browser, so logs with your SSID and passwords stay on your machine.
Tick the steps you already tried — they show up as [x] in the post. That alone gets you far better answers.
Nobody clicks links in group chats — they look at pictures. This one carries the URL, so anyone who sees it knows where to go.
Take it offline
Download a single HTML file that works with no internet at all: ESP32 Error Decoder (offline). Useful in a lab, on a factory floor, or anywhere the network is locked down — and you can just send the file to a colleague.
Why this exists
ESP32 error messages are famously unhelpful. "Timed out waiting for packet header" does not mention the BOOT button. "LoadProhibited" does not mention NULL pointers. "Brownout detector was triggered" does not mention your USB cable. The official docs are accurate but scattered across dozens of pages, and most of what you find in search results is a forum thread from five years ago with no conclusion.
So we turned the whole mess into a decoder: paste the log, get the answer. Causes are ranked by how often they actually turn out to be the answer, and every entry links back to the official Espressif documentation.
Full error index
All 34 patterns currently covered. Probabilities shown by the tool are ranked from field experience, not from measured statistics.
⬇ Flashing
Cannot connect: esptool waits for a reply that never comes
The serial port exists, but the chip is not in download mode at that moment. This is the…
Wrong boot mode detected
The strapping pins were sampled at a level combination that is not download mode — GPIO0…
Cannot open the serial port
This fails at the OS level, before the chip is involved. On Windows it is usually driver…
Connected but writing to flash fails
Handshake succeeded but the actual write failed. Flash writing draws peak current — this…
Flash verify failed (MD5 mismatch)
After writing, the read-back does not match. Either the write was disturbed, or the flas…
Firmware does not fit in flash
The binary is bigger than the app partition. Very common with OTA enabled — two app slot…
⚡ Power & reset
Brownout detector was triggered
The chip saw its own supply drop below the threshold and reset itself. Wi-Fi transmit bu…
Watchdog reset (rst:0x10 / 0x7 / 0x8)
The chip decided the firmware was stuck and rebooted. 0x10 means it hung during boot (bo…
Garbled serial output — usually just the wrong baud rate
The ESP32 bootloader prints its banner at 74880 baud. If your monitor is set to 9600 or …
💥 Runtime crash
LoadProhibited — reading memory it should not
The code read from an invalid address — usually a NULL pointer, a wild pointer, or an ob…
StoreProhibited — writing memory it should not
A write to an invalid address — a read-only region, a NULL struct member, or past the en…
IllegalInstruction — the CPU executed something that is not code
The program counter jumped somewhere invalid. Usually a corrupted function pointer, a sm…
InstrFetchProhibited — cannot fetch an instruction
The CPU tried to execute code from an address outside valid instruction memory. If PC is…
Stack overflow — task stack too small
The task used more stack than allocated and stomped on the canary. Compared with a myste…
Task watchdog got triggered
The idle task has not run for too long, meaning some task is hogging the CPU. The log us…
abort() / assert failed
Not a hardware fault — the code or a library called abort deliberately. The assert line …
Cache disabled but cached memory region accessed
During flash erase/write the cache is temporarily disabled, so calling a function that l…
📶 Wi-Fi & network
Wi-Fi network not found or refused
ESP32 is 2.4 GHz only — no 5 GHz support. If your router uses band steering or you share…
Wi-Fi authentication failed
The password is right but the handshake fails. Common with WPA2/WPA3 mixed mode, incompa…
MQTT connection failing or looping
The network works but the MQTT handshake fails. Read the return code: -2 means timeout (…
TLS / HTTPS handshake failed
HTTPS cannot be established. The most common cause is a wrong device clock making the ce…
📷 Camera
Camera probe failed
The ESP32 could not handshake with the camera over SCCB. The number one cause is always …
Frame buffer failure or corrupted image
The frame buffer could not be allocated, or DMA could not keep up so data is misaligned.…
🧠 Memory & PSRAM
Out of memory
The heap ran out. Classic ESP32 has roughly 300 KB of usable DRAM, and Wi-Fi + TLS + cam…
PSRAM initialisation failed
The chip cannot find external PSRAM. Either the module has none, or the setting is on bu…
DRAM region overflowed
This fails at link time: your globals and statics together exceed usable DRAM. Failing a…
🔄 OTA update
OTA update failed or rolled back
The new firmware was written but validation failed, or the app never confirmed it booted…
🔌 Hardware & I/O
ADC2 conflict with Wi-Fi
On classic ESP32 the ADC2 channels are used by the Wi-Fi driver, so readings are unrelia…
I²C communication failure
The host sent an address but no device pulled SDA low. Usually a wrong address, missing …
Strapping pin at the wrong level
The strapping pins (GPIO0/2/5/12/15) decide how the chip boots. If external circuitry pu…
Deep sleep will not wake or wakes immediately
Either it never wakes, or it wakes instantly. The first is a misconfigured wake source; …
🛠 Build & toolchain
Header not found — missing library
The compiler cannot find an #include. In Arduino the library is missing; in ESP-IDF the …
API changed — sample code vs newer library
The most common reason copied sample code will not compile. The ESP32 Arduino core chang…
ESP-IDF toolchain not set up
Environment variables or the Python virtualenv are not active, so idf.py / cmake / pytho…