1. Phoenix (via Elixir)
Let's get the obvious one out of the way first. While Phoenix is technically an Elixir framework, Elixir runs on the Erlang Virtual Machine (BEAM) and offers seamless interoperability with Erlang libraries. Phoenix has become the dominant force in the BEAM ecosystem
for a reason. It provides a full-featured, productive, and high-performance environment for building modern web applications. By using Phoenix, you get the reliability of Erlang/OTP, the developer-friendly syntax of Elixir, and a framework that excels at real-time features like WebSockets through its Channels architecture. For many new projects in the ecosystem, Phoenix is the default starting point.
2. Cowboy
If Phoenix is the full-service restaurant, Cowboy is the minimalist, high-performance kitchen. Cowboy is a small, fast, and modular HTTP server for Erlang. It's not a full-stack MVC framework; instead, it provides the essential, rock-solid foundation for handling HTTP, HTTP/2, and WebSocket connections. Its lean nature means it has very low latency and memory usage. Many other frameworks—including Phoenix—actually use Cowboy under the hood. If you're building a lightweight API, a streaming service, or you just want complete control over the request/response cycle without framework overhead, Cowboy is an exceptional choice.
3. Chicago Boss
Named with a nod to the city's powerful historical figures, Chicago Boss brings a more conventional, Rails-inspired MVC structure to the Erlang world. It's designed for rapid development, automatically compiling your Erlang code and providing a full suite of tools out of the box, including database access and a template engine. For developers coming from backgrounds like Ruby on Rails or Django, Chicago Boss feels familiar and immediately productive. It trades some of the bare-metal control of Cowboy for a more guided, all-in-one experience, making it great for launching traditional web applications quickly while still benefiting from Erlang's powerful process model.
4. Zotonic
Zotonic is more than just a web framework; it's a full-fledged Content Management System (CMS) built on Erlang. It's designed from the ground up for speed and real-time capabilities, leveraging Erlang's strengths to handle dynamic, interactive websites with ease. Zotonic comes with a flexible data model and an elegant backend for content management, making it suitable for everything from basic websites to complex, data-heavy applications. It uses a Django-like templating language and is built on PostgreSQL. For projects where content management is a central requirement, Zotonic provides a powerful, scalable, and Erlang-native solution.
5. N2O / Nitrogen
Nitrogen, and its successor N2O (Nitrogen 2 Optimized), offer a unique approach to web development. These frameworks are designed for building stateful, event-driven web applications where you write your front-end logic entirely in Erlang. Instead of writing JavaScript, you define UI elements and behaviors as Erlang records and functions. The framework handles the translation to HTML and JavaScript, using WebSockets to maintain a persistent connection between the client and server. This model is exceptionally well-suited for applications that require intense real-time interactivity, like dashboards or collaborative tools, as it fully embraces Erlang's message-passing concurrency.
6. MochiWeb
MochiWeb is one of the original and most influential Erlang HTTP toolkits. While Cowboy has become more popular for new projects, MochiWeb laid much of the groundwork and is still in use in many systems. It's an Erlang library for building lightweight HTTP servers and was a key component in early, high-profile Erlang projects. Understanding MochiWeb is useful for historical context and for working on legacy systems. It provides a solid, if less modern, set of tools for handling HTTP requests, making it a reliable choice for specific use cases or when maintaining existing applications.
7. Riak Core Lite
This one is different. Riak Core Lite isn't a web framework, but a framework for building distributed, scalable, fault-tolerant applications—the very things Erlang was made for. It's an extraction of the core distribution and coordination logic from the Riak KV database. By using Riak Core Lite, you get features like data partitioning, cluster membership management, and handoffs for free. This allows developers to focus on their specific business logic while the framework handles the complex distributed systems problems. If your goal isn't a web page but a robust, Dynamo-style distributed service, Riak Core Lite is the framework that truly unlocks Erlang's potential.











