Skip to content
This repository has been archived by the owner on May 25, 2023. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

netaddr Test Status Go Reference


Please see and the standard library's net/netip.


This is a package containing a new IP address type for Go.

See its docs:


This package is mature, optimized, and used heavily in production at Tailscale. However, API stability is not yet guaranteed.

netaddr is intended to be a core, low-level package. We take code review, testing, dependencies, and performance seriously, similar to Go's standard library or the repos.


See for a long blog post about why we made a new IP address package.

Other links:

  • golang/go#18804 ("net: reconsider representation of IP")
  • golang/go#18757 ("net: ParseIP should return an error, like other Parse functions")
  • golang/go#37921 ("net: Unable to reliably distinguish IPv4-mapped-IPv6 addresses from regular IPv4 addresses")
  • merges net.IPAddr and net.IP (which the Go net package is a little torn between for legacy reasons)


In addition to regular Go tests, netaddr uses fuzzing. The corpus is stored separately, in a submodule, to minimize the impact on everyone else.

To use:

$ git submodule update --init
$ go get -u
$ go-fuzz-build && go-fuzz