Rust on ESP32, instantly in your browser.
esp32.rs compiles embedded Rust on a remote build farm and flashes it to the board on your desk over Web Serial. No toolchain, no udev rules, no forty-minute setup guide — write no_std firmware, hit Flash, watch the LED blink.
0
Toolchains to install
9.4s
Median build, warm cache
6
ESP32 targets, C3 to S3
4,812
Community firmwares shared
Zero-install toolchain
The full espup stack — rustc, the Xtensa and RISC-V targets, precompiled HAL crates — lives on the build farm. Your browser sends source and gets back a binary. Nothing is ever installed on your machine.
One-click Web Serial flashing
Plug the board in, click Connect, click Flash. esp32.rs speaks the ESP bootloader protocol directly from the browser over Web Serial — 921,600 baud, progress bar and all.
Docker simulation
No board in your bag? Run the same binary in a Dockerized QEMU simulator with virtual GPIO and UART. The serial monitor can’t tell the difference — and neither will your firmware.
Community sharing
Every playground is a URL. Publish it with a board tag and a readme, and anyone can clone it straight into their own editor — dependencies, pin map and all.
no_std, no ceremony
The classic blink, in embedded Rust. This exact file builds on the farm in seconds and flashes to an ESP32-C3 over Web Serial — no account required.
#![no_std] #![no_main] use esp_hal::{delay::Delay, gpio::{Level, Output}, prelude::*}; #[entry] fn main() -> ! { // the whole HAL, precompiled on the build farm let peripherals = esp_hal::init(esp_hal::Config::default()); let mut led = Output::new(peripherals.GPIO8, Level::Low); let delay = Delay::new(); loop { led.toggle(); delay.delay_millis(500); } }
“Forty students, zero installs. We were blinking LEDs eleven minutes into the workshop.”
The toolchain is the browser.
Write no_std Rust, build it on the farm, flash it over Web Serial — all from this tab.