Nano ID Generator
Generate compact random IDs with customizable size and alphabet.
Nano ID Generator
What This Tool Does
- Nano ID Generator creates URL-friendly unique IDs in TypeScript, perfect for databases, APIs, and frontend resources.
- Generate short, secure, random IDs with configurable length and alphabet directly in your browser.
Usage
- Set desired ID length (typically 12–21 characters).
- Optionally customize the alphabet (default: URL-safe alphanumerics).
- Set quantity: generate one or multiple IDs.
- Copy results for use in fixtures, URLs, database seeds, or tests.
Examples
- Create short public IDs for frontend resources, products, or documents.
- Generate deterministic-length IDs for snapshot tests and CI/CD pipelines.
- Produce URL-safe identifiers for short URLs and sharing links.
- Create unique session or request IDs for logging and tracing.
Limitations
- Results should be validated in your target runtime before production use.
- Extremely large input payloads may be constrained by browser memory and performance limits.
Common Mistakes
- Insufficient length for high-volume systems: Length 12 is fine for < 1M IDs; increase to 18+ for larger systems.
- Using unsafe alphabets: Alphabets with special chars (/, +, %) may break URLs or databases. Stick to URL-safe defaults.
- Assuming guaranteed uniqueness: All ID schemes have collision probability. Nano ID probability is negligible but not zero.
- Alphabet mismatch: Validate alphabet contains intended characters (no duplicates, no unsupported symbols).
- Reusing Nano IDs across systems: If systems need universal uniqueness, use UUIDs instead or coordinate ID pools.
- Storing IDs as integers: Nano IDs are strings; converting to integers loses leading zeros and safe characters.
Technical Reference Guide
- Nano ID: Unguessable, URL-friendly unique string generator.
- Default alphabet: a-z, A-Z, 0-9, - _ (64 characters = 6 bits per character).
- Length: More characters = lower collision probability. Size 21 at ~2^126 bits entropy (safe for most use cases).
- Entropy calculation: Bits = size × log2(alphabet length). 21 chars × 6 bits ≈ 126 bits.
- URL-safe: Produced IDs avoid special characters that require encoding in URLs.
- Cryptographically secure: Uses browser crypto.getRandomValues() for randomness.
- No database coordination: No central registry; collision risk increases with scale (unlikely at scale < 1M).
Specifications & Standards
FAQ
Can I remove or customize the alphabet?
Yes. Provide an alphabet string with only the characters your system allows. Longer alphabets = fewer chars needed for same entropy.
Is Nano ID collision-proof?
No ID scheme is absolute, but collision probability for size 21 is negligible (< 1 in 10^15 for typical workloads). Size 12 is safe for < 1M IDs.
How does Nano ID compare to UUID?
Nano IDs are shorter (21 vs 36 chars) and URL-safe. UUIDs are standardized. Use Nano IDs for apps, UUIDs for interop.
Can Nano IDs be parsed or decoded?
No. Nano IDs are random strings with no structure. They cannot be decoded to extract information.
Should Nano IDs be used for security tokens?
For non-critical tokens yes. For high-security (passwords, session tokens), use longer entropy (32+ bytes).
What if I need sortable IDs?
Nano IDs are not sortable by creation time. Use ULIDs or timestamp-prefixed IDs for time-ordered sequences.
Related Tools
Explore related utilities inside the Security Lab workshop for complementary engineering workflows.
View all Security Lab tools