Build reliable network applications without compromising speed.

Tokio is an asynchronous runtime for the Rust programming language. It provides the building blocks needed for writing network applications. It gives the flexibility to target a wide range of systems, from large servers with dozens of cores to small embedded devices.

Built by the community, for the community.


Tokio's APIs are memory-safe, thread-safe, and misuse-resistant. This helps prevent common bugs, such as unbounded queues, buffer overflows, and task starvation.


Building on top of Rust, Tokio provides a multi-threaded, work-stealing scheduler. Applications can process hundreds of thousands of requests per second with minimal overhead.


async/await reduces the complexity of writing asynchronous applications. Paired with Tokio's utilities and vibrant ecosystem, writing applications is a breeze.


The needs of a server application differ from that of an embedded device. Although Tokio comes with defaults that work well out of the box, it also provides the knobs needed to fine tune to different cases.

The stackThe stack

Applications aren't built in a vacuum. The Tokio stack includes everything needed to ship to production, fast.


Including I/O, timer, filesystem, synchronization, and scheduling facilities, the Tokio runtime is the foundation of asynchronous applications.

Learn more ➔


An HTTP client and server library supporting both the HTTP 1 and 2 protocols.

Learn more ➔


A boilerplate-free gRPC client and server library. The easiest way to expose and consume an API over the network.

Learn more ➔


Modular components for building reliable clients and servers. Includes retry, load-balancing, filtering, request-limiting facilities, and more.

Learn more ➔


Minimal portable API on top of the operating-system's evented I/O API.

Learn more ➔


Unified insight into the application and libraries. Provides structured, event-based, data collection and logging.

Learn more ➔


At the core, networking applications manipulate byte streams. Bytes provides a rich set of utilities for manipulating byte arrays.

Learn more ➔