Home/Labs/Snowflake ID Bit Layout
All 280 Labs
INTERACTIVE LAB❄️

Snowflake ID Bit Layout Lab (Interactive)

Compose a 64-bit Snowflake ID from bit fields, decode it, then hit a backwards clock. Allocate the 1+41+10+12 bit budget, mint sortable IDs at up to 4,096 per millisecond, and expose the NTP-backwards hazard.

Twitter Snowflake: 64-Bit ID Composition

Assemble (1+41+10+12)-bit IDs in local memory, exhaust a millisecond's sequence, and survive an NTP step backwards.

64-bit wire format
0 (1 bit sign)timestamp − epoch (41 bits → 2^41ms ≈ 69.7 years)worker 237 (10 bits → 1,024 nodes)seq 000000000000 (12 bits → 4,096/ms)
IDs generated0
This node's ceiling4.096M/s4,096 × 1,000 ms
Cluster ceiling4.19B/s1,024 workers × 4,096/ms
B+Tree insertsappend-onlytime-sorted vs random UUIDv4 page splits

› Idle: generator loaded with dc=7, worker=13.

UUIDv4's 122 random bits make every primary key a coin-flip insert into the InnoDB B+Tree, thrashing pages and wrecking write IOPS. Snowflake keeps uniqueness but restores order: timestamp-first means newer rows land at the tree's right edge. The two hard constraints are worker-ID coordination (ZooKeeper/etcd lease — only 1,024 slots) and monotonic time — a backward NTP jump must spin-wait, or two rows share an ID. UUIDv7 trades bits for portability with the same sorted-prefix idea.

How It Works Under the Hood

Snowflake mints globally unique, roughly sortable IDs with no central coordinator by packing bits: 41 timestamp (about 69 years), 10 worker (1,024 nodes), 12 per-ms sequence (4,096 IDs/ms/node). Because the timestamp occupies the high bits, IDs sort by creation time — ideal for sharded databases. The failure mode is clock skew: if a node's clock steps backwards via NTP it would reissue already-generated IDs, so the generator must spin-wait until time catches up. Assemble IDs from your chosen worker bits, decode them back into fields, and toggle a backwards clock to watch the protective wait engage.

Core Architectural Principles

  • Bit budget 1 sign + 41 ms-timestamp + 10 worker-id + 12 sequence gives 4,096 IDs/ms/node.
  • The 41-bit timestamp yields a roughly 69-year life; the 10-bit worker allows 1,024 generators.
  • On a backwards clock step the generator spin-waits to the last-seen timestamp to avoid duplicates.
Interview Round Script

Contrast Snowflake against a central counter, a DB auto-increment or single allocator that becomes a write bottleneck and single point of failure, then explain the bit layout and why a timestamp in the high bits gives sortability. Quantify per-node and cluster throughput, 4,096 per ms times 1,024 workers. Then own the clock-dependency weakness: an NTP step forces a spin-wait, and a misallocated worker id means collisions.

Key Trade-Offs

Snowflake gives coordination-free, sortable IDs at high throughput but depends on monotonic clocks and a centrally assigned worker id.

Related Curriculum Chapter

Design a Unique Distributed ID Generator (Snowflake-Style)

Read Full Chapter Blueprint

Explore More Interactive Labs

View All 280 Labs