CUID Generator logoCUID Generator

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/cuid2
import { 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 cuid
import 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 cuid2
from 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 cuid
import 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/cuid2
package 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.Net
using 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 cuid
require '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.

Ready to integrate CUID?

Start generating CUIDs now!