🍋
Menu
Generator

ULID

Universally Unique Lexicographically Sortable Identifier

A 128-bit identifier combining a timestamp with randomness, encoded as a 26-character Crockford Base32 string.

Technical Detail

ULID relies on pseudo-random number generators (PRNGs). JavaScript's Math.random() uses an implementation-specific PRNG (typically xoshiro256**) that is fast but not cryptographically secure. For security-sensitive generation (tokens, passwords, keys), the Web Crypto API's crypto.getRandomValues() draws from the OS entropy pool (/dev/urandom on Linux, CryptGenRandom on Windows). True randomness requires hardware sources (thermal noise, radioactive decay) and is unnecessary for most generation tasks.

Example

```javascript
// ULID: generation example
function generate(options = {}) {
  const { length = 10, type = 'alphanumeric' } = options;
  const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  const values = crypto.getRandomValues(new Uint32Array(length));
  return Array.from(values, v => chars[v % chars.length]).join('');
}
```

Related Tools

Related Terms