Guide · Open source
How to use H2O: clone, build and run the HTTP server
Updated · written with AI from the project's own documentation and checked against our catalogue data
H2O is an open-source HTTP server, the software that delivers web pages and API responses to browsers and other clients. It is written in C, licensed under the MIT License, and can also be used as a library inside other C programs. This guide explains what H2O is, how to get the source code, and whether it fits your project.
Quick start
- 1Check your fit. Confirm you are comfortable compiling and configuring server software, since no installer or binaries are provided.
- 2Clone the repository. Run git clone https://github.com/h2o/h2o to download the source code.
- 3Read the documentation. Open the project documentation at h2o.examp1e.net for build and configuration steps.
- 4Review security reporting. Read SECURITY.md in the repository and note the vulnerability reporting address.
- 5Build and configure. Compile H2O and write your configuration following the official documentation.
- 6Test before production. Test your setup thoroughly, and avoid relying on HTTP/3 in production because it is experimental.
What is H2O and what protocols does it support?
H2O is an optimized HTTP server with support for HTTP/1.x and HTTP/2, and HTTP/3 is listed in the project README as experimental. The README describes H2O as a new generation HTTP server that is very fast and gives quicker responses to end users compared with older generations of HTTP servers.
The project is written in C. Because it is licensed under the MIT License, you can generally use it in commercial and private projects, subject to the license terms.
- Protocols: HTTP/1.x, HTTP/2, HTTP/3 (experimental)
- Language: C
- Licence: MIT
- Can be used as a standalone server or as a library
Get the H2O source code
The README gives one install command: cloning the repository from GitHub. The README does not list prerequisites or ready-made binaries, so you will need to get the source and build it yourself.
Run the clone command in a terminal. This creates a local folder with the H2O source.
git clone https://github.com/h2o/h2oBuild and configure H2O
The source README does not include build steps, configuration file examples or run commands. For those, follow the documentation at h2o.examp1e.net, which the README links to as the main reference.
Expect to compile the server and write its configuration yourself. H2O suits operators who are comfortable with that kind of work.
- Read the project documentation for build and configuration steps
- Check the SECURITY.md file in the repository before deploying
Use H2O as a library in a C project
H2O can be embedded as a library, so C developers can add HTTP serving to their own programs instead of running a separate server process. The README confirms library use but does not describe the API, so consult the documentation for function-level details.
Who should use H2O and who should choose something else?
H2O is a good fit for teams that want a server focused on speed and modern HTTP protocols, for C developers who want an embeddable HTTP server, and for operators who are comfortable compiling and configuring software.
It is a poor fit for beginners who want a point-and-click installer, since the README gives no simple installer or binaries. Teams that need HTTP/3 in production should also look elsewhere, because the README marks HTTP/3 as experimental. If you need a large plugin ecosystem, the README does not describe one.
- Comparable projects: nginx, Caddy, Apache HTTP Server
What people use it for
- Serving web pages and API responses with a fast HTTP/1.x and HTTP/2 server
- Embedding an HTTP server inside a C application as a library
- Evaluating a newer-generation HTTP server for speed-focused projects
Frequently asked questions
Is H2O free to use?
Yes. H2O is licensed under the MIT License, which is a permissive open-source licence. Check the license text in the repository for the full terms.
How do I install H2O?
The README gives one command: git clone https://github.com/h2o/h2o. It does not provide a simple installer or prebuilt binaries, so you build the server from source after cloning.
Does H2O support HTTP/3?
The README describes HTTP/3 support as experimental. Use it for testing rather than relying on it in production.
What language is H2O written in?
H2O is written in C. It can also be used as a library inside other C programs.
What are H2O's alternatives?
The README lists nginx, Caddy and Apache HTTP Server as comparable projects. Choose based on your needs for protocol support, ease of setup and ecosystem.
Is H2O good for beginners?
Not really. The README gives no simple installer or binaries, so H2O suits people comfortable building and configuring server software themselves.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
H2O suits operators and C developers who want a speed-focused HTTP server or an embeddable HTTP library and are comfortable building from source. Beginners who want a simple installer, teams that need production HTTP/3, or anyone who depends on a large plugin ecosystem should pick something like nginx, Caddy or Apache HTTP Server.
Install options & downloads