Conversion target survey · go2cs

The 100 Go modules everybody depends on

Ranked by how many other modules directly require them, from a full crawl of the Go module graph — then graded for whether a Go→C# transpiler can actually chew on them. The Go standard library is absent by construction: stdlib packages never appear in a go.mod.

source shape-of-go exported graph snapshot 2026-08-06 edges direct requires only, // indirect excluded source scan module zips from proxy.golang.org, 2026-08-28
2,638,112
modules in graph
9,443,537
direct dependency edges
~1,192,368
modules that import anything
180,094
ever imported (6.8%)
How to read the share column. It is the percentage of the ~1.19 million modules that declare at least one dependency — the population that could plausibly have imported the package. 54.7% of all Go modules declare no dependencies at all, so measuring against the full 2.6M would halve every number for no reason. Hover a bar to see both figures and the raw dependent count. Bars are square-root scaled: the distribution is a power law, and a linear bar renders everything past rank 5 invisible.
Four of these are already partly done. go2cs converts the Go standard library, and the standard library vendors a slice of four golang.org/x modules — so x/crypto, x/net, x/sys and x/text already exist under src/core/vendor. Only the vendored subset, though: 8 of 56 packages, 7 of 44, 1 of 14 and 4 of 63 respectively. Rows carry a go2cs n/N badge with the exact count.

Transpilation grade

A
Compact, pure Go, few dependencies

Start here. No cgo, no assembly, under ~20k lines, six or fewer direct dependencies.

B
Pure Go, larger or reflection-heavy

Fully transpilable, but big surface area or heavy reflection/unsafe. Good stress tests.

C
Runtime & platform substrate

Assembly with no pure-Go fallback, or //go:linkname into the runtime. Wants hand-written .NET shims, not transpilation.

D
cgo required to build

Core files import "C" with no build-tag escape. Not transpilable as-is.

Top 100 modules by direct dependents

Hover or focus a module path for its description, stars, license and a link to the repository — the module name itself opens the repository in a new tab. Hover a share bar for its raw counts. Click any column heading to sort.

