Aller au contenu

Générateur d’ULID et de NanoID

ULID & NanoID Generator

Produit des ULID triables ou des NanoID courts avec l’alphabet et la longueur voulus, et indique la probabilité de collision.

Génère des ULID et des NanoID — les deux formats d'identifiants courts vers lesquels on se tourne quand un UUID de 36 caractères est trop long pour une URL. Il montre aussi l'arithmétique des collisions pour la longueur et l'alphabet que vous avez choisis, la partie qui décide si l'identifiant est assez court ou trop court.

🔒 Fonctionne entièrement dans votre navigateurulidnanoidgeneratorid
Type

26 caractères, triables, avec un horodatage en millisecondes dans les dix premiers.

Combien

0 identifiants

    Quelle est la probabilité d’une collision

    Entropie

    80,0 bits

    Identifiants avant 1 % de risque

    1,56e11

    À 1 000 par heure

    18 milliers d’années

    La borne des anniversaires : P ≈ 1 − exp(−n²/2N). Le nombre ci-dessous est le point où elle atteint un pour cent.

    Décoder un ULID

    Les ULID suivent la spécification ULID : 48 bits d’horodatage en millisecondes puis 80 bits aléatoires, en base32 de Crockford — qui laisse de côté I, L, O et U pour qu’on n’en lise aucun de travers à voix haute.

    Comment s’en servir

    1. Choisissez ULID ou NanoID

      Un ULID fait 26 caractères fixes, avec un horodatage en millisecondes dans les dix premiers : il se trie. Un NanoID est de n'importe quelle longueur sur n'importe quel alphabet et n'est que de l'entropie — rien en lui n'est ordonné.

    2. Réglez la longueur et l'alphabet

      Pour NanoID, la valeur par défaut est 21 caractères sur 64 symboles. Un identifiant plus court ou un alphabet plus petit — disons un jeu sans caractères sosies pour quelque chose que les gens lisent à voix haute — coûte de l'entropie, et le panneau en dessous montre exactement combien.

    3. Lisez la ligne des collisions

      Elle donne le nombre d'identifiants avant une chance sur cent de collision, et le temps que cela représente à mille par jour. En dessous de 64 bits d'entropie, la page le dit, parce que c'est la frontière entre un slug d'URL et quelque chose qui ne doit pas être devinable.

    4. Décodez un ULID si vous en avez un

      Collez-le et le panneau affiche l'heure de création et la queue aléatoire — utile pour savoir quand un enregistrement a réellement été créé.

    Questions fréquentes

    Un identifiant court est-il sûr comme lien secret ?

    Seulement si son entropie le dit. Un NanoID de 21 caractères a environ 126 bits et convient ; un de 10 caractères en a environ 60 et est devinable par quiconque accepte d'y mettre de l'argent. La page signale tout ce qui est en dessous de 64 bits exactement pour cette raison — un identifiant court est un identifiant court, pas un secret.

    Pourquoi un alphabet personnalisé ressort-il quand même uniforme ?

    Parce que les symboles sont tirés par échantillonnage avec rejet plutôt que par `random % length`. Le raccourci du modulo biaise tout alphabet dont la longueur ne divise pas 256 — le bug classique des générateurs d'identifiants faits maison, invisible tant que personne ne compte.

    Que fait Monotone pour un ULID ?

    À l'intérieur d'une même milliseconde, des ULID ordinaires sont dans un ordre aléatoire les uns par rapport aux autres. Le mode monotone incrémente le champ aléatoire au lieu de le retirer au hasard : une rafale générée dans la même milliseconde se trie donc encore dans l'ordre où elle a été créée.

    Pourquoi un ULID utilise-t-il un base32 sans I, L, O ni U ?

    C'est l'alphabet de Crockford : il retire les caractères que l'on confond quand un humain lit un identifiant à voix haute ou le recopie depuis un écran. Le compromis, c'est 32 symboles au lieu de 36 — d'où les 26 caractères d'un ULID là où un NanoID en demande 21.

    À alimenter depuis

    Ensuite

    Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.