A Python library for representing and manipulating network addresses.

Provides support for:

Layer 3 addresses

  • IPv4 and IPv6 addresses, subnets, masks, prefixes
  • iterating, slicing, sorting, summarizing and classifying IP networks
  • dealing with various ranges formats (CIDR, arbitrary ranges and globs, nmap)
  • set based operations (unions, intersections etc) over IP addresses and subnets
  • parsing a large variety of different formats and notations
  • looking up IANA IP block information
  • generating DNS reverse lookups
  • supernetting and subnetting

Layer 2 addresses

  • representation and manipulation MAC addresses and EUI-64 identifiers
  • looking up IEEE organisational information (OUI, IAB)
  • generating derived IPv6 addresses


For details on the latest updates and changes, see What’s new in netaddr 0.7.20


This software is released under the liberal BSD license.

See the License and Copyright for full text.


  • Python 2.5.x through 3.5.x
  • IPython (for netaddr interactive shell)


See Installing netaddr for details.


This library has comprehensive docstrings and a full set of project documentation (including tutorials):


netaddr requires py.test (

To run the test suite, clone the repository and run:

python test

If any of the tests fail, please help the project’s user base by filing bug reports on the netaddr issue tracker:


Share and enjoy!