UUID Generator

Generieren Sie UUIDs in Ihrem Browser: völlig zufällige v4, zeitlich geordnete v7 für Datenbank-Schlüssel oder deterministische v5 aus einem Namespace und Namen. Bis zu 1000 auf einmal, und nichts verlässt Ihr Gerät.

Klicken Sie auf „Generieren“, um ein Ergebnis zu erhalten.
Version
Erweiterte Einstellungen

Benötigen Sie einen Identifikator, der nicht mit einem kollidiert, den jemand anderes auf einer Maschine erstellt hat, von der Sie noch nie gehört haben, ohne jemanden um Erlaubnis zu fragen? Genau das ist die Aufgabe einer UUID. Es handelt sich um eine 128-Bit-Zahl, geschrieben als 36 Zeichen im bekannten 8-4-4-4-12-Muster, und ihr gesamtes Design zielt darauf ab, dass keine zwei gleich sind, obwohl niemand koordiniert, wer welche bekommt. Dieser kostenlose Generator erstellt sie in Ihrem Browser: Wählen Sie eine Version unter „Version“, geben Sie unter „Anzahl“ an, wie viele Sie benötigen, und drücken Sie auf „Generieren“. Die Seite öffnet sich mit einer einzelnen v4, der Version, die die meisten Projekte benötigen, sodass der erste Identifikator nur einen Klick entfernt ist.

Jeder Identifikator wird in Ihrem Browser erstellt, und jeder zufällige Teil stammt aus der Web Crypto API. Die Version 4 verwendet crypto.randomUUID(), wo der Browser dies anbietet, und ansonsten crypto.getRandomValues() — eine kryptografisch starke Zufallsquelle anstelle einer pseudo-zufälligen JavaScript-Funktion wie Math.random(). Version 7 setzt hier einen 48-Bit-Millisekunden-Zeitstempel an den Anfang, dann einen 12-Bit-Zähler, der innerhalb derselben Millisekunde hochzählt, gefolgt von 62 zufälligen Bits — die Zählermethode, die RFC 9562 beschreibt, eines der darin erlaubten Layouts; dieser Zähler ist der Grund, warum ein Tausender-Stapel in der richtigen Reihenfolge und nicht gemischt ausgegeben wird. Version 1 kombiniert einen Zeitstempel mit einem zufälligen Knoten-Identifikator, bei dem das Multicast-Bit gesetzt ist, sodass er niemals die Adresse Ihrer Netzwerkkarte enthält, wie es die ursprünglichen Implementierungen aus den 1990er Jahren taten. Die Versionen 3 und 5 sind überhaupt nicht zufällig: Sie hashen einen Namespace zusammen mit einem Namen unter Verwendung von MD5 bzw. SHA-1, und dieses Hashing, ausgeführt durch den seiteneigenen MD5- und SHA-1-Code statt über Web Crypto, findet ebenfalls auf Ihrem Gerät statt. Ihre Identifikatoren werden niemals an unseren Server gesendet, sodass wir sie weder sehen noch protokollieren, und sobald die Seite geladen ist, funktioniert sie auch ohne Internetverbindung weiter.

„Version“ ist das Feld, das alles andere entscheidet. Version 4 besteht aus 122 zufälligen Bits und hat keine Struktur — der Standard und die richtige Antwort, wenn ein Identifikator nur einzigartig sein muss. Version 7, wie sie hier erstellt wird, behält 62 zufällige Bits, beginnt jedoch mit dem Zeitpunkt ihrer Erstellung, sodass ein Stapel davon in der Reihenfolge seiner Entstehung sortiert wird; das macht sie zur Version der Wahl, wenn der Identifikator ein Datenbank-Schlüssel (primary key) werden soll. Version 1 ist das ursprüngliche zeitbasierte Schema, das hier für Systeme beibehalten wird, die noch danach verlangen. Die Versionen 3 und 5 sind das ungleiche Paar: Sie sind deterministisch, was bedeutet, dass dieselben Eingaben immer denselben Identifikator erzeugen, und sie erfordern zwei zusätzliche Felder — „Namespace“, welches einer der Standardräume DNS, URL, OID und X.500 oder Ihr „Eigener Namespace (UUID)“ ist, und „Name“, die Zeichenfolge, die identifiziert wird. Wenn Sie v5 den URL-Namespace und https://example.com/a geben, erhalten Sie heute, morgen und auf der Maschine von jemand anderem dieselbe UUID. Aus diesem Grund verschwindet das Feld „Anzahl“, wenn v3 oder v5 ausgewählt wird: Tausend Kopien eines deterministischen Wertes wären lediglich tausend Kopien ein und desselben deterministischen Wertes. Für jede andere Version reicht „Anzahl“ von 1 bis 1000.

