IPv6 ULA Generator
Generate a random IPv6 Unique Local Address (ULA) per RFC 4193 — an fd00::/8 prefix with a random 40-bit Global ID and your chosen 16-bit Subnet ID, as both a /64 address and the /48 site prefix.
Input
16-bit subnet, 1–4 hex digits (0000–ffff). The 40-bit Global ID above it is generated randomly on each run.
Output
A /64 network: fd + random Global ID + your Subnet ID, with a zero interface identifier.
The /48 site prefix (fd + Global ID) — carve your own 65,536 subnets out of it.
Guides
What this tool does
It generates an IPv6 Unique Local Address (ULA) as described by RFC 4193. ULAs are the IPv6 equivalent of private IPv4 ranges like 10.0.0.0/8 or 192.168.0.0/16: routable inside your own network or between sites you control, but never advertised on the public internet. You get back a ready-to-use /64 address and the /48 site prefix it belongs to.
Anatomy of a ULA
A locally-assigned ULA is built from four parts, 128 bits in total:
- Prefix
fd(8 bits). ULAs live infc00::/7. The 8th bit (the "L" bit) is set to 1 for locally-assigned prefixes, which fixes the first byte atfd— so every address this tool produces startsfd00::/8. - Global ID (40 bits). A pseudo-random value that makes your prefix statistically unique, so two networks that merge later almost certainly won't clash. This tool draws 40 fresh random bits for it on every run.
- Subnet ID (16 bits). Your own subnet number within the site — from
0000toffff, giving you 65,536 subnets. This is the one value you control here. - Interface ID (64 bits). Identifies a host on the subnet. The generated address leaves this as zero, so what you get is a
/64network prefix (…::/64) ready for hosts to fill in.
The first 48 bits (fd + Global ID) are the site prefix, shown separately as the /48. Assign yourself one /48 and you can number every subnet in your organisation underneath it.
How to use it
Enter a Subnet ID (1–4 hexadecimal digits — the default 0001 is fine for a first subnet) and click Generate. Each click produces a new random Global ID, so click again for a different prefix. Copy the /48 to record as your site's block, then use /64s beneath it — one per VLAN or segment — by varying the Subnet ID.
About the Global ID and randomness
RFC 4193 §3.2.2 describes deriving the Global ID from a SHA-1 hash of a timestamp and an EUI-64 identifier. That algorithm exists purely to spread assignments evenly; a directly random 40-bit value reaches the same goal, which is why many real-world ULA generators (and this one) simply use randomness. Pick a Global ID once and keep it — it's meant to be stable for the life of your network.
Privacy
Everything is generated in your browser with Math.random(). No address is sent to a server, logged, or stored, and nothing links a generated prefix back to you. Because Math.random() is not a cryptographic source, treat these prefixes as private-network identifiers, not secrets.