UUID Guide: What They Are and When to Use Them
Published February 4, 2026 • 10 min read
UUIDs (Universally Unique Identifiers) are 128-bit numbers used to uniquely identify information. If you've seen IDs like 550e8400-e29b-41d4-a716-446655440000, that's a UUID. This guide explains everything you need to know.
What is a UUID?
A UUID is a 36-character string (32 hex digits + 4 hyphens) that's practically guaranteed to be unique. The format looks like:
550e8400-e29b-41d4-a716-446655440000
├──────┤ ├──┤ ├──┤ ├──┤ ├──────────┤
8 4 4 4 12
UUID vs GUID
GUID (Globally Unique Identifier) is Microsoft's term for UUID. They're the same thing. Use "UUID" for cross-platform code.
UUID Versions
Version 1 (Time-based)
- Generated from timestamp + MAC address
- Can leak machine info
- Sortable by time
- Use when: You need time-ordered IDs and control the infrastructure
Version 4 (Random)
- Generated from random/pseudo-random numbers
- Most common version
- No privacy concerns
- Use when: You need truly unique IDs (99.9% of cases)
Other Versions
Versions 2, 3, and 5 exist but are rarely used. Stick with v4 unless you have specific needs.
When to Use UUIDs
✅ Good Use Cases
- Distributed systems: Multiple servers generating IDs without coordination
- API keys: Unguessable identifiers
- Session tokens: Unique per session
- File uploads: Prevent name collisions
- Microservices: IDs generated across services
- Public URLs: Obscure sequential patterns
❌ When NOT to Use UUIDs
- Performance-critical databases: UUIDs are larger and slower to index than integers
- Human-readable IDs: Use short codes instead (e.g., "ORD-1234")
- URLs you want to remember: UUIDs are not memorable
UUID vs Auto-Increment IDs
| Feature | Auto-Increment | UUID |
|---|---|---|
| Size | 4-8 bytes | 16 bytes |
| Indexing Speed | Fast | Slower |
| Distributed | Hard | Easy |
| Guessable | Yes | No |
| Human-Readable | Yes | No |
How to Generate UUIDs
JavaScript/Node.js
// Native (Node 16+)
import { randomUUID } from 'crypto';
const uuid = randomUUID();
// Browser
const uuid = crypto.randomUUID();
Python
import uuid
new_uuid = uuid.uuid4()
print(str(new_uuid))
Go
import "github.com/google/uuid"
newUUID := uuid.New()
fmt.Println(newUUID.String())
PHP
$uuid = \Ramsey\Uuid\Uuid::uuid4();
echo $uuid->toString();
Java
import java.util.UUID;
UUID uuid = UUID.randomUUID();
System.out.println(uuid.toString());
SQL (PostgreSQL)
SELECT gen_random_uuid();
Are UUIDs Really Unique?
For practical purposes, yes. The collision probability for UUID v4 is:
1 in 5.3 × 10³⁶
You'd need to generate 1 billion UUIDs per second for 100 years to have a 50% chance of collision. It won't happen.
Common UUID Mistakes
1. Using UUIDs as Primary Keys in High-Write Tables
UUIDs fragment indexes. Use sequential IDs or consider UUIDv7 (time-ordered).
2. Storing UUIDs as Strings
Store as binary (16 bytes) instead of string (36 bytes). Saves space and improves performance.
3. Not Validating UUID Format
Always validate UUIDs from user input. Invalid formats can cause database errors.
Tools
Need to generate UUIDs quickly? Try our free UUID generator. Generate one or thousands at once, no signup required.
Conclusion
UUIDs are perfect for distributed systems, API keys, and anywhere you need globally unique identifiers without coordination. Use v4 for most cases, and consider performance trade-offs for high-scale databases.
Generate UUIDs Now
Use our free UUID generator to create v4 UUIDs instantly. Bulk generation supported.