Async I/O

List of different packages, related to asynchronous I/O and async/await


Authorization and Authentication are a big deal for web development. Take OAuth, the most widely used protocol of authentication between services on the web. Such an simple idea, but with so many varying implementations (twitter, facebook, whatever…) and tricky parts in the details – it’s almost impossible to get right without a library. But authentication doesn’t end there, how do people authorize against your server? How do you authenticate? These are crates helping you to address authentication problems.

Binary protocols

Binary protocol support


The Webbrowser is the bastion, the holy grail of web development and one of the biggest projects in the Rust ecosystem focusses exactly on that. If Rust achieves to run a browser engine, be used to write server code while also being used as the frontend-development language within the browser, then it will truly be the language of the web like no other.

HTTP Clients

Without a proper HTTP Client there isn’t much web - even for the backend, scraping or API-Services on the web HTTP is the protocol of choice. Thus a stable, strong HTTP-Client stack is very important to any web-ecosystem.


Basic pages and compiling source content into full websites to be served are one of the fundamental features of the web as we have it today. On this page we cover helpers and projects that aim to lower the workfload on getting this specifc aspect done.

Compression Libs

One of the first things almost anyone does to improve performance (specifically bandwidth) is to turn on compression. Luckily compression is well supported in rust.


Cryptography is a corner stone of a trusted web. Without it many services could not be offered reliably. While rust has a strong RNG, the main suite in use isn’t pure rust but the (in)famous openssl.

Database drivers

Proper Database support is crucial for modern web development. This page gives an overview of the various drivers, ORMs, integrations and tools.


How are on quick and easy deploying of our applications into existing server infrastructures? Well, stuff is looking quite good actually.


What would the web be without Email? One of the easiest authentication and notification systems. Yet, rust support isn’t particular great, yet. There is stuff, but there is also room to improve it.

En- & Decoding

Encoding is one of those things you don’t really want to bother about, but just rely on a well tested library for – there are just too many edge and quirky cases. Luckily, as a system language, this is one of the things rust shines at – and offers a set of nice packages already.

Web Development Frameworks

When building a modern web-application you don’t want to bother on how to parse the http-header or where the route is supposed to be dispatched to. Frameworks offer exactly those features and make it quick’n’easy to build your specific app on the web-stack.


Internationalisation is still very immature and unstable, with most libraries being only weeks old and not used in production yet. In terms of i18n-ized message formatting, current options are gettext, fluent and ICU MessageFormat (via rust_icu).

JSON Support

Whether you are offering an external API or just want to talk to the modern Javascript Frontend Interface, you need to support JSON. And while there is most certainly JSON on the way, many things web-specific are still lacking.


Logging is part of the rust ecosystem for a long time and with log and env_logger you have some great defaults.


Node.js and / or Electron specific packages and bindings. You can also use WebAssembly.


Serializers allow you to easily transfer states and reliably get it back – important not only when working with JSON but also backbone of many types of worker-queue systems. Rust has good support for serializers, yet not many are web-tested…

External Services

The modern web development stack doesn’t only need a web-server but is often built on a range of external services to provide specific features, from worker queues over search and pubsub, rust support for these is seriously lacking at the moment. Be sure you are able to build the connection yourself if needed.


As terrible as SOAP might be as a protocol, it is undenyably popular amongst older systems and needed for legacy support. At this moment, rust doesn’t offer any help with SOAP development.

Lower Web-Stack

A strong lower web-stack is important not only to build strong web frameworks on top, but also to allow performance critical systems to reach deeper to squeeze out extra juice. Rust has a good support on HTTP servers, even an HTTP2 implementation, websockets and other protocols.


To spread the information syndication has often be announced dead just to still stick around. Parse and generating good RSS isn’t especially hard, but also something you don’t necessarily want to have to do yourself. There are some libraries and packages to help you with that.


No Web-App is complete if it doesn’t spit out HTML at least some of the time. Managing that, and making sure it renders performant and can be maintained is what templating libraries focus on. There aren’t many yet, but it’s better than none!

Web Utils

This collects a range of packages which are commonly used and needed in web development, like URL or HTTP-Body-parsers.

WebAssembly runtimes

List of standalone WebAssembly runtimes

External Web APIs

With many Web-Apps we want to reach farther than our locally hosted services and reach APIs hosted by other platforms and services outside our network. While there are a number of them, many are just first version and others (like Facebook) are still absent, leaving a lot of room for improvement.


WebAssembly is currently being designed as an open standard by the W3C Community Group that includes representatives from all major browsers. There are two major libraries for JavaScript ffi - wasm-bindgen and stdweb. Eventually, they will share the same build tools. But at the moment to build wasm-bindgen project - wasm-pack is required, and for stdweb there is a cargo-web. Current ffi bindings for JavaScript api are quite low-level. There is an initiative to build a modular toolkit named gloo