Générateur de Nano ID

Générez en masse, directement dans votre navigateur, des identifiants courts, uniques et sûrs pour les URL. Choisissez librement le jeu de caractères (par défaut, alphanumérique, minuscules, majuscules, chiffres ou hexadécimal) et la longueur — idéal lorsque vous avez besoin de quelque chose de plus court qu'un UUID.

Comparaison des formats d'ID

Format Longueur Taille de l'alphabet Triable par ordre de création Description
Nano ID 21 caractères par défaut (configurable de 1 à 64) 64 caractères Non (entièrement aléatoire) Un ID court et aléatoire composé uniquement de caractères sûrs pour les URL. L'alphabet et la longueur sont librement configurables.
UUID v4 36 caractères (dont 4 tirets) 16 caractères (hexadécimal) Non (entièrement aléatoire) Un identifiant de 128 bits normalisé dans la RFC 9562. La notation hexadécimale séparée par des tirets est le format standard.
ULID 26 caractères 32 caractères (Base32) Oui (les 10 premiers caractères forment un horodatage) Commence par un horodatage à la milliseconde, ce qui permet de trier les ID par ordre lexicographique correspondant à l'ordre de création.

Astuces

  • Nano ID est généré avec un aléa cryptographiquement sûr via l'API Web Crypto et entièrement traité dans votre navigateur — rien n'est jamais envoyé aux serveurs de toolbase.cc.
  • L'alphabet par défaut de 64 caractères (A-Za-z0-9_-) ne contient ni symboles ni espaces, il peut donc être utilisé sans risque directement dans des chemins d'URL ou des noms de fichiers.
  • Restreindre l'alphabet aux chiffres uniquement ou à l'hexadécimal permet de générer des ID conformes au format utilisé par des systèmes existants (par exemple des numéros de commande composés uniquement de chiffres).
  • Plus l'ID est court, plus la probabilité de collision augmente. Les systèmes émettant de nombreux ID devraient rester proches des 21 caractères par défaut, tandis que 8 à 10 caractères peuvent suffire pour de petits jeux de test.
  • Augmentez le nombre puis utilisez « Tout copier » pour générer rapidement en masse des données de test ou des jeux de données initiaux.

Questions fréquentes

Si vous voulez un ID court à insérer directement dans une URL ou un nom de fichier, Nano ID convient bien. Si vous avez besoin d'un format normalisé par une RFC, ou d'une interopérabilité avec d'autres systèmes, UUID (en particulier v4) reste le choix le plus sûr.

Avec les 21 caractères par défaut et un alphabet de 64 symboles, vous obtenez environ 126 bits d'aléa, ce qui est négligeable en pratique. D'après l'approximation du problème des anniversaires, il faudrait générer environ 1,09×10¹⁹ ID avant que la probabilité de collision n'atteigne 50 %.

Oui, mais comme UUID v4, il est entièrement aléatoire, ce qui rend l'insertion dans un index B-Tree moins efficace qu'avec AUTO_INCREMENT. Si vous avez besoin d'ID triables par ordre d'insertion, envisagez plutôt un format à horodatage initial comme ULID.

Oui. À longueur égale, un alphabet plus petit (moins de caractères distincts) signifie moins d'aléa et une probabilité de collision plus élevée. Pour atteindre le même niveau de sécurité que l'alphabet de 64 caractères en n'utilisant que des chiffres (10 caractères), il faudrait un ID plus long.
ツールくん

Anecdote — Pourquoi Nano ID peut être plus court qu'un UUID

Nano ID est une bibliothèque JavaScript de génération d'ID publiée en 2017 par Andrey Sitnik, le développeur de PostCSS. Bien que dépourvue de dépendances et minuscule (à peine quelques centaines d'octets de code), son usage d'un aléa cryptographiquement sûr lui a valu une large reconnaissance, et elle totalise aujourd'hui plusieurs dizaines de millions de téléchargements hebdomadaires sur npm.

La brièveté d'un ID dépend du nombre de caractères distincts que compte son alphabet. Un UUID n'utilise que des chiffres hexadécimaux (16 symboles) pour encoder 128 bits, ce qui nécessite 36 caractères. Nano ID utilise 64 symboles et peut ainsi condenser une quantité comparable d'aléa (126 bits par défaut) en seulement 21 caractères. La raison : chaque caractère transporte davantage d'information (log₂64 = 6 bits contre log₂16 = 4 bits pour l'hexadécimal).

Les réglages par défaut (21 caractères, alphabet de 64 symboles) offrent environ 126 bits d'aléa, ce qui équivaut presque aux 122 bits d'UUID v4. D'après l'approximation du problème des anniversaires, il faudrait générer environ 1,09×10¹⁹ ID avant que la probabilité de collision n'atteigne 50 %, il y a donc en pratique peu de quoi s'inquiéter.