Compiling and flashing from your browser
There are two buttons that matter here, and it's worth knowing which one does what.
- Verify compiles your sketch and stops. It doesn't touch your board and doesn't need one plugged in. All it needs is an internet connection.
- Upload compiles first, then writes the result onto your board over USB. If the compile fails, nothing is sent to the board.
Both go grey while a compile, upload or translation is already running, so you can't stack them up by accident.
Compiling happens in the cloud, flashing happens in your browser
When you press Verify, your sketch is sent to our compile service, which runs the real arduino-cli and sends back the compiled firmware. Nothing is installed on your machine and nothing is compiled on it.
Flashing is the other way around. That happens entirely inside your browser, talking to your board's bootloader over USB using the Web Serial API. There's no upload agent, no helper app, and no Arduino IDE involved.
The one thing your operating system still needs is a USB-serial driver for clone boards, the CH340 and friends. We can see the port once your machine does, but we can't install a driver for you.
Which browsers can flash
Web Serial is a Chrome, Edge and Opera feature. In Firefox or Safari you can still write English, translate it, and press Verify, but Upload stays disabled and a yellow banner across the top explains why.
The page also has to be served over https:// or http://localhost. On our site that's already true, so this only bites people running their own copy from a file on disk.
Pairing your board
Before your first upload, click Pair board… and pick your Arduino from the list. That list comes from your browser, not from us: we can't see any of your USB ports until you choose one in that dialog. It's a privacy feature, and it means the choice is always yours.
Once paired, the board is remembered. Come back tomorrow and it reconnects on its own. There's a small ✕ next to the button if you want it to forget.
The pill next to the button names what it found from the USB chip, so you'll see something like Arduino, Arduino-compatible, or just "serial device". That's a guess from the USB vendor ID and it can't tell a Uno from a Nano, so you still pick the model yourself in the board dropdown.
Which boards can be flashed
Nine boards are in the dropdown. Four of them can be flashed from the browser, and the rest compile here but need the desktop Arduino IDE to actually upload.
| Board | Compiles | Flashes from the browser |
|---|---|---|
| Arduino Uno | Yes | Yes |
| Arduino Nano (new bootloader) | Yes | Yes |
| Arduino Nano (old bootloader / clone) | Yes | Yes |
| Arduino Pro / Pro Mini (5V, 16 MHz) | Yes | Yes |
| Arduino Mega 2560 | Yes | No |
| Arduino Leonardo | Yes | No |
| Arduino Micro | Yes | No |
| Little Bird Shakey | Yes | No |
| Little Bird EagLED | Yes | No |
The reason is the bootloader protocol, not favouritism. Our in-browser flasher speaks STK500v1, which is what the ATmega328P boards use. The 32u4 boards (Leonardo, Micro, Shakey and EagLED) speak avr109, and the Mega speaks a third one again. Those aren't written yet.
For one of those boards, press Verify, then click the .hex button to download the compiled firmware and upload it with the desktop Arduino IDE or avrdude. You can also just download the .ino and build it there.
Picking a verify-only board pops a warning straight away so you find out now rather than after you've wired everything up.
What changing the board actually changes
Four things: what the cloud compiler builds for, the speed used to talk to the bootloader, the flash page size, and the chip signature the flasher expects to find. It also throws away the compiled firmware you already had, since that one was built for a different chip, so press Verify again.
Your choice is remembered in this browser for next time.
A note on Nano clones
If an upload to a cheap Nano won't sync, switch the dropdown to Arduino Nano (old bootloader / clone) and try again. Same chip, slower bootloader speed (57600 instead of 115200), and it's the single most common fix we see.