Vier Schalter ändern die Form der Ausgabe, ohne die zugrunde liegenden 128 Bits zu verändern. „Großbuchstaben“ druckt die hexadezimalen Ziffern in Versalien, „Ohne Bindestriche“ liefert die kompakte 32-Zeichen-Form, die einige Spalten und Dateinamen bevorzugen, und „Geschweifte Klammern“ umschließt den Wert mit { } — die Art, wie Windows und .NET eine GUID üblicherweise schreiben. Unter „Erweiterte Einstellungen“ fügt urn:uuid: das Präfix hinzu, das sie zu einer formellen URN macht; es schaltet „Geschweifte Klammern“ und „Ohne Bindestriche“ aus, während es aktiviert ist, da der Standard genau eine URN-Form erlaubt und dies die kanonische Form mit Bindestrichen ist. „Kopierformat“ bestimmt, wie ein Stapel zusammengefügt wird, wenn Sie ihn entnehmen: einer pro Zeile, durch Kommas getrennt, oder jeder Wert in Anführungszeichen mit einem abschließenden Komma, das direkt in ein Array im Code eingefügt werden kann. Unter dem Ergebnis befindet sich eine Zeile, die die Zufälligkeit in Bits angibt — 122 für v4, 62 für v7 — und für v7 den Zeitstempel, der im ersten Identifikator des Stapels kodiert ist, sodass die Zeit innerhalb des Wertes sichtbar ist und nicht nur impliziert wird. „Alles kopieren“ und „Als Datei speichern“ berücksichtigen beide „Kopierformat“. „Verlauf“ speichert Ihre letzten 10 Stapel in Ihrem eigenen Browser: Klicken Sie auf einen, um ihn zurückzuholen, kopieren oder löschen Sie einen einzelnen Eintrag oder löschen Sie alles. „Löschen“ leert das Ergebnis und lässt Ihre Einstellungen in Ruhe, und ab 50 Identifikatoren wird die Liste zu einem einzigen scrollbaren Block anstelle von fünfzig Zeilen.

Das Folgenreichste auf dieser Seite ist der Unterschied zwischen v4 und v7 als Primärschlüssel (primary key), und das ist keine Geschmacksache. Die meisten Datenbank-Indizes sind B-Trees, die in sortierter Reihenfolge gehalten werden, und wo ein neuer Schlüssel in dieser Reihenfolge landet, entscheidet, wie viel Arbeit das Einfügen kostet. Ein v4-Schlüssel ist zufällig, sodass aufeinanderfolgende Einfügungen in unzusammenhängenden Ecken des Index landen: Seiten, die voll waren, werden aufgeteilt (page split), die Teile des Baums, die die Datenbank im Speicher hält, sind selten die Teile, die das nächste Einfügen benötigt, und der Index wächst langsamer und wird stärker fragmentiert, als die Zeilen, auf die er zeigt, es rechtfertigen. Ein v7-Schlüssel beginnt mit der aktuellen Millisekunde, sodass aufeinanderfolgende Einfügungen am rechten Rand des Baums nebeneinander landen, ähnlich wie es ein automatisch inkrementierender Integer tut. Wie viel das bringt, hängt von der Datenbank, ihren Indizes und der Arbeitslast ab, aber das ist der Kompromiss: v7 bringt das Einfügemuster eines sequenziellen Schlüssels mit sich, während die Eigenschaft erhalten bleibt, weshalb Sie sich überhaupt für UUIDs entschieden haben, nämlich dass jeder eine prägen kann, ohne einen Server fragen zu müssen. Der Preis dafür ist, dass die Erstellungszeit nun innerhalb des Identifikators lesbar ist, und ob das eine Rolle spielt, ist eine Frage Ihrer Daten, nicht des Formats.

