Générateur d’UUID — v4, v7, ULID et NanoID, avec décodeur
Générez en masse des UUID v4 ou v7 ordonnés dans le temps, des ULID et des NanoID, ou collez un identifiant pour voir sa version et son horodatage intégré.
Valider et décoder un identifiant
UUID version 7 (ordonné par temps Unix)
| Forme canonique | 017f22e2-79b0-7cc3-98c4-dc0c0c07398f |
|---|---|
| Version | 7 — ordonné par temps Unix |
| Variante | RFC 9562 / RFC 4122 |
| rand_a (12 bits) | cc3 |
| Horodatage | 2022-02-22T19:22:22.000Z Unix ms 1645557742000 |
Les identifiants sont générés dans votre navigateur avec crypto.getRandomValues. Rien n’est envoyé ni stocké. Parcourir tous les outils gratuits.
Un problème, ou quelque chose à améliorer ? Nous lisons chaque message et corrigeons vite.
Ce générateur d’UUID crée des UUID aléatoires de version 4, des UUID de version 7 ordonnés dans le temps tels que définis dans la RFC 9562, des ULID et des NanoID, un par un ou jusqu’à 10 000 dans un lot à copier ou à télécharger. Chaque bit aléatoire provient de crypto.getRandomValues, le générateur cryptographique du navigateur, et non de Math.random. Le décodeur ci-dessous accepte n’importe quel UUID, GUID ou ULID et indique sa version et sa variante et, pour v1, v6, v7 et ULID, le moment de sa création.
Les UUID v7 et les ULID d’un même lot sont strictement croissants, même quand des milliers partagent la même milliseconde : ils se trient dans l’ordre de création, comme il se doit pour des clés de base de données. La version 1 n’est pas proposée : un navigateur n’a accès ni à une adresse MAC ni à une séquence d’horloge persistante, si bien qu’un UUID v1 créé dans une page web ne ferait qu’imiter le format. Si vous avez besoin d’UUID v1 ou d’UUID v3/v5 fondés sur un nom, générez-les avec la bibliothèque UUID de votre langage.
Mode d’emploi
- Choisissez le type : v4 pour un identifiant aléatoire polyvalent, v7 pour des clés primaires de base de données, ULID ou NanoID si votre stack les utilise.
- Indiquez combien il vous en faut, jusqu’à 10 000, et appuyez sur Générer (ou sur Entrée dans le champ de quantité).
- Choisissez un format : majuscules, sans tirets, ou entre accolades pour le registre Windows et les contextes .NET.
- Copiez tout, ou téléchargez un fichier texte avec un identifiant par ligne, ou un tableau JSON.
- Pour inspecter un identifiant existant, collez-le dans le décodeur pour voir sa version, sa variante et l’éventuel horodatage qu’il contient.
Questions fréquentes
Quelle est la différence entre UUID v4 et v7 ?
Un UUID v4 contient 122 bits aléatoires sans structure. Un UUID v7 place en tête un horodatage Unix de 48 bits en millisecondes, suivi de 74 bits aléatoires : les valeurs v7 se trient donc par date de création. Cet ordre rend v7 bien plus adapté comme clé primaire de base de données : les nouvelles lignes vont à la fin de l’index au lieu de positions aléatoires, ce qui réduit les divisions de pages et garde des insertions rapides. La contrepartie est qu’un identifiant v7 révèle quand il a été créé.
Deux UUID peuvent-ils être identiques ?
En théorie oui, en pratique non, à condition qu’ils proviennent d’une bonne source d’aléatoire. Avec 122 bits aléatoires, il faudrait générer environ 2,7 trillions (2,7 × 10^18) d’UUID v4 pour atteindre 50 % de chances d’une seule collision. Les vrais doublons viennent de bugs : générateur aléatoire faible ou mal initialisé, état de machine virtuelle copié, ou code qui réutilise une valeur.
Un GUID est-il la même chose qu’un UUID ?
Oui. GUID est le nom donné par Microsoft au même identifiant de 128 bits, et les GUID modernes sont des UUID standard (généralement de version 4). Les seules différences tiennent à la présentation : les outils Windows affichent souvent les GUID en majuscules et entre accolades, comme {3F2504E0-4F89-41D3-9A0C-0305E82C3301}. Utilisez les options majuscules et accolades pour obtenir cette forme.
Faut-il utiliser UUID v7 ou ULID ?
Les deux font 128 bits, sont ordonnés dans le temps et portent un horodatage à la milliseconde. UUID v7 s’intègre partout où une colonne ou un type UUID existe déjà, comme le type uuid de PostgreSQL ou la classe UUID de Java. ULID est plus court en texte (26 caractères au lieu de 36) et insensible à la casse, mais nécessite sa propre bibliothèque et se stocke en texte ou en binaire. Si votre base de données et votre langage gèrent déjà les UUID, v7 est le choix le plus simple.
Quelle longueur pour un NanoID ?
Les 21 caractères par défaut issus de l’alphabet de 64 caractères compatible URL donnent 126 bits d’aléatoire, comparables aux 122 d’un UUID v4. Des identifiants plus courts conviennent quand leur nombre est faible et qu’en deviner un est sans conséquence, comme un lien court avec limitation de débit. Le nombre de bits affiché sous le curseur de longueur vous indique ce que vous sacrifiez ; chaque caractère d’un alphabet de 64 symboles ajoute 6 bits.
Peut-on savoir quand un UUID a été créé ?
Uniquement pour les versions basées sur le temps. Collez l’identifiant dans le décodeur : v7 et ULID stockent des millisecondes Unix dans leurs 48 premiers bits, et v1 et v6 des intervalles de 100 nanosecondes depuis le 15 octobre 1582. Un UUID v4 ne contient aucune date, seulement des bits aléatoires plus les marqueurs de version et de variante.
Lire un UUID : version et variante
Un UUID s’écrit sous la forme de 32 chiffres hexadécimaux en groupes de 8-4-4-4-12. Deux positions l’identifient. Le premier chiffre du troisième groupe est la version : dans 0190a3c4-1b2c-7d3e-8f40-0123456789ab, c’est 7. Le premier chiffre du quatrième groupe code la variante : 8, 9, a ou b désigne la disposition standard RFC 9562, utilisée par presque tous les UUID aujourd’hui.
• v1 : horodatage grégorien plus l’adresse MAC de la machine qui l’a généré. Divulgue les deux ; rarement utilisé dans les nouveaux systèmes.
• v3 et v5 : déterministes, dérivés d’un espace de noms et d’un nom avec MD5 (v3) ou SHA-1 (v5). La même entrée donne toujours le même UUID.
• v4 : aléatoire. Le choix par défaut de la plupart des bibliothèques.
• v6 : v1 avec l’horodatage réordonné pour qu’il se trie ; une voie de migration pour les utilisateurs de v1.
• v7 : horodatage Unix en millisecondes plus des bits aléatoires. La version ordonnée dans le temps recommandée pour les nouveaux systèmes.
• v8 : une disposition définie par le fournisseur ; seuls les bits de version et de variante sont fixés.
Pourquoi les UUID aléatoires ralentissent les bases de données, et ce que corrige v7
La plupart des bases de données stockent une clé primaire dans un index B-tree. Avec des clés séquentielles, chaque nouvelle ligne arrive sur la page la plus à droite de l’index, qui reste en mémoire. Avec des UUID v4 aléatoires, chaque insertion tombe sur une page au hasard ; dès que l’index dépasse la mémoire, les insertions commencent à lire des pages sur le disque et à les diviser, et le débit d’écriture chute. InnoDB de MySQL, qui organise toute la table selon la clé primaire, est le plus touché.
UUID v7 conserve les avantages des UUID (uniques à l’échelle mondiale, générables par n’importe quel client sans aller-retour, sûrs à exposer) tout en se comportant presque comme une colonne auto-incrémentée dans l’index. La RFC 9562, publiée en mai 2024, recommande v7 plutôt que v1 et v6 pour les nouveaux identifiants basés sur le temps, et PostgreSQL 18 a ajouté une fonction intégrée uuidv7().
Stockez les UUID dans un type natif de 16 octets (uuid dans PostgreSQL, BINARY(16) dans MySQL) plutôt que dans une chaîne de 36 caractères, qui fait plus que doubler la taille de l’index.
UUID, ULID et NanoID en un coup d'œil
• UUID v4 : 36 caractères, 122 bits aléatoires, prise en charge universelle par les bibliothèques et les bases de données, non triable.
• UUID v7 : 36 caractères, temps en millisecondes sur 48 bits plus 74 bits aléatoires, triable, pris en charge partout où les UUID le sont.
• ULID : 26 caractères en Base32 de Crockford, temps sur 48 bits plus 80 bits aléatoires, triable et insensible à la casse, nécessite une bibliothèque.
• NanoID : 21 caractères par défaut, alphabet et longueur au choix, compatible URL et compact, sans horodatage ni forme binaire standard.
Outils gratuits similaires
- Convertisseur de timestamp Unix — Convertissez des secondes, millisecondes, microsecondes ou nanosecondes epoch en dates dans n’importe quel fuseau horaire, et inversement. Horloge en direct, mode lot, extraits de code.
- Générateur de mots de passe — Générez un mot de passe aléatoire fort, une phrase de passe facile à retenir ou un code PIN. Tout se passe dans votre navigateur, rien n’est envoyé ni stocké.
- Générateur de hash — Hachez du texte ou des fichiers en MD5, SHA-1, SHA-256, SHA-384, SHA-512 et CRC32, vérifiez une somme de contrôle ou calculez un HMAC. Les fichiers ne quittent jamais votre appareil.
- Formateur JSON — Indentez, minifiez et validez du JSON, avec les erreurs d’analyse localisées par ligne et colonne. Dans votre navigateur, sans envoi.