scru128

SCRU128: Sortable, Clock and Random number-based Unique identifier

Usage no npm install needed!

<script type="module">
  import scru128 from 'https://cdn.skypack.dev/scru128';
</script>

README

SCRU128: Sortable, Clock and Random number-based Unique identifier

npm License

SCRU128 ID is yet another attempt to supersede UUID in the use cases that need decentralized, globally unique time-ordered identifiers. SCRU128 is inspired by ULID and KSUID and has the following features:

  • 128-bit unsigned integer type
  • Sortable by generation time (as integer and as text)
  • 26-digit case-insensitive portable textual representation
  • 44-bit biased millisecond timestamp that ensures remaining life of 550 years
  • Up to 268 million time-ordered but unpredictable unique IDs per millisecond
  • 84-bit layered randomness for collision resistance
import { scru128, scru128String } from "scru128";

// generate a new identifier object
const x = scru128();
console.log(String(x)); // e.g. "00S6GVKR1MH58KE72EJD87SDOO"
console.log(BigInt(x.toHex())); // as a 128-bit unsigned integer

// generate a textual representation directly
console.log(scru128String()); // e.g. "00S6GVKR3F7R79I72EJF0J4RGC"

See SCRU128 Specification for details.

License

Licensed under the Apache License, Version 2.0.

See also