Eine UUID (Universally Unique Identifier) ist ein 128-Bit- (16-Byte-) Identifikator, der auch ohne zentrale Vergabestelle für praktische Zwecke als eindeutig gilt. In der Standard-Textform wird sie als 32 Hexadezimalzeichen und 4 Bindestriche geschrieben, gruppiert als 8-4-4-4-12 (z. B. 550e8400-e29b-41d4-a716-446655440000). Dieses Tool kann jede durch RFC 4122 und den aktuellen RFC 9562 definierte Version erzeugen — v1, v3, v4, v5 und v7.
Was ist eine UUID, und welche Versionen gibt es?
Eine vollständige Erklärung der UUID-Versionen nach RFC 4122/9562, wann welche Version verwendet werden sollte, und wie sich eine GUID unterscheidet.
Zusätzliche Mini-Tools: NIL-UUID, ULID & Base64-Konverter
Drei zusätzliche Mini-Tools, inspiriert von UUID-Tools der Konkurrenz: eine feste leere UUID, ein sortierbarer ULID-Identifikator und ein UUID-zu-Base64/Hex-Konverter.
Referenztabellen zu UUID-Versionen & Formaten
Zitierfähige Versionsvergleiche, Formatbeispiele und ein Vergleich von UUID/GUID/ULID.
| Version | Quelldaten | Sortierbar? | Typische Verwendung |
|---|---|---|---|
| v1 | Zeitstempel + Node-ID | Teilweise | Legacysysteme, Abwärtskompatibilität |
| v2 | DCE-Domain + lokale ID (POSIX UID/GID) | Nein | Weitgehend obsolet, sehr selten genutzt |
| v3 | Namespace + Name (MD5) | Nein | Deterministische ID (Legacy) |
| v4 | Vollständig zufällig | Nein | Allzweck, am gebräuchlichsten |
| v5 | Namespace + Name (SHA-1) | Nein | Deterministische ID (empfohlen) |
| v7 | Zeitstempel + Zufall | Ja | Primärschlüssel in Datenbanken |
| ULID (extra) | Zeitstempel + Zufall (Base32) | Ja | Sortierbare, kurze String-ID |
| Format | Beispiel |
|---|---|
| Standard (Kleinbuchstaben) | 550e8400-e29b-41d4-a716-446655440000 |
| Großbuchstaben | 550E8400-E29B-41D4-A716-446655440000 |
| Ohne Bindestriche | 550e8400e29b41d4a716446655440000 |
| Geschweifte Klammern (.NET-GUID) | {550e8400-e29b-41d4-a716-446655440000} |
| URN-Präfix | urn:uuid:550e8400-e29b-41d4-a716-446655440000 |
| Base64 (16 Byte) | VQ6EAOKbQdSnFkRmVUQAAA== |
| Eigenschaft | UUID | GUID | ULID |
|---|---|---|---|
| Bitlänge | 128 | 128 (gleicher Standard) | 128 |
| Textlänge | 36 Zeichen | 36 (oder 38 mit Klammern) | 26 Zeichen |
| Alphabet | Hex (0–9, a–f) + Bindestriche | Hex + Bindestriche | Crockford Base32 |
| Sortiert nach Zeit? | Nur v1/v7 | Nur v1/v7 | Ja (standardmäßig) |
| Übliche Verwendung | Allzweck | .NET-/Windows-Ökosystem | Datenbankschlüssel, Log-IDs |
Sprachspezifische Codebeispiele: So generierst du eine UUID
Fertige, kopierbare UUID/GUID-Generierungscodes für Python, JavaScript/Node, Java, C#, Go, PHP, PostgreSQL und MySQL. Jedes Beispiel zeigt den Standardansatz dieser Sprache.
uuid-Modul, keine Installation nötig.# Standardbibliothek, keine Installation nötig import uuid # v4 (zufällig) — häufigste Verwendung print(uuid.uuid4()) # 550e8400-e29b-41d4-a716-446655440000 # v5 (namensbasiert, SHA-1) — deterministisch print(uuid.uuid5(uuid.NAMESPACE_DNS, "example.com")) # v1 (Zeit + Node) print(uuid.uuid1()) # Textformate u = uuid.uuid4() print(u.hex) # ohne Bindestriche print(str(u).upper()) # Großbuchstaben
crypto.randomUUID() in modernen Browsern und Node 19+.// Browser + Node 19+ (eingebaut, v4)
const id = crypto.randomUUID();
console.log(id); // 550e8400-e29b-41d4-a716-446655440000
// Node.js (über das crypto-Modul)
import { randomUUID } from "node:crypto";
console.log(randomUUID());
// Großbuchstaben / ohne Bindestriche
console.log(id.toUpperCase());
console.log(id.replace(/-/g, ""));
java.util.UUID (v4 zufällig und v3 namensbasiert).import java.util.UUID;
// v4 (zufällig)
UUID id = UUID.randomUUID();
System.out.println(id); // 550e8400-e29b-41d4-a716-446655440000
// v3 (namensbasiert, MD5)
UUID named = UUID.nameUUIDFromBytes("example.com".getBytes());
System.out.println(named);
// Aus Text parsen
UUID parsed = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");
Guid-Struktur. .NET 9 fügt außerdem das zeitlich sortierte Guid.CreateVersion7() hinzu.using System;
// v4-ähnliche GUID (zufällig)
Guid id = Guid.NewGuid();
Console.WriteLine(id); // 550e8400-e29b-41d4-a716-446655440000
Console.WriteLine(id.ToString("B")); // {550e8400-...} .NET-GUID-Format
Console.WriteLine(id.ToString("N")); // ohne Bindestriche
Console.WriteLine(id.ToString("D").ToUpper()); // Großbuchstaben
// .NET 9+: v7 (zeitlich sortiert, datenbankfreundlich)
Guid v7 = Guid.CreateVersion7();
github.com/google/uuid (go get github.com/google/uuid).package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
fmt.Println(uuid.New()) // v4 (zufällig)
// v5 (namensbasiert, SHA-1)
fmt.Println(uuid.NewSHA1(uuid.NameSpaceDNS, []byte("example.com")))
// v7 (zeitlich sortiert) — google/uuid v1.6+
v7, _ := uuid.NewV7()
fmt.Println(v7)
}
ramsey/uuid (composer require ramsey/uuid).use Ramsey\Uuid\Uuid; // v4 (zufällig) echo Uuid::uuid4()->toString(); // 550e8400-e29b-41d4-a716-446655440000 // v7 (zeitlich sortiert, datenbankfreundlich) echo Uuid::uuid7()->toString(); // v5 (namensbasiert, SHA-1) — deterministisch echo Uuid::uuid5(Uuid::NAMESPACE_DNS, "example.com")->toString();
gen_random_uuid() ist ab Version 13 eingebaut (ältere Versionen benötigen die Erweiterung pgcrypto).-- Eine v4-UUID (zufällig) generieren SELECT gen_random_uuid(); -- Automatischer Standardwert für eine Tabellenspalte CREATE TABLE users ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), name text NOT NULL ); -- Ältere Versionen (PostgreSQL 12 und früher): -- CREATE EXTENSION IF NOT EXISTS pgcrypto;
UUID() erzeugt einen v1-basierten Wert; für sortierte Speicherung wird UUID_TO_BIN(..., 1) empfohlen.-- Text-UUID generieren (v1-basiert) SELECT UUID(); -- Als sortiertes 16-Byte-BINARY speichern (indexfreundlich) SELECT UUID_TO_BIN(UUID(), 1); CREATE TABLE users ( id BINARY(16) PRIMARY KEY, name VARCHAR(120) NOT NULL ); -- Beim Lesen zurück in Text umwandeln: -- SELECT BIN_TO_UUID(id, 1) FROM users;
UUID-Begriffsglossar
Kurze Definitionen der wichtigsten Konzepte rund um UUIDs/GUIDs.
Ausführliche Anleitungen
Detaillierte Antworten auf die häufigsten Fragen zu UUIDs.
Welche UUID-Version sollte ich verwenden?
Für die meisten Szenarien ist v4 (vollständig zufällig) eine gute Standardwahl: Sie ist einfach, datenschutzfreundlich und gibt keine Informationen preis. Wenn du sie als Primärschlüssel einer Datenbank verwendest und die Indexleistung wichtig ist, bevorzuge v7; da nacheinander generierte v7-Werte zeitlich sortiert sind, verursachen sie weniger B-Baum-Indexfragmentierung.
Wenn du aus derselben Eingabe (z. B. einer URL oder E-Mail-Adresse) immer denselben Identifikator ableiten musst, verwende v5 (SHA-1-basiert); v3 (MD5-basiert) wird nur aus Kompatibilitätsgründen mit Legacysystemen beibehalten. Greife nur dann auf v1 zurück, wenn du mit älteren Systemen arbeitest, die sie zur Abwärtskompatibilität benötigen.
Datenbank-Primärschlüssel: UUID, Auto-Increment oder ULID?
Automatisch hochzählende Ganzzahlen indizieren am schnellsten, können aber in verteilten Systemen kollidieren (wenn mehrere Server gleichzeitig Datensätze einfügen) und geben die Zeilenanzahl öffentlich preis. Eine v4-UUID kollidiert nie, kann aber, da sie vollständig zufällig ist, B-Baum-Indizes fragmentieren und Schreibvorgänge verlangsamen.
v7-UUID oder ULID löst das mit einem Zeitstempel-Präfix: Keine der beiden kollidiert, und da sie in Reihenfolge eingefügt werden, liegt ihre Indexleistung nahe an der von Auto-Increment. ULID ist zudem kürzer (26 Zeichen gegenüber 36 bei UUID); die Wahl hängt meist davon ab, was dein Ökosystem (ORM/Datenbank) unterstützt.
Wie gering ist die Kollisionswahrscheinlichkeit einer v4-UUID wirklich?
Eine v4-UUID hat 122 zufällig generierte Bit, was 2122 (≈5,3 × 1036) mögliche Werte ergibt. Nach der Geburtstagsparadoxon-Berechnung müsstest du rund 2,71 Trillionen (2,71 × 1018) UUIDs generieren, um eine 50-prozentige Kollisionswahrscheinlichkeit zu erreichen — eine praktisch unmögliche Größenordnung, vergleichbar damit, dass jeder Mensch auf der Erde Milliarden UUIDs pro Sekunde generieren würde.
Aus diesem Grund gelten v4-UUIDs in realen Anwendungen sicher als „eindeutig“. Allerdings kommt es auf die Qualität des Zufallszahlengenerators an; dieses Tool verwendet das kryptografische crypto.getRandomValues anstelle des unsicheren Math.random().
Dieses Tool auf deiner Website einbinden (Embed-Code)
Binde den UUID-Generator kostenlos auf deiner eigenen Website ein. Kopiere den folgenden Code in dein HTML — das Tool läuft in einer vereinfachten Ansicht und verlinkt als Quelle auf diese Seite zurück.
Das eingebettete Tool hat ein festes Layout; du kannst den Wert von height an deine Website anpassen. Keine Werbung, keine persönlichen Daten, läuft vollständig clientseitig.
Häufig gestellte Fragen
Was ist eine UUID?
Wie wird eine v4-UUID generiert?
Was ist der Unterschied zwischen einer GUID und einer UUID?
Wie generiere ich UUIDs im Bulk?
Wie viele Zeichen oder Byte lang ist eine UUID?
Ist ein Online-UUID-Generator sicher in der Anwendung?
Was ist der Unterschied zwischen UUID v1 und v4?
Was ist eine ULID, und wie unterscheidet sie sich von einer UUID?
Wie finde ich heraus, wann eine v7- oder v1-UUID generiert wurde?
Was ist UUID v2 (DCE Security), und wird sie noch verwendet?
Wie generiert man eine UUID in Python, C#, PostgreSQL und ähnlichen Sprachen?
uuid.uuid4(), JavaScript/Node crypto.randomUUID(), Java
UUID.randomUUID(), C#/.NET Guid.NewGuid(), Go uuid.New(), PHP
Uuid::uuid4(), PostgreSQL gen_random_uuid(), MySQL UUID(). Beispiele für
die namensbasierte (v5) und zeitlich sortierte (v7) Variante findest du im selben Abschnitt.Methodik & Quellen
Quellen: RFC 4122 (A Universally Unique IDentifier) · RFC 9562 (der aktuelle UUID-Standard, ergänzt um v6/v7/v8) · W3C Web Cryptography API · die offizielle ULID-Spezifikation (Crockford Base32). Zuletzt aktualisiert: 19. Juli 2026. Die Ergebnisse sind algorithmisch; v3/v5 sind deterministisch, während v1/v4/v7 und ULID auf kryptografischer Zufälligkeit beruhen.