garble
brew install garble
v0.16.0_2
BSD-3-Clause
Obfuscate Go builds
28
30-day installs · #5918
97
90-day · #5633
499
365-day · #5118
5.6k
★ GitHub stars · updated 2mo ago
Build dependencies
GitHub topics
binary
build
code-obfuscator
golang
obfuscation
Links
- https://github.com/burrowers/garble
- GitHub: burrowers/garble
- Brew formula source: Formula/g/garble.rb
Raw metadata
{
"aliases": [],
"alternatives": [],
"build_dependencies": [
"go"
],
"categories": [],
"caveats": null,
"conflicts_with": [],
"dependencies": [],
"deprecated": 0,
"deprecation_reason": null,
"desc": "Obfuscate Go builds",
"disable_reason": null,
"disabled": 0,
"enrichment_fetched_at": "2026-06-20T23:37:54+00:00",
"first_seen": "2026-06-20T23:34:18+00:00",
"full_name": "garble",
"github_default_branch": "master",
"github_last_commit_at": "2026-06-08T13:03:40Z",
"github_readme_excerpt": "# garble\n\n\tgo install mvdan.cc/garble@latest # or @master\n\nObfuscate Go code by wrapping the Go toolchain. Requires Go 1.26 or later.\n\n\tgarble build [build flags] [packages]\n\nThe tool also supports `garble test` to run tests with obfuscated code,\n`garble run` to obfuscate and execute simple programs,\n`garble reverse` to de-obfuscate text such as stack traces,\nand `garble bug` to file a pre-filled bug report.\nRun `garble -h` to see all available commands and flags.\n\n### Purpose\n\nProduce a binary that works as well as a regular build, but that has as little\ninformation about the original source code as possible.\n\nThe tool is designed to be:\n\n* Coupled with `cmd/go`, to support modules and build caching\n* Deterministic and reproducible, given the same initial source code\n* Reversible given the original source, to de-obfuscate panic stack traces\n\n### Mechanism\n\nThe tool wraps calls to the Go compiler and linker to transform the Go build, in\norder to:\n\n* Replace identifiers and package paths with short base64 hashes\n* Replace position information with short base64 hashed filenames\n* Remove all [build](https://go.dev/pkg/runtime/#Version), [module](https://go.dev/pkg/runtime/debug/#ReadBuildInfo), and debug information\n* [Obfuscate literals](#literal-obfuscation), if the `-literals` flag is given\n* Remove [extra information](#tiny-mode), if the `-tiny` flag is given\n\nBy default, the tool obfuscates all the packages being built.\nYou can manually specify which packages to obfuscate via `GOGARBLE`,\na comma-separated list of glob patterns matching package path prefixes.\nThis format is borrowed from `GOPRIVATE`; see `go help private`.\n\nNote that commands like `garble build` will use the `go` version found in your\n`$PATH`. To use different versions of Go, you can [use `GOTOOLCHAIN`](https://go.dev/doc/toolchain).\n\n### Use cases\n\nA common question is why a code obfuscator is needed for Go, a compiled language.\nGo binaries include a surprising amount of information about the orig",
"github_repo": "burrowers/garble",
"github_stars": 5560,
"github_topics": [
"binary",
"build",
"code-obfuscator",
"golang",
"obfuscation"
],
"homepage": "https://github.com/burrowers/garble",
"homepage_og_description": null,
"homepage_og_image": null,
"homepage_title": null,
"installs_30d": 28,
"installs_365d": 499,
"installs_90d": 97,
"keg_only": 0,
"keg_only_reason": null,
"last_seen": "2026-06-20T23:34:18+00:00",
"license": "BSD-3-Clause",
"llm_generated_at": null,
"llm_model": null,
"name": "garble",
"oldnames": [],
"one_liner": null,
"optional_dependencies": [],
"rank_30d": 5918,
"rank_365d": 5118,
"rank_90d": 5633,
"raw_hash": "5df81f49a9280281",
"recommended_dependencies": [],
"revision": 2,
"ruby_source_path": "Formula/g/garble.rb",
"tap": "homebrew/core",
"test_dependencies": [
"go"
],
"uses_from_macos": [],
"version_head": "HEAD",
"version_stable": "0.16.0",
"versioned_formulae": [],
"why_use_this": null
}