Générateur de ULID
Générez en masse des ULID, des identifiants triables par ordre chronologique qui font office d'alternative aux UUID.
Ce que signifie produire des ULID
Produire des ULID consiste à émettre en lot des identifiants uniques à l’échelle mondiale qui se trient par date : les Universally Unique Lexicographically Sortable Identifiers. Un ULID est une chaîne de 26 caractères en Crockford Base32 dont les 10 premiers encodent l’instant de création et dont les 16 restants proviennent d’une source aléatoire cryptographiquement sûre. Contrairement à un identifiant entièrement aléatoire comme l’UUID v4, son grand mérite est qu’un tri alphabétique des chaînes les range aussi dans l’ordre de leur création.
Cet outil tire la partie aléatoire de crypto.getRandomValues() de l’API Web Crypto : la source est donc cryptographiquement sûre et non un simple générateur pseudo-aléatoire. Tout se déroule dans le navigateur : ni le nombre que vous saisissez ni les identifiants produits ne sont transmis à un serveur. On peut en produire jusqu’à 1 000 d’un coup, et la sortie est disponible en majuscules – la forme canonique de la spécification – ou en minuscules.
Comment produire des ULID
- Indiquez le nombre voulu Saisissez le nombre d’ULID à émettre d’un coup, de 1 à 1 000.
- Décidez de la casse Cochez l’option minuscules si vous souhaitez une écriture uniforme pour une URL ou un journal. Les deux casses sont valides selon la spécification.
- Cliquez sur produire Le nombre demandé d’ULID, avec l’heure courante dans la partie horodatage, s’affiche en liste.
- Copiez les résultats Copiez-les un par un, ou utilisez « tout copier » pour reprendre la liste entière séparée par des retours à la ligne.
Astuces pour en tirer le meilleur parti
- Les 10 premiers caractères d'un ULID encodent un horodatage (l'instant de création), tandis que les 16 restants sont aléatoires. Sauf si deux ULID sont générés dans la même milliseconde, un simple tri en tant que chaînes de caractères suffit à retrouver l'ordre de création.
- Utiliser un UUID v4 entièrement aléatoire comme clé primaire de base de données tend à fragmenter les index B-tree, car les nouvelles lignes sont insérées à des positions aléatoires. Comme les ULID sont triés approximativement par ordre chronologique, les nouvelles lignes s'ajoutent plutôt vers la fin de l'index, ce qui atténue ce problème.
- Un ULID est représenté par 26 caractères en Base32 de Crockford (l'alphabet de 32 caractères `0`-`9` et `A`-`Z` dont on retire les lettres I, L, O et U, faciles à confondre), ce qui le rend plus court qu'un UUID (36 caractères avec les tirets) et sûr à utiliser dans des environnements insensibles à la casse.
- Pour comparer les formats avec Nano ID et UUID v4, consultez le tableau comparatif disponible sur notre outil jumeau, la page du générateur de Nano ID.
Quand produire des ULID est utile
Clés primaires et identifiants d’enregistrement
Si vous retenez l’ULID comme clé primaire d’une nouvelle table, vous pouvez préparer tôt dans le développement un lot d’identifiants pour des enregistrements factices et des données initiales.
Identifiants d’événement dans un système événementiel
Lorsque chaque événement d’une file de messages ou d’un système réparti réclame un identifiant unique, les ULID se trient par date, ce qui facilite grandement le suivi chronologique des journaux.
Identifiants de journal et de trace pour des essais
Produisez immédiatement des identifiants au format réel pour éprouver ou présenter une plateforme de journalisation ou un outil de traçage.
Comparer avec d’autres formats d’identifiant
Si vous hésitez entre ULID, UUID v4, UUID v7 ou Nano ID pour des URL courtes, comparez d’abord l’aspect et la longueur réels. Voyez aussi la génération d’UUID, la génération d’UUID v7 et la génération de Nano ID.
Termes liés aux ULID
- ULID
- Abréviation d’Universally Unique Lexicographically Sortable Identifier. Identifiant unique de 128 bits dont les 48 premiers bits portent l’heure de création, si bien qu’un simple tri des chaînes les met dans l’ordre chronologique.
- Crockford Base32
- Encodage utilisant 32 caractères : les chiffres 0–9 et les lettres A–Z privées des I, L, O et U, visuellement ambigus. Un ULID est ainsi encodé sur 26 caractères.
- Monotonie
- Propriété d’une valeur qui croît toujours avec le temps. Un ULID ne garantit pas l’ordre lorsque plusieurs sont produits dans la même milliseconde, mais l’extension de génération monotone prévue par la spécification préserve la croissance même alors.
- UUID
- Abréviation d’Universally Unique Identifier. Norme d’identifiant unique de 128 bits définie par la RFC 4122, écrite d’ordinaire sur 36 caractères hexadécimaux, tirets compris. C’est une norme distincte de l’ULID.
- Identifiants uniques en système réparti
- Dispositif par lequel plusieurs serveurs ou processus produisent chacun des identifiants sans collision, sans interroger un émetteur central. ULID et UUID combinent heure de création et aléa pour réduire la probabilité de collision à un niveau négligeable.
- Partie horodatage
- Les 10 premiers caractères d’un ULID : une valeur de 48 bits encodant l’heure de création en millisecondes en Crockford Base32. C’est le cœur du mécanisme qui permet de déduire l’ordre de création d’une simple comparaison de chaînes.
Questions fréquentes
Anecdote — comment l'ULID a introduit l'ordre chronologique dans le monde des identifiants
La spécification ULID a été publiée en 2016 par Alizain Feerasta. À l'époque, l'UUID était déjà le moyen standard de générer des identifiants uniques dans les systèmes distribués, mais son caractère entièrement aléatoire — qui rendait tout tri impossible — était perçu comme gênant pour l'efficacité des index de bases de données et pour l'analyse chronologique des journaux (logs). C'est précisément pour résoudre ce problème que l'ULID a été créé.
En réalité, l'UUID possède lui aussi des variantes basées sur le temps : la version 1 (adresse MAC plus horodatage) et la version 7 (normalisée en 2024, combinant horodatage et valeurs aléatoires). L'ULID, en revanche, est une spécification indépendante, distincte de la norme UUID (RFC 4122), qui se distingue par une conception plus simple et une représentation compacte en Base32.
Aujourd'hui, des bibliothèques d'implémentation de l'ULID existent dans presque tous les langages de programmation majeurs, et il est largement adopté partout où préserver l'ordre de création importe : identifiants d'événements dans les systèmes distribués, identifiants de trace dans les journaux, ou encore clés primaires de bases de données. Sa philosophie de conception recoupe largement celle de l'UUID v7, apparu à la même époque, et les deux coexistent comme deux approches différentes d'un même objectif : un identifiant triable proche de l'UUID.