Tokio
The most recommended of 11 concurrency libraries
Default Rust async runtime that people build on for its ecosystem and well-designed libraries; critics say it adds complexity and an ecosystem monoculture.
Default Rust async runtime that people build on for its ecosystem and well-designed libraries; critics say it adds complexity and an ecosystem monoculture.
102 people gave an opinion
- recommend it
- 57
- criticize it
- 45
- approval share
- 56%
Recommended in 12 of 13 months
- November 2025: recommended
- December 2025: recommended
- January 2026: recommended
- February 2026: recommended
- March 2026: recommended
- April 2026: recommended
- May 2026: recommended
- June 2026: recommended
- July 2026: recommended
- August 2026: recommended
- September 2026: recommended
- October 2026: recommended
- November 2026: not recommended (month in progress)
Why it doesn’t carry the badge
- 57 people recommend itNeeds 10 or more, met.
- 1.2 recommenders for every criticNeeds 2 to 1 or better, not met.
- Recommended in 12 of 13 monthsNeeds 4 or more, met.
The same three rules apply to every product, and the badge can’t be bought. How the badge works
What people say about it
The reasons people give, with the number of comments that give each one. Open a reason to read what they said.
Why people recommend it
Each mark is one comment
Default choice for async Rust
“In pretty much every bit of code I've written both professionally and leisurely I have always used tokio.”
Comment from 5 May 2026 in “Bun is being ported from Zig to Rust” “you'd probably just want to center on tokio and axum, then stick to the tokio ecosystem”
Comment from 13 May 2026 in “The limits of Rust, or why you should probably not follow Amazon and Cloudflare” “pretty much the default if you aren't in a specific, resource constrained use case”
Comment from 5 May 2026 in “Async Rust never left the MVP state” Low latency and good performance
“Tokio was not starved so handled network requests at low latency.”
Comment from 16 Aug 2026 in “Asynchronous I/O in DuckDB: Work, Thread, Work” “Tokio was not starved so handled network requests at low latency”
Comment from 16 Aug 2026 in “Asynchronous I/O in DuckDB: Work, Thread, Work” “the performance of just using tokio is already pretty good”
Comment from 2 Nov 2025 in “Crossfire: High-performance lockless spsc/mpsc/mpmc channels for Rust” Clean and friendly with Axum
“Tokio and Axum make it quite friendly, and depending on what you are connecting to it becomes super easy”
Comment from 13 May 2026 in “The limits of Rust, or why you should probably not follow Amazon and Cloudflare” “the async models in rust (along with tokio/axum, etc) have been pretty nice and clean in practice”
Comment from 22 Dec 2025 in “Rue: Higher level than Rust, lower level than Go” “Tokio works well because Rust's ownership model overlays with tokio nicely.”
Comment from 16 Sep 2026 in “Principles for Fast Tokio Applications” Well-designed, enjoyable code to read
“libs like tokio and actix-web were so well-designed that I actually enjoyed reading the code in my free time”
Comment from 1 Aug 2026 in “Google fixed more Chrome bugs in June than over the past two years, thanks to AI” “I'm both an Erlang programmer and a big fan of Tokio and Rust's async/await implementation”
Comment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency” “I'm a big fan of a lot of the things that the tokio project has built”
Comment from 17 Jul 2026 in “Topcoat: The full full-stack framework for Rust”
What people warn about
Each mark is one comment
Complex, forces lifetime and trait issues
“The particular implementation of async used by Tokio forces a litany of undesirable traits and lifetime issues into your application code.”
Comment from 3 Dec 2025 in “Zig's new plan for asynchronous programs” “tokio does a whole-program transformation that does its most restrictive checking only after all local checks have been resolved”
Comment from 4 May 2026 in “A Couple Million Lines of Haskell: Production Engineering at Mercury” “Tokio is very complex and work-stealing is arguably a very bad default in terms of development complexity”
Comment from 21 Aug 2026 in “Malicious Rust Crate Arrayref Runs a Build-Time Payload” Heavy compile and dependency footprint
“Pulling in Tokio makes your project compile an entire thread management system even if you're just compiling Hello World”
Comment from 5 May 2026 in “Bun is being ported from Zig to Rust” “Start with tokio. Please vend one dependency battery included, and vendor in/internalize everything, thanks.”
Comment from 3 Apr 2026 in “Decisions that eroded trust in Azure – by a former Azure Core engineer” “there are costs in portability and supply chain attack surface area when you bring in tokio”
Comment from 1 Nov 2025 on Hacker News Ecosystem monoculture, poor executor interop
“a motley bunch of libraries that are written to use particular modes of tokio that don't necessary play well together”
Comment from 25 Apr 2026 in “What Async Promised and What It Delivered” “rather than exposing a common interface for many executors, the Rust async ecosystem went with a Tokio monoculture”
Comment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency” “There are issues in particular with core traits for IO or Stream being defined in third-party libraries”
Comment from 5 May 2026 in “Async Rust never left the MVP state” Poor fit for some workloads
“Tokio shares one buffer pool for all threads so as you scale to 100+ threads the whole thing grinds to a halt.”
Comment from 11 Sep 2026 in “We Replaced MMAP with Io_uring in Our Rust Query Engine. It Got Slower” “Tokio especially is extremely widely used for all kinds of things it doesn't work well for.”
Comment from 16 Jul 2026 in “The Tokio/Rayon Trap and Why Async/Await Fails Concurrency” “Tokio's API is not the right one for io_uring, buffer pools for reads changes everything.”
Comment from 31 May 2026 in “Announcing Rust 1.96”
Other concurrency libraries people recommend
The four most recommended other concurrency libraries, with the same counts for each, so you can compare like for like. The tick on each bar marks the 2 to 1 line the badge needs.
| Product | Recommend | Criticize | Approval | Months | Owned | Badge |
|---|---|---|---|---|---|---|
| TokioThis page | 57 | 45 | 56% | 12 | — | — |
| Akka | 12 | 9 | 57% | 7 | — | — |
| ZIO | 11 | 2 | 85% | 9 | — | Approved |
| Trio Python library | 10 | 0 | 100% | 8 | — | Approved |
| core.async | 9 | 4 | 69% | 6 | — | — |
What people said
40 of the 126 comments that mention it, newest first. Each links to the original comment.
“it will cancel whatever async operation the task is currently running. And it does so reliably.”
“Tokio works well because Rust's ownership model overlays with tokio nicely.”
“channels deserve more emphasis here too, especially because they change the architecture rather than just swapping synchronization primitives”
“A more "correct" approach would be to call tokio::spawn with the future to print AB.”
“Tokio shares one buffer pool for all threads so as you scale to 100+ threads the whole thing grinds to a halt.”
“Tokio is very complex and work-stealing is arguably a very bad default in terms of development complexity”
“All the hard works are done by those skillful maintainers of the language and some core libraries such as tokio.”
“Tokio was not starved so handled network requests at low latency”
“Tokio was not starved so handled network requests at low latency.”
“libs like tokio and actix-web were so well-designed that I actually enjoyed reading the code in my free time”
“I'm a big fan of a lot of the things that the tokio project has built”
“rather than exposing a common interface for many executors, the Rust async ecosystem went with a Tokio monoculture”
“For genuine CPU-bound work, submitting to a Rayon worker pool is the way to go.”
“The docs for Tokio even mention this, and provide a number of worked examples of integrating/bridging sync and async code.”
“I'm both an Erlang programmer and a big fan of Tokio and Rust's async/await implementation”
“Tokio especially is extremely widely used for all kinds of things it doesn't work well for.”
“Tokio uses a thread pool with work stealing so it is definitely more advanced than Windows 3.1's model!”
“Tokio's API is not the right one for io_uring, buffer pools for reads changes everything.”
“Tokio and Axum make it quite friendly, and depending on what you are connecting to it becomes super easy”
“you'd probably just want to center on tokio and axum, then stick to the tokio ecosystem”
“pretty much the default if you aren't in a specific, resource constrained use case”
“There are issues in particular with core traits for IO or Stream being defined in third-party libraries”
“tokio (and C++ equivalents) provide you the flexibility to do more things than the native Python/Node runtime does”
“Pulling in Tokio makes your project compile an entire thread management system even if you're just compiling Hello World”
“In pretty much every bit of code I've written both professionally and leisurely I have always used tokio.”
“you pay an allocation for every future unless you do some complex organization of your futures”
“You shouldn't have to pull in big complex dependencies to do what should be primitive things”
“tokio does a whole-program transformation that does its most restrictive checking only after all local checks have been resolved”
“The large majority of the concurrent code I write uses nothing specific from the tokio crate, including spawn.”
“Tokio can also get mad at you if you nest runtimes within one another on the same thread”
“a motley bunch of libraries that are written to use particular modes of tokio that don't necessary play well together”
“Libraries like Tokio (mentioned in the article) have support for this built-in.”
“in tokio codebases where the general expectation is that futures will be Send”
“Start with tokio. Please vend one dependency battery included, and vendor in/internalize everything, thanks.”
“the async models in rust (along with tokio/axum, etc) have been pretty nice and clean in practice”
“The particular implementation of async used by Tokio forces a litany of undesirable traits and lifetime issues into your application code.”
“So instead I have to go look for a similar function but of the other color, probably from tokio.”
“Tokio provides crash-resistant synchronization primitives, but it cannot recover complex structures you've been handling”
“the performance of just using tokio is already pretty good”
“there are costs in portability and supply chain attack surface area when you bring in tokio”
Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.