IPv6 ULA Generator

Configuration

Number of prefixes

Paste a real MAC (e.g. from MAC Address Generator) to use it in the Global ID instead of a random identifier — legacy RFC 4193 Method 1. Leave blank for the default.

/64 subnets to list

A /48 holds 65,536 /64 subnets. The first and last are always shown; the rest are a random sample of the space between them.

Each prefix uses a fresh RFC 4193 Global ID, computed as SHA-1(timestamp || a random system identifier), truncated to its low-order 40 bits.

Generated ULA prefixes

Generate to see ULA prefixes here.

About this IPv6 ULA Generator

Generate RFC 4193 Unique Local Address (ULA) /48 prefixes, with a real Global ID computed via SHA-1 from a timestamp and either a random identifier or your own MAC address, plus a sample of /64 subnets within each prefix.

Prefixes are generated locally in your browser: each Global ID is SHA-1(timestamp concatenated with a 64-bit identifier), truncated to its low-order 40 bits, exactly as RFC 4193 Appendix A specifies. By default that identifier is a random 64 bits — enter a real MAC address to use its modified EUI-64 instead, matching the RFC's original hardware-identifier method. Each prefix also lists a sample of its 65,536 possible /64 subnets, always including the first and last. Nothing is uploaded or stored.

FAQ

What is a ULA vs a public IPv6 address?

IPv6's equivalent of private IPv4 ranges like 192.168.x.x — not routable on the public internet, meant for internal networks/VPNs/labs.

What's the difference between fc00::/8 and fd00::/8?

fd00::/8 is for locally-generated ULAs; fc00::/8 was reserved for a centrally-assigned registry that was never implemented — always use fd.

Is the 40-bit Global ID pure random, or derived from MAC+timestamp?

It follows RFC 4193 Appendix A's actual algorithm either way: SHA-1 of a 64-bit timestamp concatenated with a 64-bit identifier, keeping the low-order 40 bits. By default that identifier is Web Crypto random — a browser has no real hardware identifier to hash, which the RFC itself allows as a substitute. Enter a real MAC address in the optional field to use its modified EUI-64 as the identifier instead, matching the RFC's original hardware-based method.

How many /64 subnets can I actually use within a generated /48?

65,536 — the 16 bits left after the /48 prefix become the Subnet ID, so each ULA prefix splits into exactly 2^16 independent /64 networks. This tool lists a sample of them (always including the first and last) rather than all 65,536 at once.

How likely is a collision between two independently generated prefixes?

With 40 random bits, roughly 1 in a trillion — far safer than IPv4 private ranges, which guarantee overlap between any two orgs.

Is a ULA the same as a link-local address (fe80::/10)?

No — link-local auto-configures on every interface and never crosses a router; ULA is manually assigned and routable within your private network.

Is my generated prefix sent anywhere?

No, entirely client-side.

Related tools