A browser- and node-compatible library for parsing IPv6 addresses


javascript-ipv6 is a library for manipulating IPv6 addresses in JavaScript.

For node:

var v6 = require('ipv6').v6;
var address = new v6.Address('2001:0:ce49:7601:e866:efff:62c3:fffe');
console.log(address.isValid()); // Prints "true" 
var teredo = address.teredo();
console.log(teredo.client4);    // Prints "" 

For a browser:

<!DOCTYPE html>
<html lang="en">
  <title>Simple IPv6 test</title>
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
  <script type="text/javascript" src="/lib/jsbn.js"></script> 
  <script type="text/javascript" src="/lib/jsbn2.js"></script> 
  <script type="text/javascript" src="/lib/sprintf.js"></script> 
  <script type="text/javascript" src="/ipv6/ipv6.js"></script> 
  <script type="text/javascript">
   $(function() {
    var address6 = new v6.Address('a::b');
  The canonical form of <code>a::b</code> is: <code id="output"></code>
  • Parsing of most IPv6 notations
  • Parsing of IPv6 Addresses and Ports from URLs with v6.Address.fromURL(url)
  • Validity checking
  • Decoding of the Teredo information in an address
  • Whether one address is a valid subnet of another
  • What special properties a given address has (multicast prefix, unique local address prefix, etc.)
  • Number of subnets of a certain size in a given address
  • Display methods
    • Hex, binary, and decimal
    • Canonical form
    • Correct form
    • IPv4-compatible (i.e. ::ffff:
  • Works in node.js and the browser
  • Unit tests with node.js and Mocha
  • Investigate procstreams for the CLI tool
  • Base 64/85 encoding?
  • Reverse lookups? (Whether a domain name has IPv6 glue)
  • Documentation