@stdop/id
v1.0.1
Published
Standard ID generation — nanoid with a clean overloaded API.
Readme
@stdop/id
Secure, URL-friendly unique ID generation. A thin typed wrapper around nanoid.
npm install @stdop/idUsage
Default — 21-character nanoid
The default call produces a 21-character URL-safe ID. Collision probability is equivalent to UUID v4.
import { $id } from "@stdop/id"
$id() // → 'Y5G9o8Wn_ZyB0Kxtv3NMu'
$id() // → 'Kx3p_tN8oWnZyB0v5GMu9'Custom length nanoid
Pass "nano" with a length to produce a shorter or longer ID using the same URL-safe alphabet.
$id("nano", 8) // → 'Kx3p_tN8'
$id("nano", 32) // → 'Y5G9o8Wn_ZyB0Kxtv3NMuKx3p_tN8oW'Shorter IDs have higher collision probability — only reduce length if the ID space is small and collisions are acceptable.
Custom alphabet
Pass "custom" with your own alphabet and a length. Useful for IDs that must match a specific character set — numeric-only codes, readable tokens, domain-constrained keys.
// numeric only — e.g. SMS verification codes
$id("custom", "0123456789", 6) // → '384729'
// uppercase hex
$id("custom", "0123456789ABCDEF", 16) // → '3A9F2C8B4E1D07F5'
// human-readable — no ambiguous chars (0/O, 1/l/I)
$id("custom", "23456789ABCDEFGHJKLMNPQRSTUVWXYZ", 10) // → 'G7K2XMNP4R'API
$id(): string
$id(type: "nano", length?: number): string
$id(type: "custom", alphabet: string, length: number): string| Overload | When to use |
|---|---|
| $id() | Default — session IDs, entity IDs, anything where you just need a unique key |
| $id("nano", n) | When you need a specific length but want the standard safe alphabet |
| $id("custom", abc, n) | When the ID must conform to a character constraint |
