Generator ULID și Nano ID
Generează ULID-uri (cu opțiune monotonă) sau Nano ID-uri cu alfabet și lungime proprii, în număr mare, decodează data unui ULID și verifică riscul de coliziune.
Probabilitatea de coliziune
- Dimensiunea alfabetului
- —
- Entropie pe ID
- —
- ID-uri posibile
- —
- ID-uri pentru o șansă de 1% de duplicat
- —
- Timp până la acel risc de 1%
- —
Decodează un ULID
- Marcaj temporal (UTC, ISO 8601)
- Data și ora locală
- Timp Unix (ms)
- Partea aleatorie (80 de biți, hex)
Cum generezi ULID-uri sau Nano ID-uri
- În Tipul de ID, alege ULID (sortabil) sau Nano ID (scurt).
- Setează Câte (de la 1 la 1.000). Zece ID-uri sunt generate imediat ce se încarcă pagina.
- Pentru ULID-uri, lasă bifat Monoton (strict crescător), ca ID-urile create în aceeași milisecundă să se sorteze tot în ordine, și bifează Litere mici dacă sistemul tău le preferă.
- Pentru Nano ID-uri, alege un Alfabet (sau Personalizat… și scrie propriile caractere) și o Lungime.
- Apasă Generează, apoi Copiază lista sau Descarcă .txt (un ID pe linie).
Ca să citești data ascunsă într-un ULID, lipește-l în Decodează un ULID sau apasă Decodează primul ID. Instrumentul arată marcajul temporal în UTC (ISO 8601), în ora ta locală, ca milisecunde Unix și partea aleatorie de 80 de biți în hex.
Ce este un ULID?
Un ULID (Universally Unique Lexicographically Sortable Identifier) este un identificator de 128 de biți scris cu 26 de caractere Crockford Base32, de exemplu 01ARZ3NDEKTSV4RRFFQ69G5FAV. Primele 10 caractere codifică un marcaj temporal de 48 de biți în milisecunde (suficient până în anul 10889); ultimele 16 caractere sunt 80 de biți aleatorii. Crockford Base32 omite I, L, O și U ca să evite confuziile, iar decodarea nu ține cont de majuscule.
Deoarece timpul vine primul, ULID-urile se sortează alfabetic în ordinea creării. Asta le face potrivite drept chei primare: rândurile noi sunt adăugate la sfârșitul unui index B-tree în loc să fie împrăștiate ca UUID-urile aleatorii, iar poți sorta după ID în loc de o coloană separată de dată.
Modul monoton. În interiorul unei milisecunde, ULID-urile aleatorii s-ar sorta în ordine aleatorie. Cu opțiunea monotonă, instrumentul urmează specificația ULID: când sunt create mai multe ID-uri în aceeași milisecundă, păstrează marcajul temporal și adaugă 1 la partea aleatorie anterioară. Dacă ceasul merge înapoi, păstrează ultimul marcaj temporal, deci secvența nu scade niciodată.
Ține minte că un ULID dezvăluie când a fost creat. Nu folosi unul acolo unde această informație este sensibilă.
Ce este un Nano ID?
Nano ID este un identificator aleatoriu compact. Implicit are 21 de caractere dintr-un alfabet de 64 de caractere sigure pentru URL (A–Z a–z 0–9 _ -), ceea ce dă 126 de biți aleatorii, similar cu un UUID v4 (122 de biți), în mai puține caractere. Poți alege hexazecimal, doar cifre, litere mici și cifre, alfanumeric, un set fără caractere asemănătoare (fără 0/O, 1/l/I, 5/S…) pentru coduri tastate de oameni sau propriul tău alfabet de 2 până la 256 de caractere. Caracterele duplicate dintr-un alfabet personalizat sunt eliminate, deoarece ar face unele caractere mai probabile.
Fiecare caracter este extras cu crypto.getRandomValues, prin eșantionare cu respingere, deci nu există părtinire de tip modulo.
Probabilitatea de coliziune
Panoul Probabilitatea de coliziune aplică limita zilei de naștere (birthday bound). Cu un alfabet de dimensiune A și o lungime L, există N = A^L ID-uri posibile. După k ID-uri, șansa de cel puțin un duplicat este aproximativ 1 − e^(−k²/2N), deci un risc de 1% se atinge după k ≈ √(2N · ln(1/0,99)) ID-uri. Introdu ID-uri generate pe oră ca să vezi cât ar dura. Cu setările implicite și 1.000 de ID-uri pe oră, un risc de 1% durează aproximativ 149 de miliarde de ani; cu 8 caractere hexazecimale durează doar aproximativ 9.300 de ID-uri.
Întrebări frecvente
ULID sau UUID?
Ambele au 128 de biți. Un ULID este mai scurt de scris (26 de caractere în loc de 36) și se sortează după timp. UUID versiunea 7 oferă acum aceeași ordonare în timp în formatul UUID standard, pe care bazele de date îl stochează adesea nativ. Alege UUID v7 dacă stiva ta îl acceptă, ULID dacă vrei un șir compact și lizibil.
Sunt ULID-urile și Nano ID-urile suficient de sigure pentru token-uri?
Nano ID-urile cu alfabetul și lungimea implicite au 126 de biți aleatorii dintr-un generator criptografic, ceea ce este suficient pentru linkuri imposibil de ghicit. ULID-urile au doar 80 de biți aleatorii, iar în modul monoton ID-urile consecutive diferă prin una, deci nu folosi ULID-uri ca secrete.
Pot scurta un Nano ID?
Da, dar riscul de coliziune crește foarte repede. Verifică valoarea ID-uri pentru o șansă de 1% de duplicat pentru lungimea și alfabetul tău înainte să te bazezi pe un ID scurt.
De ce respinge decodorul ULID-ul meu?
Un ULID trebuie să aibă exact 26 de caractere, să folosească doar caractere Crockford Base32 și să înceapă cu 0 până la 7 (un prim caracter mai mare ar depăși 128 de biți).
Sunt ID-urile stocate sau trimise undeva?
Nu. Sunt generate în browserul tău și dispar când părăsești pagina.
Instrumente similare
- Generator UUID Generator UUID gratuit pentru versiunile 4 și 7. Creează până la 1.000 deodată, cu majuscule sau fără cratime, apoi copiază sau descarcă ca .txt.
- Generator de parole Generator gratuit de parole puternice și aleatorii, de 4 până la 128 de caractere, create în browser cu un generator sigur. Nimic nu este salvat sau trimis.
- Convertor timestamp Unix Convertește timestamp-uri Unix în secunde sau milisecunde în date lizibile în ora locală, UTC și ISO 8601 și transformă orice dată înapoi în timp epoch.