Nichts prüft je eine UUID auf Einzigartigkeit; ihre Größe ist die Garantie. Es gibt keine Registrierung, keinen Server-Round-Trip, kein Nachschlagen — ein Generator erzeugt eine Zahl und händigt sie aus, und der Grund, warum zwei von ihnen nicht kollidieren, ist einfach, dass es 2^122 mögliche v4-Werte gibt, etwa 5,3 Sextillionen. Das Geburtstagsparadoxon (birthday problem) ist der ehrliche Weg, das einzuordnen: Sie bräuchten etwa 2,7 Trillionen Identifikatoren, bevor die Chance, dass zwei davon übereinstimmen, fifty-fifty stünde, was einer Milliarde neuer UUIDs pro Sekunde für 86 Jahre entspricht. Es lohnt sich, präzise zu sein, was das verspricht und was nicht. Es ist eine statistische Garantie, keine arithmetische, und sie gilt nur, solange die zugrunde liegende Zufälligkeit echt ist — ein schlecht initialisierter Generator oder eine virtuelle Maschine, die zusammen mit ihrem Entropiepool geklont wird, bricht sie auf eine Weise, die das Format nicht erkennen kann. Version 7 schränkt die Frage weiter ein: Innerhalb eines einzigen Stapels kann dieser Generator einen Wert überhaupt nicht wiederholen, da der Zähler hochzählt statt zu würfeln, und über unabhängige Generatoren hinweg erledigen die 62 zufälligen Bits die Arbeit.

Eine UUID ist ein Identifikator, kein Passwort. Version 4 ist unvorhersehbar, und das verleitet dazu, sie als Geheimnis zu behandeln — als Link zum Zurücksetzen des Passworts, als nicht zu erratende URL, als Sitzungs-Token, als API-Schlüssel. Die Unvorhersehbarkeit ist real, aber Geheimhaltung ist eine Eigenschaft davon, wie ein Wert gehandhabt wird, und Identifikatoren werden absichtlich nachlässig gehandhabt: Sie sitzen in URLs, die im Browserverlauf, in Serverprotokollen, Referrer-Headern und Analysen landen und in Chat-Nachrichten kopiert werden, weshalb der Umgang mit ihnen unter den Vorschriften der DSGVO heikel ist, wenn sie als Geheimnisse dienen. Die anderen Versionen sind noch schlechtere Kandidaten. Sowohl Version 1 als auch Version 7 kodieren den Moment der Erstellung, sodass jeder, der eine hat, ungefähr weiß, wann sie erstellt wurde, und die Umgebung von allem eingrenzen kann, was daneben erstellt wurde. Die Versionen 3 und 5 sind absichtlich deterministisch: Eine v5 UUID einer E-Mail-Adresse ist kein gehashtes Geheimnis, sondern ein Wert, den jeder mit derselben Adresse in einer Sekunde berechnen kann. Verwenden Sie eine UUID, um ein Ding zu benennen. Verwenden Sie einen Passwort-Generator oder einen Token aus einer Bibliothek für Geheimnisse, wenn der Wert unbekannt bleiben muss.

Warum diesen UUID Generator wählen?

