ESP Bin Patch

Patch secrets and values in an already-built .bin or .bin.espbinpatch, repair ESP-IDF checksums, then install over USB with ESP Web Tools. Runs entirely in the browser — the firmware is not uploaded anywhere.

1. Firmware file

Extensions .bin and .bin.espbinpatch are interchangeable. The extension suffix is only used to clarify that the image needs some replacements before being ussable. Use a merged factory image for a first-time install, or an app-only / OTA image to keep Wi-Fi and other saved settings. This tool will try to assist you and only present valid options after selecting a file.

2. Replacements

auto tries UTF-8 text vs decoded Base64 (Home Assistant API key). For that key, Old may be the 32-byte placeholder or its Base64; New is the Home Assistant Base64 value. utf-8 is literal text (SSID). hex and base64 decode first. Replacement must be the same length or shorter.

3. Patch firmware

Chip family must match the board you will flash. Detected from the image header; override if needed.

Checks the patcher with fake firmware in this browser. Does not use your file or USB.

4. Saved settings

The chip stores two kinds of things: the program (this file) and saved settings (Wi-Fi password, Home Assistant key, and similar). Those settings live in a separate area. You can update the program without touching that area. Erase everything is required at least once — the first time you flash a blank or new board — so the bootloader is installed. After that, use keep-settings for updates.

Almost always 10000. Change this only if you know your board uses a different layout.

5. Install

Chrome or Edge, over HTTPS (or localhost). Connect the board via USB, then install the patched image.

This browser does not support Web Serial. Open this page in Chrome or Edge.
Web Serial requires HTTPS (GitHub Pages) or localhost.

When Lock placeholders is on, recipients see Old as read-only; mode, pad, and add/remove are hidden. Chip family stays visible and read-only.

Warning: the backup link includes your replacements (Wi-Fi names, API keys, passwords). Treat it like a secret — do not post it in a public README, issue, or chat unless those values are meant to be public.