Last Updated: 3/9/2026
Features and Capabilities
Hono is a small, simple, and ultrafast web framework that brings powerful features to edge computing and beyond.
Core Features
🚀 Ultrafast Performance
Hono is the fastest web framework for edge runtimes. The RegExpRouter achieves exceptional performance by converting all routes into a single large regular expression, enabling one-time matching instead of linear loops.
Hono x 402,820 ops/sec ±4.78% (80 runs sampled)
itty-router x 212,598 ops/sec ±3.11% (87 runs sampled)
sunder x 297,036 ops/sec ±4.76% (77 runs sampled)
worktop x 197,345 ops/sec ±2.40% (88 runs sampled)
Fastest is HonoWhy it matters: Faster response times mean better user experience and lower infrastructure costs, especially important in serverless environments where execution time directly impacts billing.
See also: Performance Benchmarks for detailed comparisons.
🪶 Lightweight Bundle Size
With the hono/tiny preset, Hono is under 14KB when minified. Zero dependencies. Only Web Standards.
$ npx wrangler dev --minify ./src/index.ts
Total Upload: 11.47 KiB / gzip: 4.34 KiBFor comparison, Express is 572KB.
Why it matters: Smaller bundles mean faster cold starts in serverless environments and reduced bandwidth costs.
🌍 Multi-Runtime Support
The same code runs on any JavaScript runtime:
- Edge Runtimes: Cloudflare Workers, Fastly Compute, Vercel Edge, Netlify Edge
- Serverless: AWS Lambda, Lambda@Edge, Google Cloud Functions, Azure Functions
- Traditional: Node.js, Bun, Deno
- Client-Side: Service Workers, Browser
Why it matters: Write once, deploy anywhere. No vendor lock-in. Easy migration between platforms.
// This exact code works on ALL platforms
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello!'))
export default appSee also: Web Standards explains how this works.
🔋 Batteries Included
Hono provides everything you need out of the box:
Authentication & Security:
- Basic Authentication
- Bearer Token Authentication
- JWT (JSON Web Tokens)
- CORS (Cross-Origin Resource Sharing)
- CSRF Protection
- Secure Headers
- IP Restriction
Performance & Optimization:
- Compression (gzip, deflate, brotli)
- ETag generation
- Cache control
- Streaming responses
- Static Site Generation (SSG)
Developer Tools:
- Request logging
- Pretty JSON formatting
- Request ID tracking
- Performance timing headers
- Context storage
Content Handling:
- Cookie parsing and setting
- Body parsing (JSON, form, multipart)
- File uploads
- HTML templating with JSX
- GraphQL server support
See also: Middleware Overview for the complete list.
😃 Delightful Developer Experience
Hono is built with TypeScript and provides first-class type safety:
Type-safe path parameters:
app.get('/posts/:id', (c) => {
const id = c.req.param('id') // TypeScript knows this is a string
// ^? const id: string
})Type-safe validation:
app.post('/posts',
zValidator('json', z.object({
title: z.string(),
published: z.boolean()
})),
(c) => {
const data = c.req.valid('json')
// ^? { title: string; published: boolean }
}
)Type-safe RPC client:
// Server
const app = new Hono().get('/api/posts/:id', (c) =>
c.json({ id: c.req.param('id'), title: 'Hello' })
)
// Client - fully typed!
const client = hc<typeof app>('http://localhost')
const res = await client.api.posts[':id'].$get({ param: { id: '123' } })
const data = await res.json()
// ^? { id: string; title: string }See also: RPC Client Guide for type-safe API development.
Use Cases
Hono excels in these scenarios:
Building Web APIs
Create RESTful APIs with routing, validation, and middleware:
const api = new Hono()
.get('/users', (c) => c.json({ users: [...] }))
.post('/users', zValidator('json', userSchema), (c) => {
const user = c.req.valid('json')
// Create user...
return c.json({ user }, 201)
})Backend Proxy
Proxy requests to backend services with authentication and caching:
app.use('/api/*', async (c, next) => {
const token = c.req.header('Authorization')
// Verify token...
await next()
})
app.all('/api/*', async (c) => {
const url = new URL(c.req.url)
url.hostname = 'backend.example.com'
return fetch(url, c.req.raw)
})CDN Edge Applications
Deploy at the edge for minimal latency:
app.get('/content/:id', cache({ cacheName: 'content' }), async (c) => {
const content = await fetchFromOrigin(c.req.param('id'))
return c.json(content)
})Full-Stack Applications
Combine API routes with JSX templating:
app.get('/', (c) => {
return c.html(
<Layout>
<h1>Welcome</h1>
</Layout>
)
})
app.get('/api/data', (c) => c.json({ data: [...] }))Library Base Server
Provide a lightweight server for your library:
import { Hono } from 'hono'
import { myLibrary } from './lib'
export function createServer(options) {
const app = new Hono()
app.post('/process', async (c) => {
const result = await myLibrary.process(await c.req.json())
return c.json(result)
})
return app
}What Makes Hono Different?
vs Express
- Faster: 2-3x faster routing performance
- Smaller: 14KB vs 572KB
- Modern: Built for edge runtimes, not just Node.js
- Type-safe: First-class TypeScript support
- Web Standards: Uses Request/Response, not Node.js-specific APIs
vs Fastify
- Multi-runtime: Works on edge, serverless, and traditional runtimes
- Lighter: Smaller bundle size
- Simpler: Less configuration, easier to learn
- Edge-first: Optimized for edge computing
vs Next.js API Routes
- Portable: Not tied to Vercel or Next.js
- Faster: Better performance for API-only applications
- Flexible: Works on any runtime
- RPC: Built-in type-safe client
What’s Next?
- Get started: Quick Start Guide
- Learn core concepts: Routing
- See who’s using Hono: Production Users