Hono is a small, ultrafast web framework built on Web Standards. It runs on Cloudflare Workers, Bun, Deno, AWS Lambda, Vercel, Fastly Compute, and Node.js – the same code, across all runtimes. Under 12kB, zero dependencies, first-class TypeScript support.
That’s the short answer. But if you’re evaluating Hono for a real project, you need more than a spec sheet.
Why Hono exists and why it matters now
Express.js was built for a world of single-server Node.js apps. That world still exists, but it’s no longer the only one. Today’s applications run at the edge, on Cloudflare Workers, Lambda@Edge, Deno Deploy where cold starts, bundle size, and Web Standards compliance actually matter.
Hono was built for that world from day one. It uses the same Request and Response objects your browser uses. No proprietary abstractions. That’s why the same Hono app runs on seven different runtimes without modification.
What Hono actually does
At its core, Hono is a routing framework with middleware support. Here’s a minimal working example:
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello Hono!'))
app.get('/user/:id', (c) => {
const id = c.req.param('id')
return c.json({ userId: id })
})
export default appThis runs identically on Cloudflare Workers, Bun, and Node.js. No configuration changes.
Hono vs Express vs Fastify – what’s the actual difference?
| Hono | Express | Fastify | |
|---|---|---|---|
| Bundle size | ~12kB | ~208kB | ~84kB |
| Edge runtime support | ✅ Native | ❌ Node.js only | ⚠️ Limited |
| Web Standards API | ✅ Yes | ❌ No | ❌ No |
| TypeScript support | ✅ First-class | ⚠️ Via @types | ⚠️ Via @types |
| Middleware ecosystem | Growing | Mature | Mature |
| Learning curve | Low | Very low | Medium |
Express remains the safe choice for traditional Node.js server applications with large teams and mature codebases. Fastify wins on raw Node.js throughput benchmarks. Hono wins everywhere else especially in edge and multi-runtime environments.
Hono’s router: why it’s fast
Speed in Hono isn’t marketing. It comes from how routing works under the hood.
The default RegExpRouter compiles all routes into a single large regex before the first request hits. Route matching becomes one operation instead of a linear loop through registered routes.
For environments where startup time matters more than steady-state speed, Hono also offers LinearRouter, which registers routes faster at the cost of slightly slower matching.
You don’t pick the router manually in most cases. SmartRouter selects the right one automatically.
Built-in middleware – what ships out of the box
Hono includes production-ready middleware for the most common needs:
- Authentication: Basic Auth, Bearer Auth, JWT
- Security: CORS, Secure Headers, CSRF protection
- Performance: Cache, Compress, ETag
- Developer experience: Logger, Pretty JSON, Body Limit
- Modern APIs: Streaming, SSG, JSX rendering, GraphQL
For most APIs and edge functions, you won’t need third-party packages for standard functionality.
Adding middleware looks like this:
import { Hono } from 'hono'
import { cors } from 'hono/cors'
import { logger } from 'hono/logger'
import { bearerAuth } from 'hono/bearer-auth'
const app = new Hono()
app.use('*', logger())
app.use('/api/*', cors())
app.use('/protected/*', bearerAuth({ token: 'my-secret-token' }))
app.get('/api/data', (c) => c.json({ data: 'public' }))
app.get('/protected/admin', (c) => c.json({ data: 'private' }))
export default appWhen to use Hono and when not to
Hono is the right choice when:
- You’re building for edge runtimes
- Bundle size matters
- You want one codebase across runtimes
- You’re starting a new TypeScript API
Hono is probably not the right choice when:
- You’re maintaining a large Express codebase
- Your team depends on Fastify plugins
- You need a full-stack framework
HonoX – Hono as a full-stack meta-framework
HonoX is a meta-framework built on top of Hono and Vite, adding SSR and file-based routing.
Think of it as a lighter, edge-native alternative to Next.js.
Current state: Hono in 2026
Hono is stable and widely adopted, with millions of downloads and a growing ecosystem.
Getting started
npx create-hono my-appSelect your target runtime and you have a working project in under a minute.
Full documentation at hono.dev.









