Qu'est-ce qu'un UUID ?
Un UUID (Universally Unique Identifier) est un identifiant de 128 bits standardisé par la RFC 4122. Il ressemble à ceci :
550e8400-e29b-41d4-a716-446655440000
Cinq groupes de caractères hexadécimaux séparés par des tirets, toujours 36 caractères au total. L'aspect « universellement unique » provient de la combinaison du temps, de l'aléatoire et/ou d'un espace de noms – selon la version.
Les UUID sont utilisés quand vous devez générer des identifiants sans autorité centrale (comme un compteur auto-incrémenté en base de données). Ils sont idéaux pour les systèmes distribués, les ID générés côté client, et les cas où un aller-retour vers un serveur est inacceptable.
Les versions d'UUID
UUID v1 – Basé sur le temps
Généré à partir du timestamp courant combiné à l'adresse MAC de la machine. Garanti unique entre machines au même instant, mais l'adresse MAC expose l'identité de la machine – un problème de sécurité dans certains contextes.
UUID v3 – Basé sur un nom (MD5)
Déterministe : le même nom + espace de noms produit toujours le même UUID. Utilise MD5. Utile pour générer des identifiants stables pour des ressources connues. MD5 étant cryptographiquement faible, préférez v5 pour les nouveaux projets.
UUID v4 – Aléatoire (le plus courant)
Généré à partir de 122 bits de données aléatoires. La version la plus utilisée. La probabilité de collision entre deux UUID v4 est astronomiquement faible (environ 1 sur 5,3 × 10³⁶ pour deux ID donnés).
UUID v5 – Basé sur un nom (SHA-1)
Identique à v3 mais utilise SHA-1 au lieu de MD5. Préféré à v3 pour les nouveaux projets.
UUID v7 – Aléatoire ordonné dans le temps (nouvelle norme)
Introduit dans la révision 2022 de la RFC. Combine un préfixe horodatage (précision milliseconde) avec des bits aléatoires. Le préfixe temporel permet aux UUID v7 d'être triés chronologiquement – avantage majeur pour les clés primaires en base de données (meilleure performance des index). C'est le choix recommandé pour les ID de base de données.
Quand utiliser les UUID
- Clés primaires en base de données – surtout dans les systèmes distribués où plusieurs nœuds insèrent des enregistrements simultanément
- Identifiants de ressources API – les entiers séquentiels exposent le volume de vos données ; les UUID ne le font pas
- Nommage de fichiers et assets – noms résistants aux collisions pour les fichiers uploadés
- Clés d'idempotence – générer une clé côté client pour rejouer en sécurité une requête de paiement
UUID vs ULID vs NanoID
ULID : similaire à UUID mais triable lexicographiquement par temps. Objectif similaire à UUID v7.
NanoID : plus court (21 caractères par défaut), URL-safe, alphabet configurable. Utile pour des identifiants courts dans les URL.
Pour les bases de données, UUID v7 est la meilleure pratique moderne. Pour les URL courtes, NanoID est populaire. UUID v4 reste le choix le plus universellement supporté quand la compatibilité prime.
Générer des UUID dans votre navigateur
Le Générateur UUID de ce site génère des UUID v4 instantanément, sans compte ni serveur. En JavaScript : crypto.randomUUID() est disponible nativement dans les navigateurs modernes et Node.js ≥ 14.17.
En résumé
Les UUID sont des identifiants de 128 bits résistants aux collisions avec plusieurs versions selon la stratégie : basé sur le temps (v1), aléatoire (v4), basé sur un nom (v5), aléatoire ordonné dans le temps (v7). UUID v4 est le choix généraliste le plus courant ; UUID v7 est optimal pour les clés primaires en base de données.