Une UUID (Universally Unique Identifier, identifiant universel unique) est un identifiant de 128 bits (16 octets) considéré comme unique en pratique, même généré sans autorité centrale. Sous forme de texte standard, elle s'écrit avec 32 caractères hexadécimaux et 4 tirets, regroupés 8-4-4-4-12 (par ex. 550e8400-e29b-41d4-a716-446655440000). Cet outil peut générer chaque version définie par la RFC 4122 et l'actuelle RFC 9562 — v1, v3, v4, v5 et v7.
Qu'est-ce qu'une UUID, et quelles sont ses versions ?
Une explication complète des versions d'UUID selon la RFC 4122/9562, quand utiliser chacune, et en quoi un GUID diffère.
Mini-outils supplémentaires : UUID NIL, ULID, Base64 & UUID courte
Quatre mini-outils supplémentaires inspirés d'outils UUID concurrents : une UUID vide fixe, un identifiant ULID triable, un convertisseur UUID vers Base64/Hex, et un encodeur d'UUID courte.
Tableaux de référence des versions UUID et formats
Une comparaison citable des versions, des exemples de format, et une comparaison UUID/GUID/ULID.
| Version | Source des données | Triable ? | Usage typique |
|---|---|---|---|
| v1 | Horodatage + identifiant de nœud | Partiellement | Systèmes existants, compatibilité ascendante |
| v3 | Namespace + nom (MD5) | Non | Identifiant déterministe (historique) |
| v4 | Entièrement aléatoire | Non | Usage général, la plus courante |
| v5 | Namespace + nom (SHA-1) | Non | Identifiant déterministe (recommandée) |
| v7 | Horodatage + aléatoire | Oui | Clés primaires de base de données |
| ULID (extra) | Horodatage + aléatoire (Base32) | Oui | Identifiant triable, chaîne courte |
| Format | Exemple |
|---|---|
| Standard (minuscules) | 550e8400-e29b-41d4-a716-446655440000 |
| Majuscules | 550E8400-E29B-41D4-A716-446655440000 |
| Sans tirets | 550e8400e29b41d4a716446655440000 |
| Accolades (GUID .NET) | {550e8400-e29b-41d4-a716-446655440000} |
| Préfixe URN | urn:uuid:550e8400-e29b-41d4-a716-446655440000 |
| Base64 (16 octets) | VQ6EAOKbQdSnFkRmVUQAAA== |
| Propriété | UUID | GUID | ULID |
|---|---|---|---|
| Longueur en bits | 128 | 128 (même standard) | 128 |
| Longueur en texte | 36 caractères | 36 (ou 38 avec accolades) | 26 caractères |
| Alphabet | Hexadécimal (0-9, a-f) + tirets | Hexadécimal + tirets | Crockford Base32 |
| Triable dans l'ordre chronologique ? | Seulement v1/v7 | Seulement v1/v7 | Oui (par défaut) |
| Usage courant | Usage général | Écosystème .NET / Windows | Clés de base de données, IDs de logs |
Exemples de code par langage : comment générer une UUID
Code prêt à copier pour générer des UUID/GUID en Python, JavaScript/Node, Java, C#, Go, PHP, PostgreSQL et MySQL. Chaque exemple montre l'approche standard du langage concerné.
uuid, aucune installation nécessaire.# Bibliothèque standard, aucune installation nécessaire import uuid # v4 (aléatoire) — usage le plus courant print(uuid.uuid4()) # 550e8400-e29b-41d4-a716-446655440000 # v5 (basée sur un nom, SHA-1) — déterministe print(uuid.uuid5(uuid.NAMESPACE_DNS, "example.com")) # v1 (temps + nœud) print(uuid.uuid1()) # Formats texte u = uuid.uuid4() print(u.hex) # sans tirets print(str(u).upper()) # majuscules
crypto.randomUUID() intégré dans les navigateurs modernes et Node 19+.// Navigateur + Node 19+ (intégré, v4)
const id = crypto.randomUUID();
console.log(id); // 550e8400-e29b-41d4-a716-446655440000
// Node.js (via le module crypto)
import { randomUUID } from "node:crypto";
console.log(randomUUID());
// Majuscules / sans tirets
console.log(id.toUpperCase());
console.log(id.replace(/-/g, ""));
java.util.UUID (v4 aléatoire et v3 basée sur un nom).import java.util.UUID;
// v4 (aléatoire)
UUID id = UUID.randomUUID();
System.out.println(id); // 550e8400-e29b-41d4-a716-446655440000
// v3 (basée sur un nom, MD5)
UUID named = UUID.nameUUIDFromBytes("example.com".getBytes());
System.out.println(named);
// Analyse à partir de texte
UUID parsed = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");
Guid. .NET 9 ajoute aussi Guid.CreateVersion7(), triée dans le temps.using System;
// GUID de type v4 (aléatoire)
Guid id = Guid.NewGuid();
Console.WriteLine(id); // 550e8400-e29b-41d4-a716-446655440000
Console.WriteLine(id.ToString("B")); // {550e8400-...} format GUID .NET
Console.WriteLine(id.ToString("N")); // sans tirets
Console.WriteLine(id.ToString("D").ToUpper()); // majuscules
// .NET 9+ : v7 (triée dans le temps, adaptée aux bases de données)
Guid v7 = Guid.CreateVersion7();
github.com/google/uuid (go get github.com/google/uuid).package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
fmt.Println(uuid.New()) // v4 (aléatoire)
// v5 (basée sur un nom, SHA-1)
fmt.Println(uuid.NewSHA1(uuid.NameSpaceDNS, []byte("example.com")))
// v7 (triée dans le temps) — google/uuid v1.6+
v7, _ := uuid.NewV7()
fmt.Println(v7)
}
ramsey/uuid (composer require ramsey/uuid).use Ramsey\Uuid\Uuid; // v4 (aléatoire) echo Uuid::uuid4()->toString(); // 550e8400-e29b-41d4-a716-446655440000 // v7 (triée dans le temps, adaptée aux bases de données) echo Uuid::uuid7()->toString(); // v5 (basée sur un nom, SHA-1) — déterministe echo Uuid::uuid5(Uuid::NAMESPACE_DNS, "example.com")->toString();
gen_random_uuid() est intégrée à partir de la version 13 (les versions plus anciennes nécessitent l'extension pgcrypto).-- Générer une UUID v4 (aléatoire) SELECT gen_random_uuid(); -- Valeur par défaut automatique sur une colonne de table CREATE TABLE users ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), name text NOT NULL ); -- Versions plus anciennes (PostgreSQL 12 et antérieures) : -- CREATE EXTENSION IF NOT EXISTS pgcrypto;
UUID() génère une valeur de type v1 ; UUID_TO_BIN(..., 1) est recommandé pour un stockage trié.-- Générer une UUID texte (type v1) SELECT UUID(); -- Stocker sous forme de BINARY triée sur 16 octets (optimisée pour l'index) SELECT UUID_TO_BIN(UUID(), 1); CREATE TABLE users ( id BINARY(16) PRIMARY KEY, name VARCHAR(120) NOT NULL ); -- Reconvertir en texte à la lecture : -- SELECT BIN_TO_UUID(id, 1) FROM users;
Glossaire des termes UUID
Définitions courtes des concepts essentiels utilisés lorsqu'on parle d'UUID/GUID, et la structure anatomique d'une UUID.
4 = v4)
bits de variante (17ᵉ caractère hex, ici a = RFC 4122/9562)
Une UUID est toujours 32 caractères hexadécimaux regroupés 8-4-4-4-12 (36 caractères avec les 4 tirets = 128 bits / 16 octets). Seuls le 1ᵉʳ caractère du 3ᵉ groupe (nibble de version) et les 1-2 premiers bits du 4ᵉ groupe (bits de variante) sont des positions fixes ; tout le reste dépend de la version (aléa, horodatage, ou hachage du nom).
Guides détaillés
Réponses détaillées aux questions les plus courantes sur les UUID.
Quelle version d'UUID dois-je utiliser ?
Pour la plupart des scénarios, v4 (entièrement aléatoire) est un bon choix par défaut : simple, respectueuse de la vie privée, et elle ne fuit aucune information. Si vous l'utilisez comme clé primaire de base de données et que la performance de l'index compte, préférez v7 ; comme les valeurs v7 générées séquentiellement se trient dans l'ordre chronologique, elles causent moins de fragmentation des index en arbre B.
Si vous devez toujours dériver le même identifiant à partir de la même entrée (par ex. une URL ou une adresse e-mail), utilisez v5 (basée sur SHA-1) ; v3 (basée sur MD5) est conservée uniquement pour la compatibilité avec des systèmes existants. Ne recourez à v1 que lorsque vous travaillez avec d'anciens systèmes qui l'exigent pour la compatibilité ascendante.
Pour une clé primaire de base de données : UUID, auto-incrément, ou ULID ?
Les entiers auto-incrémentés indexent le plus rapidement, mais peuvent entrer en collision dans des systèmes distribués (lorsque plusieurs serveurs insèrent des enregistrements simultanément) et révèlent publiquement le nombre de lignes. Une UUID v4 n'entre jamais en collision, mais étant entièrement aléatoire, elle peut fragmenter les index en arbre B et ralentir les écritures.
L'UUID v7 ou ULID résout ce problème grâce à un préfixe horodaté : ni l'une ni l'autre n'entre en collision, et comme elles sont insérées dans l'ordre, leur performance d'indexation se rapproche de l'auto-incrément. ULID est aussi plus court (26 caractères contre 36 pour l'UUID) ; le choix dépend généralement de ce que prend en charge votre écosystème (ORM/base de données).
Quelle est vraiment la probabilité de collision d'une UUID v4 ?
Une UUID v4 comporte 122 bits générés aléatoirement, ce qui donne 2122 (≈5,3 × 1036) valeurs possibles. Selon le calcul du paradoxe des anniversaires, il faudrait générer environ 2,71 trillions (2,71 × 1018) d'UUID avant d'atteindre 50% de chances de collision — une échelle pratiquement impossible, équivalente à ce que chaque personne sur Terre génère des milliards d'UUID chaque seconde.
Pour cette raison, les UUID v4 sont considérées en toute sécurité comme « uniques » dans les applications réelles. Cela dit, la qualité du générateur de nombres aléatoires compte ; cet outil utilise le crypto.getRandomValues cryptographique plutôt que l'insécurisé Math.random().
Ajouter cet outil à votre site (code d'intégration)
Intégrez gratuitement le générateur UUID sur votre propre site. Copiez le code ci-dessous dans votre HTML — l'outil s'affiche dans une vue simplifiée et renvoie vers cette page comme source.
L'outil intégré a une mise en page fixe ; vous pouvez ajuster la valeur de height selon votre site. Pas de publicité ni de données personnelles, fonctionne entièrement côté client.
Questions fréquentes
Qu'est-ce qu'une UUID ?
Comment une UUID v4 est-elle générée ?
Quelle est la différence entre un GUID et une UUID ?
Comment générer des UUID en masse ?
Combien de caractères ou d'octets compte une UUID ?
Un générateur d'UUID en ligne est-il sûr à utiliser ?
Quelle est la différence entre UUID v1 et v4 ?
Qu'est-ce qu'un ULID, et en quoi diffère-t-il d'une UUID ?
Comment savoir quand une UUID v7 ou v1 a été générée ?
Comment génère-t-on une UUID en Python, C#, PostgreSQL et langages similaires ?
uuid.uuid4(),
JavaScript/Node crypto.randomUUID(), Java UUID.randomUUID(), C#/.NET Guid.NewGuid(),
Go uuid.New(), PHP Uuid::uuid4(), PostgreSQL gen_random_uuid(), MySQL UUID().
Les exemples basés sur un nom (v5) et triés dans le temps (v7) figurent dans la même section.Méthodologie & sources
Sources : RFC 4122 (A Universally Unique IDentifier) · RFC 9562 (le standard UUID actuel, ajoutant v6/v7/v8) · W3C Web Cryptography API · la spécification officielle ULID (Crockford Base32). Dernière mise à jour : 19 juillet 2026. Les résultats sont algorithmiques ; v3/v5 sont déterministes, tandis que v1/v4/v7 et ULID reposent sur l'aléa cryptographique.