Web server for Arduino-compatible boards, macOS, Windows, and Linux, over Wi-Fi, Ethernet, Serial, Bluetooth, or LoRa.

A portable HTTP server library for Arduino, with an API inspired by Express.js. Serve a website, app or API right from your device.

HTTP routes, familiar Arduino codeC++
#include <aWOT.h>

App app;

void hello(Request& req, Response& res) {
  res.print("Hello from Arduino!");
}

// Register once in setup().
app.get("/", hello);

// Process a connected client in loop().
app.process(&client);

The complete sketch adds your Wi-Fi or Ethernet connection.

Small board. Familiar building blocks.

Bring the web to your device with routes, streams, and a frontend that runs in the browser.

Straightforward HTTP

Define routes with App, read requests as Arduino Streams, and write responses with familiar Print methods.

Your choice of transport

Use the same handlers with Arduino Client transports, including Wi-Fi and Ethernet, or with a Stream such as Serial.

Memory you can configure

Choose request and output buffers for your board. Start with ESP32 Wi-Fi or Uno Ethernet, then tune the settings.

More than a request

Compose middleware, serve a browser interface, and add live updates with WebSockets or server-sent events.

From the first route to a full web app

Pick a starting point and keep building.

Already using aWOT 3?

Bring your routes and middleware to the current API.

Read the migration guide