CUID Code Examples
Copy-paste ready examples for generating CUIDs and CUID2s in your favorite programming languages and frameworks.
âĄ
JavaScript / TypeScript
âšī¸
The official CUID2 package is maintained by Parallel Drive. CUID2 is recommended for all new projects due to enhanced security.
CUID2 (Recommended)
typescript
$
npm install @paralleldrive/cuid2import { createId, isCuid } from '@paralleldrive/cuid2';
// 1. Generate a CUID2
const id = createId();
console.log(id); // e.g., "tz4a98xxat96iws9zmbrgj3a"
// 2. Validate
console.log(isCuid(id)); // true
// 3. Custom length (2-32 chars)
import { init } from '@paralleldrive/cuid2';
const createShortId = init({ length: 10 });
console.log(createShortId()); // "tz4a98xxat"CUID v1 (Legacy)
javascript
$
npm install cuidimport cuid from 'cuid';
// Generate a CUID v1
const id = cuid();
// e.g., "cjld2cjxh0000qzrmn831i7rn"
// Generate a slug (not collision-resistant but short)
const slug = cuid.slug();
// e.g., "h0000qzr"đ
Python
CUID2 for Python
python
$
pip install cuid2from cuid2 import cuid_wrapper
# Create a generator instance
cuid_generator = cuid_wrapper()
# Generate ID
id = cuid_generator()
print(id) # "tz4a98xxat96iws9zmbrgj3a"
# Generate List
ids = [cuid_generator() for _ in range(5)]CUID v1 for Python
python
$
pip install cuidimport cuid
# Generate CUID
id = cuid.cuid()
print(id) # "cjld2cjxh0000qzrmn831i7rn"
# Generate Slug
slug = cuid.slug()
print(slug) # "h0000qzr"đˇ
Go
CUID2 for Go
go
$
go get github.com/nrednav/cuid2package main
import (
"fmt"
"github.com/nrednav/cuid2"
)
func main() {
// Generate CUID2
id := cuid2.Generate()
fmt.Println(id)
// Output: tz4a98xxat96iws9zmbrgj3a
// Custom Length
generate, _ := cuid2.Init(cuid2.WithLength(10))
fmt.Println(generate())
// Output: tz4a98xxat
}â
Java
CUID for Java
java
$
<!-- Maven Dependency -->\n<dependency>\n <groupId>io.github.thibaultmeyer</groupId>\n <artifactId>cuid</artifactId>\n <version>2.0.2</version>\n</dependency>import io.github.thibaultmeyer.cuid.CUID;
public class Main {
public static void main(String[] args) {
// Generate random CUID
CUID cuid = CUID.randomCUID();
System.out.println(cuid.toString());
// "cjld2cjxh0000qzrmn831i7rn"
// Parse existing
CUID parsed = CUID.fromString("cjld2cjxh0000qzrmn831i7rn");
}
}đŖ
C# / .NET
CUID for .NET
csharp
$
dotnet add package Cuid.Netusing Cuid;
// 1. Simple Generation
var id = Cuid2.CreateId();
Console.WriteLine(id);
// "tz4a98xxat96iws9zmbrgj3a"
// 2. Custom Length
var shortId = Cuid2.CreateId(10);
// 3. Validation
if (Cuid2.IsValid(id)) {
Console.WriteLine("Valid CUID!");
}đ
PHP
CUID2 for PHP
php
$
composer require visus/cuid2<?php
require 'vendor/autoload.php';
use Visus\Cuid2\Cuid2;
// Standard CUID2
$cuid = new Cuid2();
echo $cuid->toString();
// "tz4a98xxat96iws9zmbrgj3a"
// Short Version
$short = new Cuid2(10);
echo $short->toString();
?>đ
Ruby
CUID for Ruby
ruby
$
gem install cuidrequire 'cuid'
# Generate
id = Cuid.generate
puts id
# "cjld2cjxh0000qzrmn831i7rn"
# Validate
puts Cuid.valid?(id) # true
# Bulk Generation
ids = 5.times.map { Cuid.generate }đ ī¸
Framework Integrations
Prisma ORM
schema.prisma
prisma
model User {
id String @id @default(cuid())
email String @unique
}Mongoose
schema.js
javascript
import { createId } from '@paralleldrive/cuid2';
const schema = new Schema({
_id: { type: String, default: createId },
});Drizzle ORM (PostgreSQL)
schema.ts
typescript
import { createId } from '@paralleldrive/cuid2';
export const users = pgTable('users', {
id: text('id').primaryKey().$defaultFn(() => createId()),
email: text('email').notNull(),
});đĄ Implementation Tips
1
CUID2 for Security
Always prefer CUID2 for public-facing IDs to prevent enumeration attacks.
2
Index Your IDs
Since CUIDs are strings, ensure your database columns are properly indexed.
3
Client-side Generation
Generate IDs on the client for optimistic UI updates before server confirmation.
4
Default Length
Stick to the default 24 characters unless you have strict storage constraints.