Home

Awesome

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

Maven Central License

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

Kotlin examples:

import io.github.scru128.Scru128

// generate a new identifier object
val x = Scru128.generate()
println(x) // e.g., "036z951mhjikzik2gsl81gr7l"
println(x.toByteArray()) // as a 128-bit unsigned integer in big-endian byte array

// generate a textual representation directly
println(Scru128.generateString()) // e.g., "036z951mhzx67t63mq9xe6q0j"

Java examples:

import io.github.scru128.*;

// generate a new identifier object
Scru128Id x = Scru128.generate();
System.out.println(x); // e.g., "036z951mhjikzik2gsl81gr7l"
System.out.println(x.toByteArray()); // as a 128-bit unsigned integer in big-endian byte array

// generate a textual representation directly
System.out.println(Scru128.generateString()); // e.g., "036z951mhzx67t63mq9xe6q0j"

See SCRU128 Specification for details.

Installation

Obtain a copy from Maven Central Repository. build.gradle.kts example:

repositories {
    mavenCentral()
}

dependencies {
    implementation("io.github.scru128:scru128:<version>")
}

Target environment

License

Licensed under the Apache License, Version 2.0.

See also