UUIDs tauchen überall dort auf, wo etwas benannt werden muss, bevor irgendetwas bestätigen kann, dass der Name frei ist. Anwendungscode prägt sie für Zeilen, die er gleich einfügen wird, sodass das Objekt eine Identität hat, bevor es jemals die Datenbank erreicht hat, und ein Client darauf verweisen kann, während der Schreibvorgang noch läuft. Verteilte Systeme stützen sich noch stärker auf sie: Mehrere Dienste, die in dieselbe Tabelle schreiben, ein mobiler Offline-Client, der Datensätze in einem Flugzeug erstellt, eine Warteschlange, die die bereits verarbeitete Nachricht erkennen muss — keines dieser Systeme kann warten, bis es an der Reihe für einen gemeinsamen Zähler ist. Version 5 deckt einen anderen Bedarf ab, nämlich einen stabilen Identifikator, der von etwas abgeleitet ist, das Sie bereits haben: Dasselbe Dokument, dieselbe URL oder dasselbe Konto wird immer auf dieselbe UUID abgebildet, sodass ein Import, der Datensätze über diesen Identifikator abgleicht, zweimal ausgeführt werden kann, ohne etwas zu duplizieren. Anderswo sind sie einfach das Format, das ein System verlangt — ein österreichisches Verwaltungsservice, das Meldungen verarbeitet, eine Bank in Wien, die Kundendaten konsolidiert, ein Industrieunternehmen in der Steiermark, dessen Feldgeräte synchronisieren, wenn sie wieder Empfang haben, oder eine Forschungsgruppe, die Studiendaten auswertet.

Es lohnt sich, einige ehrliche Grenzen zu kennen. Ein Stapel bedeutet eine Version: Der Wert in „Version“ gilt für alles darin, also sind ein Durchlauf von v4 und ein Durchlauf von v7 zwei Stapel. Dies ist ein Generator, kein Inspektor — das Einfügen einer UUID, um ihre Version oder ihren Zeitstempel auszulesen, ist nichts, was diese Seite tut. „Als Datei speichern“ schreibt eine reine Textdatei anstelle von CSV oder JSON. Version 7 gibt offen preis, wann sie erstellt wurde, bis auf die Millisekunde, was ein echter Kompromiss und kein Fehler ist, und Version 1 lässt die Zeit auf die gleiche Weise durchsickern; wenn das ein Problem für Ihre Daten ist, ist Version 4 die Version, die niemandem etwas verrät. Zwei spezielle Werte aus dem Standard sind keine Versionen und daher keine Optionen in „Version“, aber Sie können sie von hier kopieren: die nil UUID, 00000000-0000-0000-0000-000000000000, und die max UUID, ffffffff-ffff-ffff-ffff-ffffffffffff. Alles auf dieser Seite folgt RFC 9562, der Spezifikation, die RFC 4122 im Jahr 2024 abgelöst hat, sodass die Ausgabe standardmäßiger UUID-Text ist, den Bibliotheken und Datenbanken lesen — auch wenn eine bestimmte API möglicherweise nur bestimmte Versionen oder eine bestimmte Schreibweise akzeptiert. Innerhalb dieser Grenzen ist die Garantie stark: Jeder Identifikator wird nach dem Standard auf Ihrer eigenen Maschine erstellt und niemals an unseren Server gesendet, und jeder zufällige Teil stammt aus einer kryptografisch sicheren Quelle.

FAQ

Wie generiere ich eine UUID?

Wählen Sie eine Version in „Version“, stellen Sie unter „Anzahl“ ein, wie viele Sie benötigen, und drücken Sie auf „Generieren“. Die Seite öffnet sich mit einem einzelnen Identifikator der Version 4, was die meisten Projekte wollen, sodass eine gewöhnliche UUID nur einen Klick entfernt ist. Jeder Wert erscheint mit seinem eigenen Kopieren-Button, und „Alles kopieren“ übernimmt den gesamten Stapel auf einmal.

Was ist der Unterschied zwischen UUID v4 und v7?

Version 4 besteht aus 122 zufälligen Bits ganz ohne Struktur, sodass zwei davon in keiner Beziehung zueinander stehen. Version 7 verwendet die ersten 48 Bits für die Millisekunde, in der sie erstellt wurde — dieser Generator fügt dann einen Zähler und 62 zufällige Bits hinzu — und ist daher sortierbar: Ein Stapel wird in der Reihenfolge ausgegeben, in der er erstellt wurde. Verwenden Sie v4, wenn ein Identifikator nur einzigartig sein muss, und v7, wenn er auch ein Datenbank-Schlüssel sein soll.

