Flexible ID generation with UUID, ULID, nanoid, and prefixed IDs
npm install @philiprehberger/id-genFlexible ID generation with UUID, ULID, nanoid, and prefixed IDs. Zero dependencies
npm install @philiprehberger/id-gen
import { uuid, ulid, nanoid, prefixedId } from '@philiprehberger/id-gen';
uuid(); // '550e8400-e29b-41d4-a716-446655440000'
ulid(); // '01ARZ3NDEKTSV4RRFFQ69G5FAV'
nanoid(); // 'V1StGXR8_Z5jdHi6B-myT' (21 chars)
nanoid(10); // 'IRFa-VaY2b'
prefixedId('usr'); // 'usr_V1StGXR8_Z5jdHi6'
import { nanoid } from '@philiprehberger/id-gen';
// Numeric-only IDs
nanoid(8, '0123456789'); // '48293017'
// Hex IDs
nanoid(12, '0123456789abcdef'); // 'a3f29c01b8e4'
// Options object form
nanoid({ size: 6, alphabet: 'ABCDEF' }); // 'BCFAED'
import { uuidv5, UUID_NAMESPACES } from '@philiprehberger/id-gen';
// Deterministic UUID from name + namespace
const id = await uuidv5('example.com', UUID_NAMESPACES.DNS);
// Always returns the same UUID for the same inputs
// Custom namespace UUID
const custom = await uuidv5('user-42', '12345678-1234-1234-1234-123456789abc');
import { isUuid, isUlid, isNanoid } from '@philiprehberger/id-gen';
isUuid('550e8400-e29b-41d4-a716-446655440000'); // true
isUuid('not-a-uuid'); // false
isUlid('01ARZ3NDEKTSV4RRFFQ69G5FAV'); // true
isUlid('invalid'); // false
isNanoid('V1StGXR8_Z5jdHi6B-myT'); // true (default 21 chars)
isNanoid('IRFa-VaY2b', 10); // true (custom length)
import { generateMany } from '@philiprehberger/id-gen';
const uuids = generateMany('uuid', 5); // 5 UUID v4 strings
const ulids = generateMany('ulid', 10); // 10 ULID strings
const nanos = generateMany('nanoid', 3); // 3 nanoid strings
| Function | Description |
|---|---|
uuid() | UUID v4 (RFC 4122) |
ulid() | ULID (time-sortable) |
nanoid(size?, alphabet?) | URL-safe nanoid (default 21 chars), optional custom alphabet |
nanoid({ size?, alphabet? }) | nanoid with options object |
prefixedId(prefix, size?) | {prefix}_{nanoid} (default 16 char suffix) |
uuidv5(name, namespace) | UUID v5 deterministic generation (async, SHA-1) |
UUID_NAMESPACES | Standard namespace UUIDs: DNS, URL, OID, X500 |
generateMany(type, count) | Batch generate IDs ('uuid', 'ulid', or 'nanoid') |
isUuid(value) | Validate UUID format (v1-v5) |
isUlid(value) | Validate ULID format |
isNanoid(value, length?) | Validate nanoid format (default alphabet, configurable length) |
npm install
npm run build
npm test
If you find this project useful: