#identifier #id #string #scheme #bit #opaque #string-conversion

bin+lib id30

An encoding scheme for 30 bit identifiers

3 releases (1 stable)

1.0.0 Apr 8, 2024
0.1.1 Apr 5, 2024
0.1.0 Mar 20, 2024

#5 in #opaque

MIT/Apache

47KB
750 lines

Id30 is an encoding scheme for 30 bit identifiers that look like the following: bpv3uq, zvaec2, rfmbyz, jwygvk, 000000, zzzzzz. It is designed for use as opaque identifiers in URLs, that can be read and written comfortably, and is a good choice for user-facing IDs when you don't need a key space of more than 30 bits, giving you just over 10⁹ different IDs. For comparison, YouTube surpassed this only in 2019, and is estimated to be hosting about 4*10⁹ videos in 2024. User-facing IDs should generally be chosen such that they do not reveal an underlying sequence, and, indeed, Id30 looks best for randomly generated IDs.

This repository is an implementation of Id30 in Rust as a library crate and a utility binary for easy conversion between Id30 strings and the corresponding integers.

To use the library, add it as a dependency to your Rust project (cargo add id30) and read the id30 documentation.

To use the utility binary, build it from the source repository or install it from crates.io via cargo (cargo install id30 --features=rand_std). Then, run id30 --help for more details.

Dependencies

~0–1MB
~19K SLoC