#ModuleDependents Share of importersTierkLOC DepsSignals
1github.com/stretchr/testify — A toolkit with common assertions and mocks that plays nicely with the standard library
v1.12.1 · go 1.17
346,205A14.42reflect×10
2github.com/google/uuid — Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services
v1.6.0 · go —
146,611A1.30
3github.com/spf13/cobra — A Commander for modern Go CLI interactions
v1.10.2 · go 1.15
137,951A6.94
4golang.org/x/crypto x — Go supplementary cryptography libraries Already in go2cs: 8 of 56 packages — the subset the Go standard library vendors, converted under src/core/vendor.
v0.55.0 · go 1.25.0
133,882B45.13go2cs 8/56asm×15
5google.golang.org/grpc — The Go language implementation of gRPC. HTTP/2 based RPC
v1.83.2 · go 1.25.0
131,298B123.424reflect×34generics×5
6google.golang.org/protobuf — Go support for Google's protocol buffers
v1.36.12 · go 1.23
114,088B281.02reflect×154
7github.com/pkg/errors — Simple error handling primitives
v0.9.1 · go —
109,156A0.50
8github.com/sirupsen/logrus — Structured, pluggable logging for Go
v1.10.2 · go 1.23
96,502A3.42
9golang.org/x/net x — Go supplementary network libraries Already in go2cs: 7 of 44 packages — the subset the Go standard library vendors, converted under src/core/vendor.
v0.58.0 · go 1.25.0
94,915C94.84go2cs 7/44cgo·gatedasm×6linkname×4generics×7
10github.com/spf13/viper — Go configuration with fangs
v1.21.0 · go 1.23.0
89,030B3.210
11github.com/gin-gonic/gin — Gin is a high-performance HTTP web framework written in Go. It provides a Martini-like API but with significantly better performance—up to 40 times faster—thanks…
v1.12.0 · go 1.25.0
87,344B7.815
12go.uber.org/zap — Blazing fast, structured, leveled logging in Go
v1.28.0 · go 1.19
78,065A9.34
13gopkg.in/yaml.v3 — YAML support for the Go language
v3.0.1 · go —
70,816A11.30
14github.com/prometheus/client_golang — Prometheus instrumentation library for Go applications
v1.24.1 · go 1.25.0
70,524B17.712cgo·gated
15k8s.io/apimachinery — Generic API machinery — schemes, serialization and shared types for Kubernetes
v0.37.0 · go 1.26.0
67,827B72.620reflect×41generics×28
16golang.org/x/sync x — concurrency primitives
v0.22.0 · go 1.25.0
65,143A0.60
17github.com/joho/godotenv — A Go port of Ruby's dotenv library (Loads environment variables from .env files)
v1.5.1 · go 1.12
63,668A0.60
18github.com/golang/protobuf — Go support for Google's protocol buffers
v1.5.4 · go 1.17
63,567A16.32reflect×14
19github.com/gorilla/mux — Package gorilla/mux is a powerful HTTP router and URL matcher for building Go web servers with
v1.8.1 · go 1.20
62,308A2.20
20golang.org/x/sys x — Go packages for low-level interaction with the operating system Already in go2cs: 1 of 14 packages — the subset the Go standard library vendors, converted under src/core/vendor.
v0.47.0 · go 1.25.0
61,998C235.70go2cs 1/14cgo·gatedasm×44linkname×17unsafe
21k8s.io/client-go — Go client for Kubernetes
v0.37.0 · go 1.26.0
60,488B278.226reflect×24generics×19
22gopkg.in/yaml.v2 — YAML support for the Go language
v2.4.0 · go 1.15
60,421A9.61
23github.com/lib/pq — Go PostgreSQL driver for database/sql
v1.12.3 · go 1.21
58,657A10.50
24github.com/gorilla/websocket — Package gorilla/websocket is a fast, well-tested and widely used WebSocket implementation for Go
v1.5.3 · go 1.12
56,912A4.70
25k8s.io/api — The canonical location of the Kubernetes API definition
v0.37.0 · go 1.26.0
55,201B437.22reflect×60
26gorm.io/gorm — The fantastic ORM library for Golang, aims to be developer friendly
v1.31.2 · go 1.18
54,420A15.53reflect×30
27github.com/google/go-cmp — Package for comparing Go values in tests
v0.7.0 · go 1.21
53,071A6.60reflect×17
28github.com/spf13/pflag — Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags
v1.0.10 · go 1.12
50,345A6.30
29golang.org/x/text x — Go text processing support Already in go2cs: 4 of 63 packages — the subset the Go standard library vendors, converted under src/core/vendor.
v0.41.0 · go 1.25.0
47,490B540.71go2cs 4/63cgo·gatedreflect×18
30golang.org/x/oauth2 x — provides support for making OAuth2 authorized and authenticated HTTP requests, as specified in RFC 6749
v0.36.0 · go 1.25.0
46,878A6.61
31github.com/go-sql-driver/mysql — Go MySQL Driver is a MySQL driver for Go's (golang) database/sql package
v1.10.0 · go 1.24.0
43,731A6.61
32github.com/onsi/gomega — Ginkgo's Preferred Matcher Library
v1.43.0 · go 1.25.0
38,035A13.64reflect×45
33golang.org/x/exp x — Experimental and deprecated packages
v0.0.0-20260824195058-e88cd73687aa · go 1.26.0
36,381B24.74cgo·gatedlinkname×1generics×8
34github.com/fatih/color — Color package for Go (golang)
v1.19.0 · go 1.25.0
35,400A0.93
35github.com/fsnotify/fsnotify — Cross-platform filesystem notifications for Go
v1.10.1 · go 1.23
33,669B4.51
36golang.org/x/tools x — Go tooling: gopls, static analysis passes and AST/type utilities
v0.49.0 · go 1.25.0
32,716C155.56linkname×4reflect×45generics×58
37go.opentelemetry.io/otel — OpenTelemetry Go API and SDK
v1.46.0 · go 1.25.0
32,250B794.48reflect×14
38github.com/rs/zerolog — Zero Allocation JSON Logger
v1.35.1 · go 1.23
32,182A8.74
39go.mongodb.org/mongo-driver — The Official Golang driver for MongoDB
v1.17.9 · go 1.18
30,325B93.610cgo·gatedreflect×38
40github.com/go-playground/validator/v10 — Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving
v10.30.3 · go 1.25.0
29,707B40.77reflect×32
41sigs.k8s.io/controller-runtime — Repo for the controller-runtime subproject of kubebuilder (sig-apimachinery)
v0.24.1 · go 1.26.0
29,258B31.826reflect×16generics×24
42golang.org/x/time x — Go supplementary time packages
v0.15.0 · go 1.25.0
29,098A0.50
43github.com/mattn/go-sqlite3 — sqlite3 driver for go using database/sql
v1.14.50 · go 1.21
28,679D6.70cgounsafe
44google.golang.org/api — Auto-generated Google APIs for Go
v0.294.0 · go 1.25.0
28,428B6067.518
45github.com/golang/mock — GoMock is a mocking framework for the Go programming language
v1.6.0 · go 1.11
27,754A5.32reflect×25
46github.com/aws/aws-sdk-go — AWS SDK for Go v1 — end-of-support, superseded by aws-sdk-go-v2
v1.55.8 · go 1.19
27,723B5935.01reflect×30
47go.opentelemetry.io/otel/trace — OpenTelemetry Go API and SDK
v1.46.0 · go 1.25.0
26,889A4.13
48github.com/BurntSushi/toml — TOML parser for Golang with reflection
v1.6.0 · go 1.18
26,023A5.80
49golang.org/x/term x — Go terminal and console support
v0.45.0 · go 1.25.0
25,963A1.41
50github.com/davecgh/go-spew — Implements a deep pretty printer for Go data structures to aid in debugging
v1.1.1 · go —
25,948A2.10
51github.com/golang-jwt/jwt/v5 — Go implementation of JSON Web Tokens (JWT)
v5.3.1 · go 1.21
24,365A2.80
52gorm.io/driver/postgres — GORM PostgreSQL driver
v1.6.2 · go 1.25.0
24,269A1.32
53github.com/jackc/pgx/v5 — PostgreSQL driver and toolkit for Go
v5.10.0 · go 1.25.0
23,676B39.06reflect×13generics×8
54github.com/aws/aws-sdk-go-v2 — AWS SDK for the Go programming language
v1.45.1 · go 1.24
23,210A12.61
55github.com/urfave/cli/v2 — A declarative, simple, fast, and fun package for building command line tools in Go
v2.27.7 · go 1.18
23,077A9.84
56github.com/go-chi/chi/v5 — lightweight, idiomatic and composable router for building Go HTTP services
v5.3.2 · go 1.23
23,068A4.40
57go.opentelemetry.io/otel/sdk — OpenTelemetry Go API and SDK
v1.46.0 · go 1.25.0
22,605B6.710
58github.com/gogo/protobuf — [Deprecated] Protocol Buffers for Go with Gadgets
v1.3.2 · go 1.15
22,341B448.40reflect×93
59sigs.k8s.io/yaml — A better way to marshal and unmarshal YAML in Golang
v1.6.0 · go 1.22
22,127A2.24
60github.com/json-iterator/go — A high-performance 100% compatible drop-in replacement of "encoding/json"
v1.1.12 · go 1.12
22,105B9.85unsafereflect×11
61github.com/aws/aws-sdk-go-v2/config — AWS SDK for the Go programming language
v1.33.1 · go 1.24
21,818B7.38
62github.com/redis/go-redis/v9 — Redis client for Go
v9.22.0 · go 1.24
21,512B61.86
63github.com/dgrijalva/jwt-go — Archived JWT implementation, succeeded by golang-jwt/jwt
v3.2.0+incompatible · go —
20,971A1.80
64gorm.io/driver/mysql — GORM MySQL driver
v1.6.0 · go 1.18
20,825A1.12
65google.golang.org/genproto — Generated code for Google Cloud client libraries
v0.0.0-20260825221802-da73d73af1c5 · go 1.25.0
20,323B856.025reflect×674
66k8s.io/utils — Non-Kubernetes-specific utility libraries which are consumed by multiple projects
v0.0.0-20260707023825-cf1189d6abe3 · go 1.25
20,249A9.52generics×5
67github.com/mitchellh/mapstructure — Go library for decoding generic map values into native Go structures and vice versa
v1.5.0 · go 1.14
20,194A1.90
68github.com/jmoiron/sqlx — general purpose extensions to golang's database/sql
v1.4.0 · go 1.10
20,185A3.03
69github.com/labstack/echo/v4 — High performance, minimalist Go web framework
v4.15.4 · go 1.25.0
19,770A11.06
70github.com/mitchellh/go-homedir — Go library for detecting and expanding the user's home directory without cgo
v1.1.0 · go —
19,244A0.20
71github.com/onsi/ginkgo/v2 — A Modern Testing Framework for Go
v2.32.1 · go 1.25.0
18,983B22.510generics×6
72github.com/go-logr/logr — A simple logging interface for Go
v1.4.4 · go 1.18
18,558A3.00
73k8s.io/klog/v2 — Leveled execution logs for Go, forked from golang/glog
v2.140.0 · go 1.21
17,939A7.61
74github.com/miekg/dns — Full-featured DNS library in Go
v1.1.73 · go 1.25.0
17,767B22.33
75github.com/charmbracelet/lipgloss — Style definitions for nice terminal layouts
v1.1.0 · go 1.18
17,554A5.96
76github.com/prometheus/common — Go libraries shared across Prometheus components and libraries
v0.70.1 · go 1.25.0
17,169B9.113
77github.com/go-redis/redis/v8 — Redis client for Go — v8 line, superseded by redis/go-redis v9
v8.11.5 · go 1.17
17,158A15.64
78github.com/docker/docker — The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems
v28.5.2+incompatible · go —
16,920D197.30cgoasm×1reflect×17
79github.com/ethereum/go-ethereum — Go implementation of the Ethereum protocol
v1.17.5 · go 1.24.0
16,546B266.579cgo·gatedasm×8linkname×1reflect×56generics×21
80github.com/mattn/go-isatty — Reports whether a file descriptor refers to a terminal
v0.0.24 · go 1.20
16,480A0.21
81github.com/swaggo/swag — Automatically generate RESTful API documentation with Swagger 2.0 for Go
v1.16.6 · go 1.18
16,377B8.37
82github.com/olekukonko/tablewriter — ASCII table in golang
v1.1.4 · go 1.21
16,330B16.47
83github.com/spf13/cast — safe and easy casting from one type to another in Go
v1.10.0 · go 1.21.0
16,258A1.71
84gopkg.in/natefinch/lumberjack.v2 — lumberjack is a log rolling package for Go
v2.2.1 · go 1.13
16,234A0.60
85github.com/charmbracelet/bubbletea — A powerful little TUI framework
v1.3.10 · go 1.24.0
15,960B4.88
86github.com/rs/cors — Go net/http configurable handler to handle CORS requests
v1.11.1 · go 1.13
15,765A0.70
87github.com/onsi/ginkgo — A Modern Testing Framework for Go
v1.16.5 · go 1.16
15,413A12.25
88github.com/golang-jwt/jwt/v4 — Go implementation of JSON Web Tokens (JWT)
v4.5.2 · go 1.16
15,328A2.60
89github.com/gofiber/fiber/v2 — Express inspired web framework written in Go
v2.52.15 · go 1.20
15,210B41.08cgo·gatedunsafereflect×26
90github.com/klauspost/compress — Optimized Go Compression Packages
v1.19.2 · go 1.24
15,187B48.70asm×13
91github.com/tidwall/gjson — Get JSON values quickly - JSON parser for Go
v1.19.0 · go 1.23
14,751B3.62unsafe
92github.com/ghodss/yaml — A better way to marshal and unmarshal YAML in Golang
v1.0.0 · go —
14,737A0.80
93github.com/gorilla/handlers — Package gorilla/handlers is a collection of useful middleware for Go HTTP services & web applications
v1.5.2 · go 1.20
14,580A1.21
94github.com/jinzhu/gorm — GORM v1 — superseded by gorm.io/gorm (v2)
v1.9.16 · go 1.12
14,516B7.07reflect×17
95golang.org/x/image x — Go supplementary image libraries
v0.45.0 · go 1.25.0
14,045C164.52asm×1
96modernc.org/sqlite — Package sqlite is a CGo-free port of SQLite/SQLite3. SQLite is an in-process implementation of a self-contained, serverless, zero-configuration, transactional…
v1.57.0 · go 1.25.0
13,829B1590.35unsafereflect×24
97go.uber.org/goleak — Goroutine leak detector
v1.3.0 · go 1.20
13,673A0.81
98github.com/dustin/go-humanize — Go Humans! (formatters for units to human friendly sizes)
v1.0.1 · go 1.16
13,657A1.10
99github.com/PuerkitoBio/goquery — jQuery-style HTML document traversal and manipulation
v1.13.0 · go 1.25.0
13,653A2.82
100github.com/prometheus/client_model — Generated protocol buffer data model for Prometheus metrics
v0.6.2 · go 1.22.0
13,597A1.41

