Drei ähnliche Formate, drei unterschiedliche Jobs
Alle drei Formate sind letztlich 128-Bit-Werte, aber sie unterscheiden sich in zwei Dimensionen: ob ein Zeitstempel eingebettet ist und wie der Wert als Text dargestellt wird. Eine v4-UUID enthält keinerlei Zeitinformation und wird als 36-Zeichen-Hex-String mit Bindestrichen geschrieben. Eine v7-UUID nutzt dieselbe Hex-Schreibweise, beginnt aber mit einem Millisekunden-Zeitstempel in den ersten 48 Bit. Eine ULID enthält denselben Zeitstempel-Ansatz, wird aber komplett anders kodiert: 26 Zeichen aus dem Crockford-Base32-Alphabet, ohne Bindestriche, groß-/kleinschreibungsunabhängig lesbar.
| Format | Zeitstempel? | Textkodierung | Typischer Einsatzort |
|---|---|---|---|
| v4-UUID | Nein | Hex, 36 Zeichen mit Bindestrichen | Sitzungs-Token, unabhängige Datensätze |
| v7-UUID | Ja (ms-genau) | Hex, 36 Zeichen mit Bindestrichen | Datenbank-Primärschlüssel |
| ULID | Ja (ms-genau) | Crockford Base32, 26 Zeichen | Log-Dateinamen, Objektspeicher-Keys |
Im ToolPico-UUID-Generator lassen sich alle drei direkt nebeneinander erzeugen: v4 und v7 über die entsprechenden Tab-Reiter mit Bulk-Generierung, ULID über das eigene Mini-Tool im Abschnitt der Zusatzwerkzeuge auf derselben Seite.
Beispiel-Workflow: v7 für die Datenbank, ULID für Log-Dateien
Angenommenes Beispiel-Szenario: Ein Team baut eine Event-Pipeline, die eingehende Ereignisse zunächst in einer relationalen Datenbank protokolliert und gleichzeitig als Rohdaten-Datei in einem Objektspeicher (etwa S3-kompatibel) ablegt. Für die Datenbanktabelle wählt das Team v7-UUIDs als Primärschlüssel, weil die meisten modernen Datenbanken einen nativen UUID-Spaltentyp unterstützen und die Sortierbarkeit die Indexpflege bei hohem Ereignisaufkommen erleichtert (siehe dazu auch den Grundlagen-Beitrag zu v4 vs. v7 auf diesem Blog).
Für die Dateinamen im Objektspeicher entscheidet sich dasselbe Team für ULIDs statt v7-UUIDs — aus einem praktischen Grund: Ein 26-Zeichen-Base32-String ohne Bindestriche ist als Dateiname oder URL-Segment kompakter, und die Groß-/Kleinschreibungsunabhängigkeit des Crockford-Alphabets reduziert das Risiko von Tippfehlern beim manuellen Kopieren im Vergleich zu einem längeren Hex-String. Beide IDs — die v7-UUID in der Datenbank und die ULID im Dateinamen — bleiben durch denselben eingebetteten Zeitstempel zeitlich vergleichbar, auch wenn sie unterschiedlich aussehen.
Zum Testen eines solchen Setups eignet sich die Bulk-Generierung im v7-Reiter (bis zu 1.000 Werte auf einmal) in Kombination mit dem separaten ULID-Mini-Tool auf derselben Seite — beide lassen sich unabhängig voneinander mit einem Klick kopieren oder als Datei herunterladen, um realistische Testdaten für beide Seiten der Pipeline zu erzeugen.
Base64/Hex-Konvertierung und Zeitstempel-Decoding als Debugging-Hilfe
Ein Konverter wird vor allem dann nützlich, wenn eine ID nicht im gewohnten 36-Zeichen-Format vorliegt — etwa wenn ein Binärprotokoll UUIDs als 16-Byte-Blob überträgt oder eine ältere API sie Base64-kodiert zurückgibt. Statt die Umrechnung manuell nachzuvollziehen, lässt sich der Wert direkt in den UUID-⇄-Base64/Hex-Konverter dieses Tools einfügen, um ihn in die Standarddarstellung zurückzuverwandeln — und umgekehrt.
Ähnlich hilfreich ist der eingebettete Zeitstempel-Decoder im Reiter „Validieren": Fügst du dort eine v1-, v7-UUID oder eine ULID ein, decodiert das Tool den eingebetteten Erstellungszeitpunkt automatisch in UTC und deiner lokalen Zeitzone. Das ist besonders praktisch bei der Fehlersuche in einer Pipeline wie der oben beschriebenen — etwa um schnell zu prüfen, ob ein Datenbankeintrag (v7) und eine zugehörige Log-Datei (ULID) tatsächlich zum selben Zeitpunkt erzeugt wurden, ohne den Zeitstempel von Hand aus dem Bit-Layout herauszurechnen.
- Bei Formatabweichungen: zuerst mit dem Konverter auf ein gemeinsames Format (z. B. Standard-Hex) normalisieren, bevor du zwei IDs manuell vergleichst.
- Bei Zeitfragen: den Validator-Reiter nutzen, statt den Zeitstempel manuell aus Hex- oder Base32-Zeichen zu extrahieren.
- Bei gemischten v4/v7-Beständen: beachten, dass der Zeitstempel-Decoder bei v4- und v3/v5-UUIDs naturgemäß kein Datum liefern kann, da diese keine Zeitinformation enthalten.
v4, v7 und ULID direkt nebeneinander generieren, zwischen Base64/Hex konvertieren und eingebettete Zeitstempel decodieren — alles im Browser, ganz ohne Serveranfrage.
Zum UUID-Generator →