Find the ESP32 boards with a bad antenna.

Flash an ESP32-C3 or ESP32-S3 straight from this page, read what the board really is, and measure how well it hears your access point. No install, nothing leaves your machine.

This browser cannot talk to serial ports. Web Serial needs a Chromium desktop browser such as Chrome, Edge or Opera, over HTTPS. Section 05 runs the full tester on your PC instead.
Disconnected
A board needs the tester firmware once. Press Flash firmware for a board that has never run it, or Connect board for one that already has.

Flash the tester firmware

Version - for ESP32-C3 and ESP32-S3, served from this site. Flashing overwrites whatever program is on the board. Put the board in download mode first if it does not answer: hold BOOT, tap RESET, release BOOT.

Starting

Board

Chip
-
Wi-Fi MAC
-
Firmware
-
Revision
-
Flash
-
Free heap
-
PSRAM
-
CPU
-
TX power
-
SDK
-

Access point scan

How loudly this board hears one access point, averaged over several scans. Run the same scan on a board you trust, in the same spot, and compare.

Mean RSSI
-
Best / worst
-
Seen in
-
Channel
-
Serial log

Nothing is uploaded. The page talks to the board directly from your browser.

02

What it measures

The browser flashes the firmware, reads the board and scans your access point. The local application in section 05 adds the stages that need a second radio or a socket on the PC.

StageWhat it tells youSecond board?
AP scan RSSIHow well the board hears your access pointNo
UDP throughputReal Mbps up and down, the outcome a weak antenna lowersNo
Wi-Fi through the APPacket loss and round-trip time across transmit power stepsNo
ESP-NOW pairDirectional receive and transmit RSSI against a reference boardYes
Environment snapshotConnected BSSID, channel, security, neighbouring AP occupancyNo
Hardware detailsFlash, heap, PSRAM, chip revision, cores, CPU MHz, SDK versionNo
03

How a verdict is reached

Antenna verdicts come from the ESP-NOW comparison, measured in both directions. Packet loss through your access point is recorded and reported, but it describes your network, not the board.

Most trustworthy

Live reference

Plug in a board you trust. The comparison runs in the same spot at the same moment, which cancels out the environment.

For volume

Master baseline

Mark an earlier good run as the baseline. Later single-board tests are scored against that board's scan RSSI and throughput, so you can screen a pile of boards with nothing else on the bench.

04

A real fault

One ESP32-C3 SuperMini in the test set fails every Wi-Fi association at 20 dBm and connects in under two seconds at 17 dBm and below, on two different access points, while its receive path stays healthy at -36 dBm. That is the known mis-tuned antenna matching network on a batch of C3 SuperMini and LOLIN C3 Mini boards.

The tester reports it as a hardware FAIL naming the power it managed to associate at, then finishes the run at that power so the remaining measurements are still usable. It does not die with an unhelpful "could not connect to Wi-Fi".

05

Run locally

The browser flashes a board, reads it and scans an access point. Everything that needs a second radio, a socket on the PC, or a memory of what you measured last week lives in the local application. It serves its own interface at 127.0.0.1:8765.

What you getWhy it needs the PC
Flashing and eraseBuilds and writes the tester firmware over USB, and asks before it erases a board it has not seen before
ESP-NOW pair comparisonDrives two boards at once and sweeps transmit power on both, which is what turns raw RSSI into a verdict
UDP throughputNeeds a real socket at the other end of the link, up and down, which a browser cannot open
Loss and round-trip timeEchoes packets from the PC across every transmit power step
Verdicts with reasonsPASS, WARN or FAIL, each one stating why it landed there instead of leaving you a number to interpret
Master baselineMark one good run, then screen a pile of boards against it with nothing else on the bench
Device historyEvery board is keyed by its Wi-Fi MAC in SQLite, so a board you tested months ago is still the same board, with charts across runs
Batch queueCheck several boards, confirm the erase once, and walk away
Access point lockPins the association to one BSSID and channel and records the neighbourhood, so two boards are compared under the same conditions
Transmit power fallbackA board that only associates below full power is reported as the hardware fault it is, with the power it managed, instead of an unhelpful connection error

Requirements: Windows, PlatformIO, and an ESP32-C3 or ESP32-S3 board on USB.

# 1. get the code
git clone https://github.com/Keralots/ESP32WiFiTester.git
cd ESP32WiFiTester

# 2. set up and start
.\tools\setup.ps1 -Dev
.\tools\start.ps1

The first run builds the firmware and creates the database. Open Settings once and save your Wi-Fi SSID and password: the password goes to Windows Credential Manager and is never written to source, SQLite, logs or exports.

  1. Connect one or more boards by USB, plus a reference board if you have one.
  2. Open Run Test. Every connected board appears in one list, and Identify reads each chip and MAC.
  3. Check the boards to test, pick a reference or an access point lock, choose Quick, Standard or Full.
  4. Progress streams into the run monitor. When the queue finishes, open a run for charts, measurements and the analysis.

Your data lives in data\ and never leaves the machine. Back it up by copying that folder.