Collapsed by source repository — top 40

Major-version suffixes and submodules folded together, so aws-sdk-go-v2's 384 service modules and OpenTelemetry's 36 count once. Useful when the conversion unit is a repository rather than a module path.

#Repository Summed dependentsShareModules
1github.com/stretchr/testify346,20529.04%1
2go.opentelemetry.io/otel147,80012.40%36
3github.com/google/uuid146,61112.30%1
4github.com/spf13/cobra137,95111.57%1
5google.golang.org/grpc135,34911.35%7
6golang.org/x/crypto134,35311.27%2
7gopkg.in/yaml131,57211.03%3
8github.com/aws/aws-sdk-go-v2131,46811.03%384
9google.golang.org/protobuf114,0979.57%3
10github.com/pkg/errors109,1569.15%1
11github.com/sirupsen/logrus96,5028.09%1
12golang.org/x/net94,9157.96%1
13github.com/spf13/viper89,1197.47%2
14github.com/gin-gonic/gin87,3447.33%1
15go.uber.org/zap78,5586.59%2
16github.com/prometheus/client_golang70,5855.92%2
17go.opentelemetry.io/collector69,2835.81%100
18k8s.io/apimachinery67,8275.69%1
19golang.org/x/sync65,1435.46%1
20github.com/joho/godotenv63,6685.34%1
21github.com/golang/protobuf63,5675.33%1
22github.com/gorilla/mux62,3085.23%1
23golang.org/x/sys61,9985.20%1
24github.com/open-telemetry/opentelemetry-collector-contrib61,1895.13%355
25k8s.io/client-go60,4885.07%1
26gorm.io/driver59,8145.02%8
27github.com/lib/pq58,6574.92%1
28github.com/gorilla/websocket56,9124.77%1
29k8s.io/api55,2014.63%1
30gorm.io/gorm54,4204.56%1
31github.com/google/go-cmp53,0714.45%1
32github.com/spf13/pflag50,3454.22%1
33github.com/golang-jwt/jwt50,2384.21%3
34golang.org/x/text47,4903.98%1
35golang.org/x/oauth246,8783.93%1
36github.com/go-sql-driver/mysql43,7313.67%1
37cloud.google.com/go41,6033.49%156
38github.com/onsi/gomega38,0353.19%1
39github.com/urfave/cli37,2803.13%3
40google.golang.org/genproto37,0343.11%5

