Get AI summaries of any video or article — Sign up free
The Every UUID Website Explained thumbnail

The Every UUID Website Explained

The PrimeTime·
6 min read

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.

TL;DR

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?

UUIDs are 128 bits, but UUID v4 formatting reserves bits for the version and variant. The transcript notes that UUID v4s have four reserved bits for the version and two or three bits for the variant. With the chosen variant scheme, the remaining entropy is 122 bits, which becomes the input size for the reversible scrambling step. Those reserved bits are later re-imposed when packing the scrambled output back into the UUID v4 layout (version nibble must be 4; variant nibble must be 8/9/A/B).

What problem makes “just render all UUIDs in a tall list” fail in browsers?

The list would require an impossibly large scrollable height—described as “over a trillion trillion pixels high.” Even if each UUID row were only one pixel tall, the scroll range would exceed browser maximum scroll positions (the transcript suggests this may be tied to 32-bit storage in some browsers). The workaround is virtual scrolling: the page height is fixed to the viewport, the app stores a virtual scroll index as a big integer, and it renders only UUIDs near the current virtual position plus a buffer.

Why was an LCG-style shuffle rejected for the displayed UUID order?

A linear congruential generator can produce pseudo-random sequences, but the transcript reports that the resulting UUIDs didn’t look random enough—especially when inspecting higher bits. Even jumping forward by large steps still produced visible similarity. The project needs an ordering that looks pattern-free to users while still being reversible for search and jumping.

How does a Feistel cipher help with both random-looking ordering and exact reversibility?

A Feistel network is built so that scrambling is invertible: given the scrambled output, the original input can be recovered by running the process backward. The transcript describes splitting the input into two chunks, applying XOR with a round function, swapping halves each round, and then recombining. Because the transformation is reversible, the site can map index→UUID for display and UUID→index for search/jumping.

How does the site handle substring search when UUIDs are displayed in a scrambled order?

For exact UUID search, it can unscramble the UUID to recover its original index and jump there. For substring search, it can’t brute-force all UUIDs. Instead, it analyzes where the search string’s characters could legally fit in the UUID’s hex layout given fixed dashes and constraints from version/variant nibbles. It then generates candidate UUIDs by filling surrounding digits to produce valid UUIDs containing the pattern, and it selects matches closest to the current position to give a usable “random-feeling” browsing experience.

Review Questions

  1. What constraints do UUID version and variant bits impose on the 122-bit entropy used for scrambling?
  2. Why does virtual scrolling solve the browser maximum-scroll limitation, and what does the app render instead of the full list?
  3. How does reversibility (index→UUID and UUID→index) change what kinds of search the site can support?

Key Points

  1. 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. 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. 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. 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. 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. 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. 7

    Substring search is intentionally approximate: it generates a practical set of matches rather than enumerating every possible UUID containing the string.

Highlights

Virtual scrolling replaces real scrolling: the page height stays fixed while a virtual big-integer scroll position determines which UUID rows to render.
A Feistel cipher provides the key property needed for the project: scrambling that can be undone, so UUID→index works for jumping and search.
The ordering isn’t just “random”—it’s random-looking but consistent, because each displayed position corresponds to a deterministic index mapping.
Substring search can’t brute-force the UUID space, so it uses legality constraints (dashes, version nibble, variant nibble) to generate candidate matches containing the typed string.

Topics

  • UUID v4
  • Virtual Scrolling
  • Feistel Cipher
  • Reversible Mapping
  • Substring Search