High performance, extensible, minimalist Go web framework.
Echo is built on Go's standard net/http and interoperates with it through echo.WrapHandler and echo.WrapMiddleware. It adds the parts the standard library leaves to you: a fast radix-tree router, request binding with pluggable validation, a deep middleware ecosystem, and centralized error handling. Echo is actively maintained, and v5 is the current release line.
- Website
- Quick start
- Middleware
- API reference
- Help and questions: GitHub Discussions
- Fast radix-tree router that prioritizes routes smartly
- Route groups, with middleware at the root, group or route level
- Data binding for JSON, XML, form, query and path parameters, with pluggable validation
- Helpers for JSON, XML, HTML, file, stream and other responses
- Centralized error handling
- Structured request logging with
log/slog - Template rendering with any template engine
- TLS, HTTP/2, automatic TLS with Let's Encrypt, and graceful shutdown
Echo runs in production across the Go ecosystem, including:
| Project | What runs on Echo |
|---|---|
| Bluesky indigo | AT Protocol Relay and network services |
| Temporal UI | Temporal Web UI server |
| NVIDIA Cloud Functions | LLM API gateway |
| Azure Container Networking | Container Networking Service REST API |
| osbuild-composer | Red Hat Image Builder cloud API |
| Docker Agent | Agent API, chat and A2A servers |
| YugabyteDB | yugabyted UI API server |
| PostHog | Livestream service |
| Bytebase | Backend server and API |
| Hatchet | API server |
| CasaOS | API server |
| Hanko | Authentication backend |
See ADOPTERS.md for the full list. Using Echo in an open source project? Add it.
| Sponsor | |
|---|---|
| Blacksmith: faster, drop-in GitHub Actions runners | |
| Encore: the platform for building Go-based cloud backends | |
| Gravity Carbon |
Echo is independent and community funded. If your company depends on Echo, please consider sponsoring it.
v5is the current major version, released on 2026-01-18. See API_CHANGES_V5.md for the API changes fromv4and upgrade notes.v4receives security updates and bug fixes until 2026-12-31.
See ROADMAP.md for where Echo is heading and the version support policy.
go get github.com/labstack/echo/v5Echo supports the three most recent Go releases and may work with older ones.
package main
import (
"log/slog"
"net/http"
"github.com/labstack/echo/v5"
"github.com/labstack/echo/v5/middleware"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.RequestLogger()) // log requests with log/slog
e.Use(middleware.Recover()) // recover from panics and return an error
// Routes
e.GET("/", hello)
// Start server
if err := e.Start(":8080"); err != nil {
slog.Error("failed to start server", "error", err)
}
}
// Handler
func hello(c *echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}More in the guide and the cookbook.
Maintained by the Echo team.
| Repository | Description |
|---|---|
| labstack/echo-jwt | JWT authentication |
| labstack/echo-contrib | Casbin, gorilla/sessions and pprof |
| labstack/echo-otel | OpenTelemetry tracing and metrics |
| labstack/echo-prometheus | Prometheus metrics |
These projects are maintained by their authors, not the Echo team. Review them before use, and check which Echo version (v4 or v5) each supports.
| Repository | Description |
|---|---|
| oapi-codegen/oapi-codegen | OpenAPI client and server code generator |
| swaggo/echo-swagger | Serves Swagger 2.0 API documentation |
| ziflex/lecho | Zerolog logger for Echo |
| brpaz/echozap | Uber Zap logging middleware |
| samber/slog-echo | log/slog logging middleware |
| darkweak/souin | HTTP cache middleware based on Souin, with distributed storage support |
| mikestefanello/pagoda | Full-stack web development starter kit built on Echo |
| go-woo/protoc-gen-echo | Generates Echo server code from Protocol Buffers |
To add your library, send a pull request.
Use issues for everything.
- For a small change, send a pull request.
- For a bigger change, open an issue to discuss it first.
- A pull request should include tests, documentation and, where it helps, an example.
You can also contribute by reporting issues, suggesting features and improving the documentation.
Report vulnerabilities privately through GitHub Security Advisories, not in public issues. See SECURITY.md for supported versions.
- Vishal Rana (Author and Maintainer)
- Nitin Rana (Consultant)
- Martti T. (Maintainer Emeritus)
- Roland Lammel (Maintainer Emeritus)
- Pablo Andres Fuente (Maintainer Emeritus)
- Contributors