Wat is Nano ID en waarom de lengte en het alfabet instelbaar zijn
Deze pagina genereert unieke identificatoren volgens het Nano ID-formaat. In plaats van een vaste UUID van 36 tekens of een ULID van 26 tekens, gebruikt Nano ID standaard 21 tekens – korter dan UUID, maar met een vergelijkbare collisionweerstand. Het unieke van deze tool is dat zowel de lengte als het alfabet volledig aanpasbaar zijn. De lengte kan worden ingesteld tussen 2 en 36 tekens, en het alfabet is een bewerkbaar tekstveld dat standaard URL-veilige tekens bevat (hoofdletters, kleine letters, cijfers, en een koppelteken/underscore).
Het aanpassen van deze parameters gebeurt direct: zodra u de schuifregelaar voor de lengte verschuift of het alfabet wijzigt, worden de IDs onmiddellijk opnieuw gegenereerd. Dit maakt de tool geschikt voor toepassingen waarin u precieze beperkingen heeft – denk aan databasekolommen met een maximaal aantal tekens, of aan QR-codes waarin alleen alfanumerieke tekens zijn toegestaan.
Waarom standaard 21?
De makers van Nano ID kozen 21 tekens, samen met een URL-veilig alfabet van 64 tekens, omdat dat een collisiekan biedt van ongeveer 1 op 1 miljard bij 1 biljoen gegenereerde IDs. Dat is ruim voldoende voor de meeste praktische toepassingen. U kunt echter de lengte verlagen tot 2 tekens (voor zeer kleine sets) of verhogen tot 36 (voor extra veiligheid). Het alfabet mag elke combinatie van unicode-tekens zijn in theorie, maar de standaard is een set van A‑Z, a‑z, 0‑9, plus het koppelteken - en underscore _ – allemaal veilig in URL’s.
Hoe de pagina werkt: inputs, outputs en statusmeldingen
De interface is eenvoudig maar precies. U selecteert het formaat (hier alleen Nano ID), het aantal te genereren IDs (tussen 1 en 100), de lengte (via een schuifregelaar van 2 tot 36, standaard 21), en het alfabet (bewerkbaar tekstveld).
De outputs:
- Lijst gegenereerde IDs – elke ID is uniek in de set.
- ID-teller – het exacte aantal aangemaakte IDs.
- Statusregel – deze toont “Gereed.” in rust, “Gegenereerd.” na elke generatie, en “Alles gekopieerd!” nadat u op “Alles kopiëren” hebt geklikt.
Als het alfabet ongeldig wordt (minder dan twee verschillende tekens), verschijnt de foutmelding: “Alfabet heeft ten minste 2 verschillende tekens nodig.” De resultaten worden dan leeg, de ID-teller wordt 0, en de knop “Alles kopiëren” wordt uitgeschakeld.
Elke individuele ID kunt u kopiëren door erop te klikken – handig als u maar één token nodig heeft. De “Alles kopiëren” knop kopieert de hele lijst in één keer naar het klembord.
Regels en randgevallen: wat gebeurt er als u grenzen opzoekt?
De tool controleert strikt op geldige invoer:
- Alfabet met slechts één uniek teken – als u bijvoorbeeld alleen de letter “a” invoert, dan zijn er geen verschillende karakters. Het is wiskundig onmogelijk om unieke IDs te genereren, omdat elke ID van lengte L dan alleen maar “aaaa...” zou zijn. Daarom worden de resultaten gewist, de ID-teller op 0 gezet en de kopieerfunctie uitgeschakeld. U moet ten minste twee verschillende tekens hebben.
- Lengte onder 2 of boven 36 – de schuifregelaar voorkomt dat; u kunt geen ongeldige waarde instellen.
- Aantal IDs tussen 1 en 100 – beperkt om de browser niet te overbelasten; bij honderd IDs van 36 tekens is dat 3600 tekens – nog steeds snel.
- Wijzigen van willekeurige parameter – elke aanpassing van lengte, alfabet, aantal of formaat (hier alleen Nano ID) start een nieuwe generatie. Er wordt geen oude set bewaard.
Deze randgevallen zijn niet willekeurig; ze voorkomen dat de tool IDs produceert die geen echte uniekheid garanderen. In de praktijk ziet men vaak dat gebruikers het alfabet te klein maken – bijvoorbeeld alleen cijfers 0‑9. Dat werkt prima voor korte IDs, maar vergroot de collisiekans aanzienlijk. De tool waarschuwt niet actief voor een te klein alfabet, zolang het maar twee of meer tekens heeft. Het blijft de verantwoordelijkheid van de gebruiker.
Collisionweerstand: de wiskunde achter lengte en alfabetgrootte
Het aantal mogelijke IDs groeit exponentieel met de lengte L en de alfabetgrootte A. De formule is: aantal unieke combinaties = A^L.
- UUID (vast 128 bits) geeft 2^128 ≈ 3,4 × 10^38 mogelijkheden.
- Nano ID met standaard alfabet van 64 tekens en lengte 21: 64^21 ≈ 2,0 × 10^37. Dat is slechts een factor 17 minder dan UUID – de collisieweerstand is vrijwel gelijk.
- Als u het alfabet verkleint tot alleen cijfers (10 tekens) en lengte 21, daalt het aantal mogelijkheden naar 10^21 ≈ 1,0 × 10^21 – nog steeds enorm, maar veel kleiner. Voor hoge beveiligingseisen kunt u beter het volledige URL-veilige alfabet gebruiken of de lengte verhogen.
- Verlaging van de lengte naar 8 met alfabet van 64 tekens geeft 64^8 ≈ 2,8 × 10^14 – voldoende voor duizenden unieke tokens, maar niet voor miljarden.
De pagina genereert elke ID lokaal, in de browser, met behulp van crypto.getRandomValues(). Deze functie haalt cryptografisch sterke willekeur uit het besturingssysteem – niet een pseudo-random algorithme. Dat betekent dat de IDs onvoorspelbaar zijn en niet te raden, zelfs niet als een aanvaller eerdere IDs kent.
Voorbeeld collisiekan bij honderd IDs:
Stel u genereert 100 IDs van lengte 21 met het standaardalfabet (64 tekens). De kans op een collisie in deze set is extreem klein – ruwweg 1 op 10^32. Vergelijk dat met UUID’s van lengte 36, waar de kans bij 100 IDs nog kleiner is, maar het verschil is in de praktijk verwaarloosbaar.
Waarom client-side generatie belangrijk is
Deze pagina stuurt geen gegevens naar BroBroGo of enige andere server. Alle berekeningen vinden plaats in uw browser, met lokale willekeur. Dat heeft privacyvoordelen: u kunt gevoelige identifiers genereren (denk aan API-sleutels, sessie-tokens, herstelcodes) zonder dat uw netwerkverkeer deze onthult. Ook voorkomt het dat een centrale server een log bijhoudt van gegenereerde IDs – iets wat bij online API’s vaak wel gebeurt.
Voor ontwikkelaars die werken aan beveiligingsgevoelige toepassingen is client-side generatie de enige aanvaardbare manier om tokens te maken die nooit een server mogen verlaten. De tool fungeert dan als een offline-werkplek: u genereert een reeks IDs, kopieert ze, en sluit de pagina. Er blijft geen spoor achter.
Gebruiksscenario’s en praktische adviezen
- Web-API’s en korte links – Nano ID met standaardinstellingen (21 tekens) is kort genoeg om in een URL te passen zonder verkorting, maar veilig genoeg om niet geraden te worden. Verlaag de lengte naar 10-12 voor public-URL’s die niet geheim hoeven te zijn.
- Database primaire sleutels – Kies een lengte van minimaal 16 bij een alfabet van 52 of 64 om botsingen in een tabel met miljoenen rijen te voorkomen. Gebruik letters en cijfers.
- QR-codes met beperkte data – Als de QR-code alleen alfanumerieke tekens toestaat, kies dan een alfabet met alleen A-Z, 0-9. Nano ID wordt dan 36% kleiner dan een hex-encoded UUID.
- Ontwikkeling en testen – Gebruik korte IDs (2-5 tekens) voor handmatige testdata. Sneller typen, maar nooit in productie.
- Privacy-apps – Gebruik het standaardalfabet, lengte 36 voor maximale veiligheid. De IDs zijn dan langer, maar nog steeds korter dan UUID en volledig URL-veilig.
Een veelgemaakte fout is het alfabet te klein kiezen (bijvoorbeeld alleen cijfers) in combinatie met een korte lengte (bijv. 4). Dat geeft slechts 10^4 = 10.000 mogelijkheden – vrijwel gegarandeerd collisie bij 100 IDs. Verhoog de lengte evenredig: voor cijfers alleen heeft u minimaal 10 tekens nodig om een acceptabel bereik te krijgen (10^10 = 10 miljard).
Veelgestelde vragen
Waarom is de standaardlengte 21 en niet 36 zoals UUID?
21 tekens met een URL-veilig alfabet van 64 tekens levert ongeveer 2 × 10^37 combinaties op, vergelijkbaar met UUID. Bij gelijke collisieweerstand is een kortere ID voordeliger voor opslag en transmissie.
Wat gebeurt er als ik het alfabet wijzig naar bijvoorbeeld alleen “a”?
De tool toont de foutmelding “Alfabet heeft ten minste 2 verschillende tekens nodig.” De resultaten worden leeg en de kopieerknop wordt uitgeschakeld. U moet minimaal twee verschillende karakters invoeren om unieke IDs te kunnen genereren.
Kan ik de IDs offline gebruiken?
Ja. De pagina werkt volledig in de browser zonder netwerkverkeer. Zelfs de seed voor de willekeur wordt uit het systeem gehaald (crypto.getRandomValues). U kunt de tool gebruiken op een computer zonder internet, mits de pagina eenmaal geladen is.
Hoe groot is de kans op een collisie bij 100 IDs van lengte 21?
Extreem klein. Voor een alfabet van 64 tekens is de kans minder dan 10^-32. In de praktijk is dat verwaarloosbaar. Voor lengte 8 met alfabet 64 is de kans bij 100 IDs nog steeds heel klein – circa 10^-8, of 1 op 100 miljoen. Voor de meeste toepassingen acceptabel, maar niet voor cryptografische tokens.
Is het veilig om Nano ID te gebruiken voor wachtwoorden?
Nee. Nano ID is ontworpen voor identificatoren, niet voor geheime sleutels. De karakterset van 64 tekens en een lengte van 21 geven een entropie van 21 × log2(64) ≈ 21 × 6 = 126 bits. Dat is hoog, maar de IDs zijn bedoeld om openbaar te zijn (URL-veilig) – ze worden niet gehashed of met zout opgeslagen. Gebruik voor wachtwoorden een speciale generator die rekening houdt met brute force.
Waarom kan ik geen 101 IDs genereren?
De tool is beperkt tot 100 IDs per keer om de browser niet te belasten. Voor grotere aantallen kunt u de generatie meerdere keren uitvoeren. Omdat elke set uniek is (ze worden onafhankelijk gegenereerd), kunt u eenvoudig batches samenvoegen.