On this page
Overview
Axum is an HTTP routing and request-handling library for Rust. It provides macro-free routing, declarative request extractors, predictable response construction, and direct access to the Tower service and middleware ecosystem.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Compose endpoints from routers, handlers, and extractors
Axum routes requests to handlers without a routing macro and uses extractors to declaratively parse path, query, body, and other request data. Rust return types can be converted into responses with little boilerplate.
Sources: [2]
Reuse Tower middleware across the networking stack
Axum uses tower::Service rather than a proprietary middleware system. That provides access to timeout, tracing, compression, authorization, and other middleware that can also be shared with Hyper- or Tonic-based services.
Sources: [2]
Best fit
Fits Rust backends that prefer explicit, type-driven HTTP composition
It works well for API servers and web backends built from small routers, extractors, and handlers, especially when Tokio provides the runtime and Tower is already the middleware abstraction.
Sources: [2]
Before adoption
Separate the released 0.8 API from upcoming 0.9 breaking changes
Axum 0.8.9 documents Rust 1.80 as its MSRV. The default branch contains breaking work toward 0.9, so production adoption should follow a release tag or the released 0.8.x line rather than copying main-branch APIs blindly.
Official sources
- [1]tokio-rs/axum — GitHub repository(2026-10-06)
- [2]Axum 0.8.9 — README(2026-10-06)
- [3]Axum 0.8.9 release(2026-10-06)
Supplemental curator note
Axum's key architectural choice is to reuse Tower's Service middleware ecosystem instead of inventing a separate middleware model. The current main branch targets 0.9 and contains breaking changes, so evaluate production code against the released 0.8.x line.
Try it in 3 steps
- 1
Clone the reviewed Axum release
Clone the stable 0.8.9 tag. Its README documents Rust 1.80 as the MSRV.
git clone --depth 1 --branch axum-v0.8.9 https://github.com/tokio-rs/axum.git && cd axum - 2
Run the Hello World example
Start the official workspace example, which serves Axum on 127.0.0.1:3000.
cargo run -p example-hello-world - 3
Check the HTTP response
Send a request from another terminal and confirm that the Hello World HTML response is returned.
curl http://127.0.0.1:3000/
Growth
Growth trends · Last 30 days
27,382 Stars
Trend data is still being collected.
Built with
Categories and tags
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- http
- routing
- rust
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Echo32,754 Stars
3 shared tag(s) · 2 shared category(s)
A Go web framework that adds routing, middleware, binding, and error handling around net/http
Go - Chi22,929 Stars
3 shared tag(s) · 2 shared category(s)
compose Go HTTP routes and middleware while keeping net/http compatibility
Go - aiohttp16,569 Stars
3 shared tag(s) · 2 shared category(s)
build asyncio HTTP clients, servers, and WebSockets with one Python framework
Python - Starlette12,655 Stars
3 shared tag(s) · 2 shared category(s)
build asynchronous Python web services from lightweight ASGI components
Python - Sinatra12,454 Stars
3 shared tag(s) · 2 shared category(s)
Map HTTP methods and URL patterns directly to a compact Ruby/Rack application
Ruby - Grape10,009 Stars
3 shared tag(s) · 2 shared category(s)
Build REST-like Ruby APIs with routing, parameter validation, versioning, and Rack composition
Ruby
Report incorrect information
Tell us if any listing information is incorrect or outdated.