Skip to content
Server side minimalistic HTTP protocol implementation for the Arduino platform.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples/HelloHttp FixString support. Less dynamic allocations. Nov 5, 2018
lib FixString support. Less dynamic allocations. Nov 5, 2018
.travis.yml Lib depdency fix 2 Mar 19, 2019
LICENSE Initial commit Jan 27, 2016
library.json Lib depdency fix, version bump Mar 19, 2019


Codacy Badge Build Status Code Climate Test Coverage

Server side minimalistic Object Oriented HTTP protocol implementation for the Arduino platform.

ArduinoHttpServer is a simple HTTP request and reply implementation targeted for the embedded Arduino framework. The implementation parses an HTTP request/reply reading/printing from/to any Stream (either Serial or Wifi/Ethernet).

What you do with the request or what you reply is entirely up to your imagination. Very little implicit behaviour.

Quick start

Reading an HTTP request from some Stream instance

// This example uses the Stream instance Serial, might also be a WifiClient object.
// Reserve 512 bytes for body content storage.
ArduinoHttpServer::StreamHttpRequest<512> httpRequest(Serial);
bool success(httpRequest.readRequest())
if (success) // If no HTTP parsing error or read timeout occurred.
   // See interface api for other methods.
   const char *body( httpRequest.getBody() );
   // Retrieve 4th part (index is zero based) of the resource URL.
   // E.g. state from: "/api/sensors/1/state"
   const String& restFunction( httpRequest.getResource()[3] );

Writing an HTTP reply to some Stream

ArduinoHttpServer::StreamHttpReply httpReply(Serial, "application/json");
httpReply.send("{\"All your base are belong to us!\"}");


Documentation available in the ArduinoHttpServer Github wiki


  • HTTP parser with protocol validation.
  • Puts you in control on how to react on a HTTP request; no implicit behaviour.
  • Customizable memory footprint for caching returned body data.
  • No external dependencies outside of the standard Arduino framework.
  • Object oriented implementation.
You can’t perform that action at this time.