paralleldrive/cuid

Deprecated collision-resistant id spec. Insecure because it leaks timestamps. Use cuid2 instead.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 44 minutes ago
Type:Library / SDKCategory(s):Core & Utility LibrariesLanguages & Runtimes
Added to GitGenius on September 19th, 2026
Created on September 1st, 2012
Open Issues & Pull Requests: 25 (+0)
GitHub issues: Enabled
Number of forks: 118
Total Stargazers: 3,502 (+0)
Total Subscribers: 25 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 3
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 968 days
Stale 30+ days: 2
Stale 90+ days: 2

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

cuid is a collision-resistant ID generation library optimized for horizontal scaling and binary search lookup performance.

The tool addresses the need for unique identifiers in distributed systems where multiple hosts generate IDs independently without central coordination. It combines a timestamp, a counter to handle rapid successive generation, a client fingerprint derived from system characteristics, and random data to create short strings suitable for use as HTML element IDs and database record lookups. The approach was designed to support modern applications requiring online/offline capability and horizontal scalability across multiple machines.

Developers should be aware that this project is deprecated due to security vulnerabilities. The README explicitly states that cuid leaks timestamps and recommends using cuid2 instead. The documentation notes that all monotonically increasing IDs and timestamp-based schemes share similar security issues, and demonstrates real-world exploits where guessable IDs have enabled unauthorized password resets and unauthorized access to private resources. The tool remains available across multiple language implementations including Node, browsers, Java, Ruby, .Net, and Go, but new projects should not adopt it.

The project is no longer actively maintained, with development having concluded before the deprecation notice was added to the repository.