Method & caveats

Where the ranking comes from

The shape-of-go project crawled index.golang.org for every module version published since April 2019, fetched each module's latest go.mod from proxy.golang.org, and parsed the require directives into a directed graph. This page reads that project's exported search.json — no part of the crawl was re-run.

Edges are direct requires only. Requires marked // indirect are excluded, so a count reflects modules that deliberately chose the dependency, not transitive pull-through.

Where the grades come from

Each module's latest release zip was downloaded and statically scanned. Counts exclude _test.go files and anything under testdata/, vendor/, or a _-prefixed directory — the same paths the Go toolchain ignores.

A cgo flag is only a blocker when an import "C" file would compile on a plain linux or windows build. Files behind an opt-in build tag (gssapi, journald, icu) or a minority-OS suffix are marked cgo·gated and do not affect the grade.

Where the descriptions come from

The hover text is each project's own repository description, resolved through deps.dev and GitHub — 86 of 100 verbatim. Thirteen were rewritten because the repository sets no description, or because the upstream text trailed off into a URL. One (golang.org/x/oauth2) uses its package doc comment.

Star counts are a rough popularity cross-check only. They disagree sharply with dependent counts for the golang.org/x mirrors, which almost nobody stars and almost everybody imports.

What go2cs already has

Coverage was read from go2cs/src/core/vendor, which mirrors the Go standard library's own src/vendor/golang.org/x tree. Converted package directories were matched against the full package list of each published module, so the counts are subset-of-module, not subset-of-vendor.

Nothing else in the top 100 is converted: src/core/vendor is the only third-party tree in the repository. The four marked modules stay on the list because the unconverted remainder is the overwhelming majority — x/crypto's ssh, acme, bcrypt and openpgp packages are all still open.

What to distrust

Counts are per module path. yaml.v2 and yaml.v3 rank separately though they are one project; the repository table above corrects for this.

A go.mod require is not an import. A module can require a dependency only one of its packages uses, and test-only dependencies count the same as production ones — which is most of why testify tops the list.

kLOC is raw line count of non-test .go files, blanks and comments included. Generated API surface (google.golang.org/api, aws-sdk-go) inflates it enormously.