The Every UUID Website Explained
Based on The PrimeTime's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.
The site browses the full valid UUID space by using a reversible mapping from an integer index to UUID bits, enabling consistent random-looking ordering.
Briefing
A new “every UUID” website turns the UUID space into a browsable, searchable list by generating UUIDs in a randomized-looking but fully consistent order—without relying on an impossible-to-render trillion-pixel DOM. The core idea is to treat each UUID as the output of a reversible mapping from an integer index, so the site can both (1) walk through every valid UUID exactly once and (2) jump directly to a specific UUID (or a matching pattern) during search.
UUIDs are 128-bit identifiers, but only a subset of bit patterns are valid UUID versions and variants. The project focuses on UUID v4-style formatting, where 4 bits encode the version and 2–3 bits encode the variant. With those reserved bits fixed, the remaining entropy is treated as 122 bits. The site then needs an ordering strategy: it can’t just list UUIDs sequentially, and it can’t shuffle them naively because search would break. The solution is to generate UUIDs via a reversible “scrambling” function so that an index can be transformed into a UUID in a way that can be undone.
On the engineering side, the biggest constraint isn’t math—it’s browser rendering. Rendering a list with one row per UUID would require an astronomically tall page (on the order of trillions of pixels). Browsers also cap maximum scroll positions, so the site avoids “real scrolling.” Instead, it fixes the page height to the viewport, tracks a virtual scroll position as a large integer, and renders only the UUID rows near the current position plus a buffer. That keeps the UI responsive while still letting users conceptually traverse the entire UUID space.
For ordering, a linear congruential generator (LCG) was tried first, but it produced patterns—especially in higher bits—making the output look insufficiently random. The approach pivoted to a Feistel network cipher, chosen because it’s reversible by design. The index’s 122 bits are split and processed through multiple rounds using XOR and a round function, producing scrambled bits that still allow the original index to be recovered. After scrambling, the bits must be carefully “bit-smooshed” into the UUID v4 layout: the version nibble must be 4, and the variant nibble must be one of 8, 9, A, or B. The transcript emphasizes that this conversion is bug-prone, but once done it yields UUIDs that look random while remaining consistent for any given position.
Search is the next hard problem. With UUIDs no longer in a simple order, the site can’t rely on “scroll until you find it.” Instead, it unscrambles a candidate UUID to recover its index, then jumps to the nearest matching position. Substring search is more complicated: the site generates valid UUIDs that contain the user’s search string by analyzing where characters could legally appear in the UUID’s hex groups, accounting for fixed dashes and the constraints imposed by version/variant bits. The final method doesn’t enumerate every possible match (which would be effectively unbounded), but it generates a practical set by filling the remaining digits around promising patterns and selecting matches closest to the current position.
The result is a functional “all UUIDs in one place” browser with favorites and copy tools, plus a search experience that’s good enough to cycle through matching candidates. The project ends with a wish list—more social features like trending or friend-favorited UUIDs—and a lingering open question about whether deeper cryptanalysis could make substring search more complete in a shuffled UUID ordering.
Cornell Notes
The site makes the entire valid UUID space browsable by mapping each UUID to an integer index through a reversible scrambling process. That reversibility lets the app jump to a specific UUID (or approximate location) even though the displayed order looks random. Browser limits prevent rendering an astronomically tall list, so the UI uses “virtual scrolling”: it tracks scroll position as a large integer and renders only nearby rows. The ordering uses a Feistel cipher to scramble 122 bits of entropy (after fixing UUID v4 version/variant bits), then carefully packs the result into the UUID v4 hex/dash format. Substring search is handled by generating valid UUID candidates that can contain the user’s string while respecting version/variant constraints, then choosing matches near the current position.
Why does the project treat UUID v4 as having 122 bits of entropy instead of the full 128?
What problem makes “just render all UUIDs in a tall list” fail in browsers?
Why was an LCG-style shuffle rejected for the displayed UUID order?
How does a Feistel cipher help with both random-looking ordering and exact reversibility?
How does the site handle substring search when UUIDs are displayed in a scrambled order?
Review Questions
- What constraints do UUID version and variant bits impose on the 122-bit entropy used for scrambling?
- Why does virtual scrolling solve the browser maximum-scroll limitation, and what does the app render instead of the full list?
- How does reversibility (index→UUID and UUID→index) change what kinds of search the site can support?
Key Points
- 1
The site browses the full valid UUID space by using a reversible mapping from an integer index to UUID bits, enabling consistent random-looking ordering.
- 2
UUID v4 validity is enforced by fixing the version nibble to 4 and the variant nibble to one of 8/9/A/B, leaving 122 bits of entropy for scrambling.
- 3
Browser scrolling limits make rendering a physically tall list infeasible, so the UI uses virtual scrolling with a big-integer virtual position and renders only nearby rows.
- 4
LCG-based shuffling produced visible patterns, so the ordering pivoted to a Feistel cipher to achieve both randomness in appearance and invertibility for jumping/search.
- 5
After scrambling, the bits must be carefully packed into the UUID v4 hex-and-dash format; this bit-level “smooshing” is a major source of potential bugs.
- 6
Exact UUID search works by unscrambling a UUID back into its index; substring search generates valid candidates that can contain the user’s string while respecting version/variant constraints.
- 7
Substring search is intentionally approximate: it generates a practical set of matches rather than enumerating every possible UUID containing the string.