# UUID-Generator — Manual

> Vollständige Funktionsbeschreibung: UUID v4, v7, v1 und v5, Namespaces, Massen-Erzeugung 1–1000, NIL-UUID, Ausgabeformat und die Zufallsquelle im Browser.

Source: https://www.jpkc.com/db/tools/uuid/manual/

Zurück zur Übersicht: [UUID-Generator](https://www.jpkc.com/db/tools/uuid/) · Tool live öffnen: [www.jpkc.com/tools/uuid/](https://www.jpkc.com/tools/uuid/)

Dieses Manual beschreibt den **UUID-Generator** vollständig: wie die Oberfläche aufgebaut ist, was jede der vier Versionen erzeugt, wie Namespaces, Massen-Erzeugung und die NIL-UUID funktionieren und woher die Zufallswerte kommen. Die Oberfläche des Tools ist auf Englisch — die Labels werden hier in ihrer englischen Original-Schreibweise genannt (mit deutscher Erläuterung), damit du dich im echten Interface zurechtfindest.

## Aufbau der Oberfläche

Die Bedienung läuft über **vier Tabs** am oberen Rand der Karte, je einer pro UUID-Version:

- **v4 Random** (aktiv beim Laden)
- **v7 Time-ordered**
- **v1 Time-based**
- **v5 Name-based**

Jeder Tab hat einen kurzen Erklär-Hinweis, die nötigen Eingabefelder, einen **Generate**-Knopf und ein Ergebnisfeld mit Kopier-Knopf (Klemmbrett-Symbol). Das Ergebnisfeld ist editierbar (`contenteditable`) — du kannst die Anzeige also auch von Hand bearbeiten, bevor du kopierst. Ganz unten, im Fuß der Karte, steht dauerhaft die **NIL-UUID** mit eigenem Kopier-Knopf.

Beim Laden prüft das Tool, ob die UUID-Bibliothek bereit ist; erst dann werden die **Generate**-Knöpfe aktiv. Auf einer frisch geladenen Seite steht im Ergebnisfeld der Platzhalter `Click "Generate" to create UUIDs…`.

## Gemeinsamer Ablauf

Für jede Version gilt derselbe Grundablauf:

1. **Tab wählen** (Version).
2. Bei v4/v7/v1: **Number of UUIDs** einstellen (Anzahl). Bei v5: **Namespace** und **Name** angeben.
3. **Generate** klicken.
4. Ergebnis aus dem Feld kopieren — entweder über den **Kopier-Knopf** oder von Hand.

## Die UUID-Versionen im Detail

### Version 4: Zufall (v4 Random)

Erzeugt **rein zufällige** UUIDs (RFC 9562, Version 4). Der Hinweis im Tab lautet „Best for most use cases" — für die meisten Anwendungsfälle ist v4 die richtige Wahl. Es steckt keinerlei Zeit- oder Geräte-Information in der UUID; bis auf die festen Versions- und Variant-Bits sind alle Bits zufällig.

Die Zufallswerte kommen aus dem kryptografisch sicheren Generator des Browsers: Sofern verfügbar, nutzt das Tool die native Funktion `crypto.randomUUID()`, sonst füllt es 16 Byte über `crypto.getRandomValues` und setzt die Versions-/Variant-Bits selbst. In beiden Fällen ist die Quelle ein CSPRNG, **nicht** `Math.random`.

### Version 7: zeitsortiert (v7 Time-ordered)

Erzeugt **zeitsortierte** UUIDs (RFC 9562, Version 7). Die ersten 48 Bit sind ein Unix-Zeitstempel in Millisekunden (Big-Endian), der Rest ist Zufall (CSPRNG). Dadurch sind v7-UUIDs grob **nach Erzeugungszeit sortierbar** — im Tab als „Sortable by creation time, modern alternative to v1" beschrieben. Das macht sie angenehm als Datenbank-Schlüssel: Neue Einträge landen am Index-Ende, statt ihn wie zufällige v4-Werte zu zerstreuen.

### Version 1: zeitbasiert (v1 Time-based)

Erzeugt **zeitbasierte** UUIDs (im Tab als „RFC 4122 Version 1" bezeichnet). Sie enthalten einen Gregorianischen Zeitstempel und eine Clock-Sequence. Wichtig: Der **Node-Teil ist zufällig** erzeugt (mit gesetztem Multicast-Bit), das Tool liest **keine MAC-Adresse** aus — es wird also keine Hardware-Kennung preisgegeben. Die Clock-Sequence ist ebenfalls zufällig initialisiert.

Eine technische Grenze: v1 kann pro Sekunde nicht beliebig viele eindeutige Werte liefern. Überschreitet ein Lauf intern die Auflösung (mehr als rund 10 Millionen UUIDs pro Sekunde), bricht die Erzeugung mit einer Fehlermeldung ab. Bei den hier wählbaren Mengen (bis 1000) ist das praktisch nie ein Thema.

### Version 5: namensbasiert (v5 Name-based)

Erzeugt **namensbasierte, deterministische** UUIDs (RFC 9562, Version 5). Der entscheidende Unterschied zu den anderen Versionen: **Derselbe Namespace und derselbe Name ergeben immer dieselbe UUID** (Tab-Hinweis: „Same namespace + name always produces the same UUID"). v5 erzeugt also keinen Zufall, sondern eine reproduzierbare Ableitung.

Technisch hängt das Tool den 16-Byte-Namespace und den als UTF-8 kodierten Namen aneinander, bildet darüber einen **SHA-1-Hash** (über die Web-Crypto-API, daher asynchron) und nimmt dessen erste 16 Byte als UUID, mit gesetzten Versions-Bits (5) und Variant-Bits. v5 erzeugt **immer genau eine** UUID — es gibt hier **keine** Mengenauswahl.

Für v5 brauchst du zwei Eingaben:

- **Name** — die Zeichenkette, aus der abgeleitet wird (Platzhalter „e.g. example.com"). Ohne Name erscheint der Hinweis „Please enter a name.".
- **Namespace** — siehe nächster Abschnitt.

> Hinweis: Das Tool bietet **v5** (SHA-1) an, **kein** v3 (MD5). Für namensbasierte UUIDs ist v5 die empfohlene Variante.

## Namespaces für v5

Der Namespace legt fest, in welchem „Kontext" der Name interpretiert wird — derselbe Name in zwei verschiedenen Namespaces ergibt zwei verschiedene UUIDs.

### Vordefinierte Namespaces

Im Dropdown **Namespace** stehen die vier in RFC 9562 (Appendix A) festgelegten Standard-Namespaces zur Auswahl:

- **DNS** (`6ba7b810-9dad-11d1-80b4-00c04fd430c8`) — für Domain-Namen, z. B. `example.com`.
- **URL** (`6ba7b811-9dad-11d1-80b4-00c04fd430c8`) — für vollständige URLs.
- **OID** (`6ba7b812-9dad-11d1-80b4-00c04fd430c8`) — für Object Identifier.
- **X.500** (`6ba7b814-9dad-11d1-80b4-00c04fd430c8`) — für X.500-Distinguished-Names.

### Eigener Namespace (Custom UUID)

Wählst du im Dropdown **Custom UUID**, wird das Feld **Custom Namespace UUID** aktiv. Dort trägst du eine eigene Namespace-UUID im Standardformat ein. Das Tool prüft das Format streng (`xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`, Hex). Fehlt der Wert, erscheint „Please enter a custom namespace UUID."; ist er falsch formatiert, „Invalid namespace UUID format.". So kannst du eine projekteigene Namespace-Hierarchie aufbauen und v5-UUIDs reproduzierbar daraus ableiten.

## Anzahl und Massen-Erzeugung

Für **v4, v7 und v1** steht das Dropdown **Number of UUIDs** zur Verfügung. Wählbar sind die festen Stufen **1, 2, 3, 4, 5, 10, 20, 50, 100, 200, 500 und 1000**. Erzeugst du mehrere, listet das Tool sie **untereinander** (eine UUID pro Zeile) im Ergebnisfeld — bequem zum Kopieren als Block. v5 hat keine Mengenauswahl und liefert genau eine UUID.

## Die NIL-UUID

Im Fuß der Karte steht dauerhaft die **NIL-UUID** `00000000-0000-0000-0000-000000000000` — die „leere" UUID, bei der alle 128 Bit Null sind. Sie dient als Platzhalter oder Null-Wert, wo eine UUID erwartet, aber keine echte gesetzt wird. Ein kleiner Kopier-Knopf daneben übernimmt sie in die Zwischenablage. Eine **MAX**-UUID bietet das Tool nicht an.

## Kopieren

Der **Kopier-Knopf** (Klemmbrett-Symbol) neben jedem Ergebnisfeld übernimmt den gesamten Inhalt in die Zwischenablage. Hast du noch nichts erzeugt (es steht nur der Platzhalter im Feld), erscheint der Hinweis „No UUIDs to copy. Generate some first.". Der separate Knopf am NIL-UUID-Eintrag kopiert ausschließlich die NIL-UUID.

## Ausgabeformat

Alle UUIDs werden im **kanonischen Format** ausgegeben: 32 Hex-Ziffern in **Kleinschreibung**, gruppiert als `8-4-4-4-12` mit Bindestrichen, zum Beispiel:

```
f47ac10b-58cc-4372-a567-0e02b2c3d479
```

Das Tool bietet **keine** alternativen Ausgabeformate an — keine Großschreibung, keine geschweiften Klammern (Braces), keine Variante ohne Bindestriche und keine Base64-Kodierung. Wer ein anderes Format braucht, formatiert die kopierte UUID nachträglich (das editierbare Ergebnisfeld erlaubt kleine Anpassungen von Hand).

## Zufallsquelle und Sicherheit

Die Zufallsversionen v4, v7 und v1 ziehen ihre Zufallsbits aus dem **kryptografisch sicheren Zufallsgenerator** des Browsers — `crypto.getRandomValues`, bei v4 wenn verfügbar direkt `crypto.randomUUID()`. Das ist sicherheitsrelevant: Im Gegensatz zu `Math.random` ist diese Quelle nicht vorhersagbar, sodass sich UUIDs nicht erraten lassen. v5 ist nicht zufällig, sondern berechnet sich deterministisch über einen SHA-1-Hash. Weil das Tool die Web-Crypto-API verwendet, läuft es in einem sicheren Kontext (**HTTPS**).

## Betriebsgrenzen und Datenschutz

- **Clientseitig:** Die gesamte Erzeugung passiert im Browser. Es gibt **keinen** Server-Aufruf, keine Übertragung von Namen, Namespaces oder Ergebnissen.
- **Sicherer Kontext:** Die genutzte Web-Crypto-API setzt **HTTPS** voraus (oder `localhost`).
- **Mengen:** Pro Lauf 1 bis 1000 UUIDs (v4/v7/v1); v5 genau eine.
- **Format fix:** Ausgabe ausschließlich im kanonischen Kleinschreib-Format mit Bindestrichen.
- **Versionen:** v4, v7, v1, v5 sowie die NIL-UUID — kein v3, kein MAX.

Für den Einstieg und die Versions-Empfehlung siehe die [Übersichtsseite](https://www.jpkc.com/db/tools/uuid/). Konkrete Durchläufe stehen in den [Beispielen](https://www.jpkc.com/db/tools/uuid/examples/), Strategie und Stolperfallen in den [Tipps & Tricks](https://www.jpkc.com/db/tools/uuid/tips/). Ausprobieren kannst du alles direkt im [Tool](https://www.jpkc.com/tools/uuid/).

