A scalable, secure, and verifiable unique ID generator for Node.js.
Designed to evolve with time and prevent collisions for decades — even millennia.
- ✅ Cryptographically signed (HMAC SHA-256)
- 🧆 Unique and verifiable
- 🕰️ ID length grows over time
- 🔐 Includes timestamp + device fingerprint
- 🧪 Built-in validation and stress testing
- 🩸 Zero dependency (only uses
cryptoandos) - 🎨 Supports prefix and formatting (
dash,space)
npm install forgeidconstForgeID=require('forgeid')constforge=newForgeID('your-secret')constid=forge.generate()console.log('ID:',id)constisValid=forge.verify(id)console.log('Verified:',isValid)forge.generate('TRX')// TRX-abc123xyz...forge.generate('ORD','dash')// ORD-abc123-def456...forge.generate('REF','space')// REF abc123 def456...Each ID includes:
- Random entropy from
crypto.randomBytes - Host fingerprint (
hostname + MAC) - Base36 timestamp (
Date.now()) - Signature from HMAC (last 10 characters)
ID format is:
[prefix-]baseContent + signature
Length increases over time:
length = baseLength + floor((currentYear - startYear) / intervalYears)
constforge=newForgeID('your-secret')forge.stressTest(1e6,1e5)Tests 1 million IDs for:
- Duplicate collision
- HMAC signature validity
newForgeID(secret?: string,startYear?: number,baseLength?: number,intervalYears?: number)forge.generate(prefix?: string,format?: 'dash'|'space'|''): stringforge.verify(id: string): booleanforge.format(id: string,style?: 'dash'|'space'|''): stringforge.stressTest(total?: number,step?: number): voidnpm install --save-dev mocha chai
npm testTest cases cover:
- Raw ID generation & verification
- Formatted and prefixed IDs
- Tampered/invalid inputs
- Collision-free generation (10K+)
importForgeIDfrom'forgeid'constforge=newForgeID()constid: string=forge.generate('TRX','dash')constisValid: boolean=forge.verify(id)Types are defined in forgeid.d.ts.
npm run buildProduces:
dist/forgeid.min.js→ minified bundledist/forgeid.d.ts→ TypeScript definitions
ForgeID can generate 1 million unique, verifiable IDs in under 25 seconds with zero duplicates.
Tested on macOS + Node.js v24.2.0, M3 CPU.
ForgeID/
├── src/ → main ForgeID logic (ES5)
├── dist/ → minified + .d.ts output (for publishing)
├── test/ → unit tests
├── benchmark/ → benchmark script, JSON & PNG chart
MIT © NeaByteLab

