A running list of Go modules I use or want to keep on my radar. Some I reach for daily, others I’m still evaluating. The Go ecosystem moves fast, so this post will keep evolving — treat it as a snapshot, not a manifesto.
Resilience & Validation
- failsafe-go — Fault tolerance and resilience patterns: retries, circuit breakers, timeouts, fallbacks, bulkheads. Composable policies you wrap around any operation.
- go-playground/validator — Struct and field validation with cross-field, cross-struct, map, and slice diving. The de facto standard for request validation.
Debugging & Inspection
- goforj/godump — Pretty-printer and debug dumper inspired by Laravel’s
dump(). Drops into any function for quick struct inspection. - arl/statsviz — Real-time visualization of runtime metrics (heap, GC, goroutines, scheduler) in the browser. Great for spotting allocation patterns under load.
- Go execution traces — The built-in tracer keeps getting better. Worth revisiting if you last looked years ago.
Slices, Maps & Generics Helpers
- samber/lo — Lodash-style helpers built on generics:
Map,Filter,Contains,Find, and many more. The first dependency I add to most projects. - elliotchance/pie — Type-safe utility library for slices and maps with a focus on performance.
- cornelk/hashmap — Lock-free thread-safe hashmap optimized for read-heavy workloads.
- jinzhu/copier — Copy values between structs, including unrelated types with matching field names.
- google/go-cmp — Deep comparison of Go values. The right tool for assertions in tests; far better than
reflect.DeepEqualerror messages. - spf13/cast — Safe type conversions when interface{} payloads need coaxing into concrete types.
SQL & Databases
- volatiletech/sqlboiler — Generates a Go ORM tailored to your existing schema. Database-first, not model-first.
- noborus/trdsql — CLI tool that runs SQL queries against CSV, JSON, YAML, LTSV, and TBLN files. Surprisingly handy for data wrangling.
- rubenv/sql-migrate & pressly/goose — Two solid options for SQL schema migrations. Goose supports Go-based migrations too.
- simukti/sqldb-logger — Wraps any
*sql.DBdriver with structured query logging — no code changes to existing usage.
Web & API
- a-h/templ — Type-safe HTML templating with Go syntax. Plays nicely with HTMX-style stacks.
- angelofallars/htmx-go — Server-side helpers for building HTMX projects.
- swaggo/swag — Generates Swagger 2.0 docs from Go annotations. Pragmatic if your team lives in Swagger UI.
- unrolled/render — One-stop response rendering: JSON, XML, binary, HTML templates.
- imroc/req — Ergonomic HTTP client with sensible defaults for most everyday use cases.
- dghubble/gologin — Drop-in OAuth1/OAuth2 login handlers for common providers.
Concurrency & Background Work
- hibiken/asynq — Reliable distributed task queue backed by Redis. Solid choice when you outgrow in-memory pools.
- sourcegraph/conc — Structured concurrency primitives that make goroutine lifecycles explicit and panic-safe.
- Jeffail/tunny & alitto/pond — Goroutine worker pools when you want bounded parallelism without rolling your own semaphores.
- go-co-op/gocron — Fluent in-process cron scheduling for Go functions.
Terminal UIs & CLI
- charmbracelet/huh — Forms and prompts that look great out of the box.
- pterm/pterm — Charts, tables, trees, progress bars — a Swiss army knife for prettier console output.
- gdamore/tcell — Lower-level terminal control, an alternative to termbox.
- fatih/color — The simplest way to add ANSI colors.
- jedib0t/go-pretty — Best-in-class table renderer, plus list/progress helpers.
- schollz/progressbar, vbauerster/mpb, gosuri/uiprogress — Three takes on progress bars, from minimalist to multi-bar.
- bitfield/script — Pipe-style API for shell-like scripting in Go. Surprisingly fun for one-off tools.
- charmbracelet/glamour — Stylish Markdown rendering in the terminal. Perfect for CLIs that surface help, READMEs, or AI output without losing formatting.
SSH, Git & System
- melbahja/goph — Ergonomic SSH client wrapping
golang.org/x/crypto/ssh. - go-git/go-git — Pure-Go Git implementation. No
gitbinary required. - spf13/afero — Filesystem abstraction so file I/O can be tested with an in-memory backend.
- minio/selfupdate — Self-updating binaries from arbitrary release endpoints.
Configuration
- spf13/viper — The big one: layered config from files, env, flags, remote sources.
- caarlos0/env — Zero-dependency env-into-struct parser. My default for small services.
- ilyakaznacheev/cleanenv — Minimalist environment + file config reader.
Notifications
- nikoksr/notify — Unified API to send messages across many providers (Slack, Telegram, email, etc.).
- atc0005/go-teams-notify — Focused Microsoft Teams webhook client.
Testing & Fake Data
- testcontainers-go — Spin up real Postgres/Redis/Kafka containers from
go test. The cure for over-mocked integration tests. - brianvoe/gofakeit — Realistic fake data generator: names, addresses, credit cards, JSON payloads.
- Learn Go with Tests — Not a module, but the resource I send to anyone learning idiomatic Go testing.
Images & Media
- davidbyttow/govips — CGO bindings for libvips. Fast, low-memory image processing (resize, crop, format conversion) for thumbnail pipelines and high-throughput services.
Charts & Local Docs
- go-analyze/charts — Server-side chart rendering when you need PNG/SVG output.
- mdaverde — Build your Golang package docs locally — A handy reminder for serving
pkgsiteagainst your own modules.
This list is intentionally opinionated and incomplete. Some of these will end up in production code, others I’ll try once and discard — that’s the point of keeping a toolbox. If something here changes how I build, it’ll show up in a follow-up post with real-world notes.