Tiny web servers

Tiny Web servers are Web servers which have been designed to run with very small resource overhead because of hardware, environment, or simply for the challenge of it.

Many of these systems have been created as a mental exercise to determine if a modern webserver could be written to run on limited resources such as those provided in a graphing calculator, an ancient Commodore 64 machine, or in 64kb total of memory. Others have been written as commercial endeavors to create webservers with low overhead for embedded systems (network router configuration pages) or low memory environments.

Embedded servers and vintage hardware servers

  • uIP by Adam Dunkels; uIP is an implementation of the TCP/IP protocol stack intended for small 8-bit and 16-bit microcontrollers. It provides the necessary protocols for Internet communication, with a very small code footprint and RAM requirements - the uIP code size is on the order of a few kilobytes and RAM usage is on the order of a few hundred bytes. uIP has been ported to the Commodore 64 as well as creating Web-enabled Lego smart bricks. 1
  • Barracuda Embedded Web server. A multithreaded HTTP engine based on a plugin architecture. Supported plugins include, CSP (C/C++ Server Pages), LSP (Lua Server Pages), EventHandler an asynchronous persistent bi-directional protocol using HTTP(S), SharkSSL SSL/TLS server, WebDAV, XML-RPC, SOAP, Wnmp (Web Network Management Protocol), etc.

Low-overhead PC servers

Abyss: ~348 KB Aprelium webpage
Abyss Web Server X1 is a free and compact web server. It supports CGI, FastCGI, ISAPI, SSI, ASP.NET (on Windows), password protection, IP address control, bandwidth throttling, anti-leeching, anti-hacking, and features an intuitive multilingual remote web management interface.
AppWeb: ~3.8 MB AppWeb Server webpage
AppWeb HTTP Server is an open source with commercial licenses if required. It is fast (over 10,000 HTTP requests per second) and compact (from 110 KB). It supports SSL with MatrixSSL, Basic and Digest Authentication, Logging, Virtual hosts, PHP, CGI and Apache style configuration. AppWeb has Embedded Server Pages (ESP) for server side Javascripting and also supports standard page creation environments like PHP.
Anti-Web httpd
Anti-Web is a light-weight, single-process, non-threaded webserver that emphasizes simplicity, efficiency, and security.
BadBlue: ~99 KB BadBlue webpage
Multitasking, Windows only, core server supports CGI, ISAPI filters, and ISAPI extensions. Used extensively in small-footprint Perl, PHP, and Python installations.
BarracudaDrive
BarracudaDrive is a free multithreaded Web server based on the Barracuda Embedded Web Server. The server includes a Web File Manager, Orthodox file manager, WebDAV, HTTPS tunnel, real time DHTML chat client, a WYSIWYG HTML editor, and SharkSSL. The size of the executable is less than 500KB including an embedded 120KB ZIP file. The ZIP file contains the HTML and DHTML user interface and includes a number of Ajax applications.
Boa: ? KB
Boa is a single-tasking webserver.
Cherokee: ~55 KB Cherokee web site
Including: virtual servers, file sending, directory listing, PHP execution, CGI execution, URL redirections, Htdigest validation, and logging.
CoreHTTP: 25 KB Corehttp Web site
Corehttp is a single-process webserver using select(). Corehttp supports static and dynamic cgi content.
Devwex: ~30 KB Seanox Web page
Devwex is a widely configurable Java based Web server for the command line (command shell). The ca. 30k sized Java binary supports virtual hosts, IP/Port Sharing, Remote Access/Control, Directory Index, Multithreading, Filtering, Modules, DCGI/CGI1.1, SSL/TLS and more.
Hiawatha: 70 KB Hiawatha website
Webserver with security as its main goal. It has security features that no other webserver has, like preventing SQL-injection and Cross-site scripting, an easy-to-use CGI-wrapper and banning of hackers, which are automaticly detected. Hiawatha is also very fast. It's twice as fast as Apache for static content and it supports load-balanced FastCGI.
HTTPi
~15KB (variable based on configured options) HTTPi web site
A small 100% Perl webserver that requires no additional support other than a bare Perl interpreter (no modules needed). Supports executables, parsed HTML, virtual hosting, access control, a user filesystem and throttling. Can run as a daemon or from an inetd-like environment.
KLone 2:
Embedded HTTP/S server and SDK to write dynamic HTML pages using C/C++.
libwebserver 3:
Embedded HTTP/S server designed to be simple and powerful
Lite Netquestion HTTP Web Server: 28 KB
little Web server included in AIX to serve HTML documents to local users.
Null httpd: 52 KB webpage
Small, simple, multithreaded, web server. Available for Linux and Windows. Included in Puppy Linux.
nweb: 9 KB IBM Web page
Only 200 lines of C code, worked example of how to implement a simple webserver for UNIX, with error checking, only handles static pages so it is safe. The Web link above is an article on how it all works.
Scrinchy: ~26 KB 4
Scrinchy version 0.14 is a multitasking web server supporting HTTP and serving common file types like HTML and media files. It also provides an internal object-oriented stack-based scripting language called Lapis (currently 50kB extra), and permits external invocations of Perl, PHP, and Python.
Seminole 5
Seminole is a Web server toolkit mainly designed for embedded systems. It supports many operating systems (including eCos and VxWorks). The design is modular and highly object oriented. Seminole started out life as a GPLed project and later versions are commercial only.
Simple httpd: 12 KB Download
A small, simple web server for UNIX. The single source file is under 200 lines of code, ignoring comments. After the program starts and binds to a listening port, it runs inside a chroot jail as user "nobody." The simple design helps prevent coding bugs, and the chroot jail helps limit the consequences any that do occur; a very secure arrangement. Simple httpd is a threaded program.
SimpleW: ? KB 6
Simple and small Web server and JSP engine implemented in java. SimpleW only supports PUT and GET methods, cookies and no virtual hosting (no host header interpretation). SimpleW free and open source software.
thttpd:  KB 7
Small server with some interesting features such as throttling and multi-homing.
TinyWeb: ~53 KB 8
For Win32, written in Delphi.

Microcontroller servers

  • webAce may be the world's smallest Web server. It is based on the ACE1101MT8, the world's smallest microcontroller. In less than 1 KB of code, of which fewer than 400 bytes are used for TCP/IP.

Low Power Web Server

  • Spud, the Potato-Powered Web Server, may be the world's lowest power web server. The CPU is a Microchip PIC16F876 running with a 76.8 KHz clock and a nominal 1.5V supply voltage. Web page

See also