Jede Anwendung braucht eindeutige Bezeichner – für Datensätze, Dateien, Sessions oder kurze Links. Lange galt die UUID als Standardantwort, doch sie ist mit 36 Zeichen sperrig und enthält Bindestriche, die in URLs stören. Die NanoID hat sich als moderne, kompakte Alternative etabliert. Dieser Artikel erklärt, wie sie funktioniert, warum sie so sicher ist und wann sie die bessere Wahl ist.
Was ist eine NanoID?
Eine NanoID ist ein zufälliger, URL-sicherer String aus einem festen Zeichenvorrat. Standardmäßig nutzt sie 21 Zeichen aus einem 64 Zeichen umfassenden Alphabet: die Buchstaben A–Z und a–z, die Ziffern 0–9 sowie die beiden Symbole _ und -. Das Ergebnis sieht etwa so aus: V1StGXR8_Z5jdHi6B-myT.
Entscheidend ist die Qualität der Zufallszahlen. Eine gute NanoID-Implementierung nutzt einen kryptografisch sicheren Zufallsgenerator, nicht das simple Math.random(). Mit dem NanoID Generator erzeugst du sofort eine oder mehrere solcher IDs direkt im Browser, in einstellbarer Länge.
NanoID vs. UUID
Beide Formate liefern praktisch eindeutige Bezeichner, unterscheiden sich aber deutlich:
- Länge: Eine UUID v4 hat 36 Zeichen inklusive vier Bindestrichen. Eine Standard-NanoID kommt mit 21 Zeichen aus – kompakter bei vergleichbarer Sicherheit.
- URL-Sicherheit: NanoID nutzt von Haus aus nur Zeichen, die in URLs, Dateinamen und HTML keine Probleme machen. Kein Encoding nötig.
- Alphabet: UUID ist hexadezimal (16 Zeichen), NanoID nutzt 64 Zeichen. Mehr Zeichen pro Stelle bedeuten mehr Entropie auf weniger Raum.
- Flexibilität: Bei NanoID lassen sich Länge und Alphabet frei anpassen – etwa um verwechselbare Zeichen wie 0 und O wegzulassen.
Wie sicher ist eine NanoID gegen Kollisionen?
Die berechtigte Sorge bei zufälligen IDs ist die Kollision – also dass zweimal dieselbe ID erzeugt wird. Bei einer Standard-NanoID mit 21 Zeichen aus einem 64er-Alphabet ist die Wahrscheinlichkeit verschwindend gering: Selbst bei 1000 generierten IDs pro Sekunde würde es nach den Berechnungen der offiziellen Dokumentation rund 149 Milliarden Jahre dauern, bis mit nennenswerter Wahrscheinlichkeit eine einzige Kollision auftritt.
Wichtig zu verstehen: Die Sicherheit skaliert mit der Länge und der Größe des Alphabets. Kürzt du die ID auf 8 oder 10 Zeichen für kompakte URLs, steigt die Kollisionswahrscheinlichkeit – für einen Link-Shortener mit überschaubaren Mengen ist das oft trotzdem ausreichend. Wer Millionen von IDs vergibt, sollte bei der Standardlänge bleiben.
Typische Einsatzgebiete
- Datenbank-Primärschlüssel: als Alternative zu fortlaufenden Integern, ohne die Reihenfolge oder Anzahl der Datensätze zu verraten.
- Kurz-URLs und Share-Links: kompakt, gut lesbar und ohne Sonderzeichen-Encoding.
- Dateinamen: kollisionsarme Namen für Uploads, ohne dass man eine zentrale Zählung braucht.
- Frontend-Keys: stabile, eindeutige Schlüssel für Listenelemente und temporäre Objekte.
Praktische Anwendung
Brauchst du schnell ein paar eindeutige Bezeichner für einen Prototypen, eine Migration oder ein Testszenario, erzeuge sie mit dem NanoID Generator – Länge wählen, generieren, kopieren. Wenn du nebenbei prüfen willst, wie zufällig und stark eine selbst gebaute Zeichenkette als Geheimnis ist, hilft der Passwort Entropie Rechner. Noch mehr Werkzeuge für die tägliche Entwicklungsarbeit findest du in der Übersicht der kotsch.tech Webtools.
Häufige Fragen
Kann ich die Länge einer NanoID frei wählen?
Ja, das ist einer der Vorteile. Du kannst kürzere IDs für kompakte URLs oder längere für besonders hohe Eindeutigkeit erzeugen. Beachte nur, dass kürzere IDs ein höheres Kollisionsrisiko haben, je mehr du davon vergibst.
Ist eine NanoID sortierbar nach Erstellungszeit?
Nein, die Standard-NanoID ist rein zufällig und enthält keinen Zeitstempel. Wenn du chronologisch sortierbare IDs brauchst, eignen sich Formate wie ULID oder UUID v7 besser. Die fehlende Sortierbarkeit ist beim Datenbankindex unter Umständen zu bedenken.
Verrät eine NanoID etwas über meine Daten?
Nein. Weil sie zufällig ist und keinen Zähler enthält, lässt sich aus einer NanoID weder die Anzahl der Datensätze noch deren Reihenfolge ableiten – ein Sicherheitsvorteil gegenüber fortlaufenden numerischen IDs.