burrowers/garble

Obfuscate Go builds

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 15 minutes ago
Added to GitGenius on September 11th, 2026
Created on December 8th, 2019
Open Issues & Pull Requests: 34 (+0)
GitHub issues: Enabled
Number of forks: 372
Total Stargazers: 5,687 (+0)
Total Subscribers: 44 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 3.0 hours
Mean response time: 15.4 days
90th percentile: 52.7 days
Tracked items: 109

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 56% of open issues come from outside the core team, a mix of external reports and the maintainers' own roadmap. Only 6% of issues opened in the past year have been closed. Three people close 92% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 25
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 1,175 days
Stale 30+ days: 23
Stale 90+ days: 22

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (27)
  • enhancement (22)
  • reflection (16)
  • needs info (12)
  • help wanted (2)
  • question (1)
  • upstream (1)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Garble is a code obfuscator that wraps the Go toolchain to produce obfuscated binaries.

The tool addresses the problem that Go binaries retain substantial information about their original source code despite being compiled—names, package paths, and position information persist for reflection, tracing, and debugging purposes. Garble works by intercepting calls to the Go compiler and linker, replacing identifiers and package paths with short base64 hashes, substituting position information with hashed filenames, and stripping build, module, and debug metadata. Optional flags enable literal obfuscation to replace string and other literal expressions with equivalent runtime-computed values, and a tiny mode that further reduces binary size.

Garble suits projects where source code must remain private or proprietary while distributing compiled binaries to end users, or where obfuscated source code serves as an alternative to binary-only library distribution in Go's module ecosystem. The tool is designed to be deterministic and reproducible given the same source, and it includes a reverse command to de-obfuscate stack traces using the original source. Developers should note that obfuscation is opt-in per package via the GOGARBLE environment variable, following the same glob-pattern format as GOPRIVATE, and that the tool requires Go 1.27 or later. Beyond licensing concerns, the tiny mode can reduce binary size by a meaningful margin, and obfuscation has proven useful for working around false-positive malware detection in some cases.

The project maintains active engagement with its issue tracker, addressing user-reported problems and feature requests. Development includes regular refinement of the obfuscation mechanism to handle edge cases in Go's reflection and runtime systems. The maintainers prioritize compatibility with the evolving Go toolchain, ensuring the wrapper approach continues to function across Go versions.