Welche UUID-Version sollte ich verwenden?

Version 4, es sei denn, Sie haben einen Grund, eine andere zu wählen. Wählen Sie Version 7, wenn der Identifikator ein Primärschlüssel wird und die Einfüge-Performance wichtig ist, Version 5, wenn dieselbe Eingabe immer denselben Identifikator erzeugen muss, und Version 1 nur, wenn ein System, mit dem Sie kommunizieren müssen, ausdrücklich danach verlangt. Version 3 ist Version 5 mit MD5 anstelle von SHA-1 und existiert aus Kompatibilitätsgründen.

Sind die generierten UUIDs wirklich zufällig und sicher?

Die Zufälligkeit ist kryptografisch sicher: Sie stammt von der Web Crypto API Ihres Browsers, über crypto.randomUUID() oder crypto.getRandomValues(), nicht von Math.random(). Sicher im Sinne von unvorhersehbar ist eine andere Frage als sicher im Sinne von geheim — eine UUID ist ein Identifikator und sollte nicht als Passwort, Sitzungs-Token oder API-Schlüssel verwendet werden.

Kann ich viele UUIDs auf einmal generieren?

Ja, bis zu 1000 auf einmal. Stellen Sie „Anzahl“ ein und drücken Sie auf „Generieren“; nach fünfzig Werten wird das Ergebnis zu einem einzigen scrollbaren Block anstelle einer langen Liste von Zeilen. „Alles kopieren“ und „Als Datei speichern“ übernehmen den gesamten Stapel, verbunden auf die Art, wie „Kopierformat“ es vorgibt — einer pro Zeile, durch Komma getrennt, oder in Anführungszeichen zum Einfügen in ein Array.

Warum geben mir v3 und v5 jedes Mal dieselbe UUID?

Weil sie genau dafür gedacht sind. Die Versionen 3 und 5 sind deterministisch: Sie hashen den Namespace und den Namen, den Sie ihnen geben, sodass identische Eingaben immer einen identischen Identifikator erzeugen, auf jeder Maschine und in jeder Sprache. Das macht sie nützlich, um einen stabilen Identifikator aus etwas abzuleiten, das Sie bereits haben, und das ist auch der Grund, warum „Anzahl“ ausgeblendet wird, wenn Sie sie auswählen.

Was sind Namespace und Name, und welchen Namespace sollte ich wählen?

Es sind die beiden Eingaben, aus denen eine UUID der Version 3 oder Version 5 berechnet wird. „Namespace“ gibt an, um welche Art von Name es sich handelt — DNS für Hostnamen, URL für Adressen, OID und X.500 für jene Verzeichnisschemata, oder „Eigener Namespace (UUID)“, wenn Sie eine eigene Namespace-UUID angeben möchten, was die übliche Wahl innerhalb einer Anwendung ist. „Name“ ist die Zeichenfolge selbst. Verschiedene Namespaces liefern völlig unterschiedliche Ergebnisse für denselben Namen, was der Zweck ihres Vorhandenseins ist.

Warum ist UUID v7 besser als v4 für einen Datenbank-Primärschlüssel?

Wegen der Stelle, an der die Werte im Index landen. Ein B-Tree-Index, die übliche Art, wird in sortierter Reihenfolge gehalten, und ein zufälliger v4-Schlüssel landet irgendwo darin, sodass Einfügungen Seiten (page split) überall im Baum aufteilen und die im Speicher gehaltenen Teile selten die Teile sind, die als nächstes benötigt werden. Ein v7-Schlüssel beginnt mit der aktuellen Millisekunde, sodass aufeinanderfolgende Einfügungen zusammen am Ende des Index landen, ganz ähnlich wie ein sequenzieller Integer-Schlüssel — während es weiterhin jedem Dienst ermöglicht, einen Identifikator zu prägen, ohne einen zentralen Zähler zu fragen.

