Zod Validation in Hono
From the Hono cheat sheet · Validation · verified Jul 2026
Zod Validation
Type-safe validation with Zod schemas
typescript
import { zValidator } from '@hono/zod-validator'
import { z } from 'zod'
// JSON body validation
const createUserSchema = z.object({
name: z.string().min(1).max(100),
email: z.string().email(),
age: z.number().min(18).optional(),
})
app.post('/users',
zValidator('json', createUserSchema),
(c) => {
const { name, email, age } = c.req.valid('json')
return c.json({ name, email, age }, 201)
}
)
// Query params validation
const searchSchema = z.object({
q: z.string(),
page: z.coerce.number().positive().default(1),
limit: z.coerce.number().max(100).default(10),
})
app.get('/search',
zValidator('query', searchSchema),
(c) => {
const { q, page, limit } = c.req.valid('query')
return c.json({ q, page, limit })
}
)💡 Install: npm install @hono/zod-validator zod
⚡ Targets: json, query, param, header, form, cookie
📌 Use z.coerce for automatic type conversion
🎯 c.req.valid("target") returns typed validated data