Web flasher

Flash your ESP32 from your browser

From idea to flash in the same tab. Describe what you want to build, and Schematik writes the code and shows you the wiring. Plug in your board and press Deploy.

Works in Chrome and Edge on a computer. Deploy flashes 333 ESP boards over USB, plus the Arduino Uno and new-bootloader Nano. A Raspberry Pi Pico gets a file you copy across.

See the steps
A LilyGo T-Display board on a green cutting mat with a white USB-C cable plugged in. Its small screen reads Waiting for gong, Strike the gong to test it.
A LilyGo T-Display plugged in over USB, running the firmware from our webhook gong build.

Describe it, wire it, flash it

A chat message that reads: A desk buddy on an ESP32 with a blinking face on a small OLED screen.
Describe itSay what you want to build, in your own words.
Four colored wires: VCC to 3V3 in red, GND to GND in gray, SDA to GPIO21 in blue and SCL to GPIO22 in green.
Check the wiringSchematik shows you which pin goes where. Here, an OLED screen's 4 pins go to an ESP32.
The Deploy firmware panel. It reads: Connect your board via USB, then hit deploy. Use Chrome or Edge for Web Serial support. Below that is an orange Deploy button.
Press DeployPlug your board in with a USB cable, then press the button.

A real flash from Chrome

Here's the end of a Deploy log from a Waveshare ESP32-C6, flashed from Chrome on a Mac on October 15, 2026. The final firmware image, 1.26 MB, went across in 4.2 seconds. Then the board restarted and said hello over serial.

The project is Tiny ESP DeskBuddy.

Writing at 0x13d837... (100%)
[flashing] 95% — Flashing file 4/4: 100%
Wrote 1255600 bytes (761599 compressed) at 0x10000 in 4.199 seconds.
Leaving...
[verifying] 95% — Verifying and resetting...
Custom resetting using sequence D0|R1|W100|R0
[done] 100% — Flash complete! Board is resetting...
Connected (115200 baud)
ESP32-C6 DeskBuddy starting
Touch controller initialised

How to flash an ESP32 from your browser

  1. Open your project in Chrome or Edge on a computer. To start one, describe what you want or pick a template.
  2. Plug your board in with a USB cable that carries data. Some cables only charge.
  3. Press Deploy. Your browser asks which serial port to connect to. Pick your board and press Connect.
  4. Schematik compiles your firmware on its servers, then your browser writes it to the board over USB. The Deploy log shows the progress.
  5. The board restarts and runs your project. What it prints over serial shows up in the same log.
The Deploy bar: a help button, a download button, then Connect and Deploy.

What you need

  • A computer with Chrome or Edge
  • A USB cable that carries data
  • Your board
  • A Schematik account
  • For boards with a CH340 or CP210x chip (it turns USB into serial), maybe a driver. Check our USB drivers guide.

Boards you can flash

Deploy picks the method from your board, so you press the same button on all of them.

  • ESP boards333 boards · Web Serial

    ESP32 154ESP32-S3 77ESP8266 45ESP32-S2 27ESP32-C3 19ESP32-C6 6ESP32-P4 5

  • RP2040 and RP235029 boards · UF2 file

    Raspberry Pi Pico, Pico W, Pico 2 and more. You copy the file to the board yourself.

  • Arduino Uno and NanoWeb Serial

    The Uno and the ATmega328P Nano with the new bootloader (the small program that takes new firmware). Press Deploy and pick the port, and the board resets itself.

  • Arduino Uno R4WebUSB or Web Serial

    The R4 Minima and Nano R4 use USB DFU, a USB update mode. The R4 WiFi uses Web Serial.

  • Teensy 4WebHID

    Teensy 4.0, 4.1 and MicroMod flash after you press the Program button. Older Teensy boards get a file to flash yourself.

  • Nordic development kitsWebUSB

    The nRF9151, nRF7002 and nRF54L15 DKs flash through their onboard J-Link debug probe. Windows and Linux need a one-time setup.

  • STM32Web Serial

    Deploy talks to the chip's bootloader over its serial pins, so connect a USB-to-serial adapter to those pins unless your board's USB port already goes there. Move BOOT0 to 1, press RESET and press Deploy. Then move BOOT0 back to 0 and press RESET.

  • Boards with flashing problemsFirmware file

    A Nano with the old bootloader won't connect, because it listens at a slower speed than Deploy uses. Browser flashing can also fail today on the Arduino Mega 2560, Leonardo, Micro, Pro Micro and MKR boards and on Adafruit nRF52 boards. Download the compiled firmware and flash it with the board vendor's tool.

When your board needs a button press

Many boards reset themselves when you press Deploy. When one doesn't, the help button in the Deploy panel shows the steps for your board.

How to put an ESP32 in download mode

Download mode is how an ESP32 accepts new firmware. Try Deploy first. If the log stops at Connecting, hold BOOT, press and release RESET, keep holding BOOT, press Deploy and let go once flashing starts. BOOT can be labeled IO0, FLASH or DOWNLOAD, and RESET can be EN or RST.

The ESP32-CAM has no BOOT button. Connect a jumper wire from IO0 to GND, press RST and press Deploy. Remove the jumper and press RST again when it finishes.

Steps from the help dialog. Hold BOOT or DOWNLOAD while connecting: find the BOOT button, hold it down, press and release RESET, then keep holding BOOT, click Deploy and release once flashing starts.
The same steps in the Deploy panel's help button.

Native USB boards: ESP32-S3, ESP32-C3 and ESP32-C6

Many of these boards talk to USB directly, with no separate bridge chip. If the port disappears or flashing can't connect, hold BOOT, press and release RESET, then release BOOT. Press Deploy and pick the port again, since the board can come back under a new one.

Press RESET afterwards if the board stays in download mode.

How to upload code to an Arduino Uno

Press Deploy, pick the port and the Uno resets itself to take your code. Some clone boards miss that reset. If the deploy can't sync, press Deploy again and press and release RESET when the progress says Syncing or Signing on.

How to flash a Raspberry Pi Pico

A Pico takes firmware as a file copied to a USB drive, so Deploy downloads a firmware.uf2 file for you. Unplug USB, hold BOOTSEL while you plug it back in and release it when RPI-RP2 appears. Copy the file to that drive, and the Pico restarts and runs your code.

Which browsers can flash boards

Chrome and Edge on a computer
Deploy flashes your board from here. They have Web Serial and WebUSB, the browser features that let a page talk to a USB device once you allow it.
Safari
Safari has no Web Serial or WebUSB. On a Web Serial board, Deploy offers the firmware file or the free desktop app for Mac instead. WebUSB boards need Chrome or Edge, and a UF2 board downloads its file as usual.
Firefox
Firefox added Web Serial in version 151 and has no WebUSB. Schematik's flashing steps are written for Chrome and Edge, so use one of those.
Phones and tablets
Open your project on a computer to Deploy. iPhones and iPads have no Web Serial, and Deploy is made for a computer with a USB port.
Get the desktop app for Mac

Questions

A web page that writes firmware to an ESP32 over USB, in place of a desktop flashing tool. Schematik's also writes the project: you describe what you want, get the code and wiring, then flash it from the same tab.

Try it on your board