Könnten zwei UUIDs jemals gleich sein?

Die Versionen 3 und 5 ja, und zwar mit Absicht: Derselbe Namespace und Name liefern immer dieselbe UUID. Bei den zufallsbasierten Versionen im Prinzip ja und in der Praxis nein. Nichts verifiziert die Einzigartigkeit: Es gibt schlichtweg 2^122 mögliche Werte für Version 4, etwa 5,3 Sextillionen, und Sie bräuchten grob 2,7 Trillionen davon — eine Milliarde pro Sekunde für 86 Jahre —, bevor eine faire Chance auf eine einzige Kollision bestünde. Die Garantie ist eher statistischer als absoluter Natur, und sie hängt davon ab, dass die Zufälligkeit echt ist, was der Grund ist, warum dieser Generator die Web Crypto API anstelle einer gewöhnlichen pseudozufälligen Funktion verwendet.

Kann ich eine UUID als Passwort, API-Schlüssel oder Sitzungs-Token verwenden?

Nein, und das ist der Fehler, der am meisten kostet. Eine v4 UUID ist unvorhersehbar, aber Identifikatoren werden gehandhabt, als wären sie öffentlich: Sie landen in URLs, im Browserverlauf, in Serverprotokollen, Referrer-Headern und Analysen. Die Versionen 1 und 7 verraten zusätzlich, wann sie erstellt wurden, und die Versionen 3 und 5 können von jedem neu berechnet werden, der die Eingaben kennt. Verwenden Sie für alles, was geheim bleiben muss, einen Passwort-Generator oder einen Token aus einer für Geheimnisse vorgesehenen Bibliothek.

Verrät UUID v7, wann sie erstellt wurde?

Ja, bis auf die Millisekunde genau, und das ist Absicht und kein Versehen — der Zeitstempel ist das, was v7 sortierbar macht. Die Zeile unter dem Ergebnis zeigt Ihnen die Zeit, die im ersten Wert des Stapels kodiert ist, sodass Sie genau sehen können, was preisgegeben wird. Version 1 enthält ebenfalls einen Zeitstempel. Wenn die Erstellungszeit etwas ist, das Sie lieber nicht veröffentlichen möchten, enthält Version 4 überhaupt keine Zeit.

Gibt UUID v1 meine MAC-Adresse preis?

Nicht hier. Das ursprüngliche Schema verwendete die Netzwerkkarten-Adresse der Maschine als Knotenfeld, woher der Ruf von v1 stammt, aber der Standard erlaubt auch einen zufälligen Knoten-Identifikator, bei dem das Multicast-Bit gesetzt ist, und genau das produziert dieser Generator. Ihre Hardware-Adresse wird niemals gelesen und taucht niemals in der Ausgabe auf.

Was ändern Großbuchstaben, Ohne Bindestriche, Geschweifte Klammern und urn:uuid:?

Nur die Darstellung — die 128 Bits darunter sind in jeder Form identisch. „Großbuchstaben“ druckt die Hex-Ziffern in Versalien, „Ohne Bindestriche“ liefert die kompakte 32-Zeichen-Version, „Geschweifte Klammern“ umschließt den Wert mit { }, wie Windows und .NET eine GUID schreiben, und urn:uuid: fügt das Präfix hinzu, das sie zu einer formellen URN macht. urn:uuid: schaltet die anderen beiden aus, während es aktiviert ist, da der Standard genau eine URN-Form definiert, und das ist die kanonische Form mit Bindestrichen.

Was ist der Unterschied zwischen einer UUID und einer GUID?

Im kopierten Text gibt es keinen Unterschied. GUID, kurz für Globally Unique Identifier, ist der Name, den Microsoft — in Windows, .NET und SQL Server — für denselben 128-Bit-Wert verwendet, den RFC 9562 als UUID bezeichnet. Windows-Tools schreiben ihn oft in Großbuchstaben und in geschweiften Klammern, was die Optionen Großbuchstaben und Geschweifte Klammern nachbilden.