Firmshare

Flash an ESP32 from a link

Send someone a link. They plug the board in, open the link in Chrome or Edge and press Flash. No account, no Arduino IDE, no toolchain.

Firmware links end in /f/ followed by a long ID.

 

What happens when you press Flash

Example · Update on an ESP32-C3
  1. bootloader0x0, 32 KB, written
  2. table0x8000, 4 KB, written
  3. nvs0x9000, 20 KB, kept
  4. otadata0xe000, 8 KB, written
  5. app00x10000, 1.25 MB, written
  6. app10x150000, 1.25 MB, not touched
  7. spiffs0x290000, 1.38 MB, not touched
  8. coredump0x3f0000, 64 KB, not touched
WrittenKeptNot touched4 MB flash · widths not to scale
  1. Connect

    Plug the board in and pick its port. The browser asks once.

  2. Check the chip

    The page reads the chip and stops if the firmware was built for a different one.

  3. Write and verify

    Each part goes to its address, then the board reads it back and the hashes are compared.

  4. Restart

    The board resets into the new firmware. Watch the boot log if you want to be sure.

Saved settings live in the NVS partition. Update leaves it alone, so Wi-Fi details and calibration survive. Clean install erases it.

Publishing your own firmware

Publishing is for members, and membership is by invite. Every version you publish is kept as it was, with its SHA-256 and source, and your link always points to the newest one.

Drop the build folder
Drag in Arduino's exported binaries, an ESP-IDF build/ folder or a ZIP. The page reads the chip, version and offsets from the files themselves.
Push a tag
Link a GitHub repo and add the release workflow. Then:
git tag v1.2.0 && git push --tags
Publish from CI
With an API token from your dashboard:
npx firmshare publish ./build --version v1.2.0