About unique local addresses
An IPv6 ULA is intended for local networks, private interconnections and VPNs. The ULA block is fc00::/7; locally assigned prefixes use fd00::/8 with the L bit set to 1. The L = 0 allocation method is not defined by RFC 4193.
Address layout and subnet planning
The layout is fd (8 bits) + random Global ID (40 bits) + Subnet ID (16 bits) + Interface ID (64 bits). A site receives one /48 and can allocate 65,536 /64 subnets. Choose a different Subnet ID for each subnet; interface addresses are assigned separately.
This fd00 generator formats /48 and /64 output in canonical lowercase RFC 5952 notation, suppressing leading zeros and compressing the longest zero run.
Statistically unique, not guaranteed
This RFC 4193 generator uses crypto.getRandomValues with exactly five bytes. It collects no MAC address, clock value or device identifier and sends no generation request. Independent prefixes have 2^40 possible Global IDs. For N interconnected sites, collision probability is approximately 1 − exp(−N² / 2^41); check for conflicts before joining networks. The historical SHA-1 example is not the only generation method.
Routing and operational guidance
ULAs are not globally reachable by default. They are not a firewall or an inherent security boundary. Filter them at site boundaries and keep them out of public DNS. They can coexist with global unicast addresses. Record one site prefix and reuse it rather than regenerating it for a deployed network.