UUID v4 – struktur, slumpmässighet och praktisk användning
UUID v4 är en 36 tecken lång sträng som följer mönstret 8-4-4-4-12, där varje grupp består av hexadecimala siffror. Generatorn på denna sida skapar en eller flera sådana identifierare med 122 bitars slumpmässighet, utan inbäddad tidsstämpel. Resultatet är att varje UUID v4 är i praktiken unikt och oförutsägbart, men saknar kronologisk ordning. Standardutdata är gemener med bindestreck, men du kan välja versaler och ta bort bindestrecken genom att ändra inställningarna. Antalet ID:n kan sättas mellan 1 och 100, och varje ändring av någon inställning genererar omedelbart om alla ID:n.
Så fungerar generatorn
All generering sker lokalt i webbläsaren med hjälp av webbläsarens starka slumpgenerator (kryptografiskt pseudoslumptalsgenerator). Inga uppgifter skickas till någon server – det innebär både snabb respons och hög säkerhet. Du väljer formatet UUID v4 från en lista som även innehåller UUID v7, ULID och NanoID, men för denna sida gäller endast UUID v4. När du anger ett antal, aktiverar versaler eller ändrar bindestreckstatus körs slumpgeneratorn på nytt och alla ID:n visas i en lista.
Varje ID är 36 tecken långt när bindestreck är på, annars 32 tecken. De fyra bindestrecken placeras efter position 8, 12, 16 och 20 – det är branschstandarden. Om du väljer versaler blir alla hexadecimala siffror A–F versaler; gemener är standard. Skillnaden påverkar inte det slumpmässiga värdet, bara läsbarhet och kompatibilitet med system som kräver en viss textform.
Exempel på utdata med standardinställning:
a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
Exempel med versaler och utan bindestreck:
A1B2C3D4E5F64A7B8C9D0E1F2A3B4C5D
Varför 122 bitars slumpmässighet räcker
UUID v4 specificerar 16 oktetter (128 bitar) totalt, varav 6 bitar är reserverade för versions- och varianter. Det lämnar 122 bitar helt slumpmässiga. Detta gör att sannolikheten för en kollision – att två slumpmässigt genererade UUID v4 blir identiska – är försumbar. Enligt matematisk analys, om du genererar 1 miljard UUID v4 per sekund under 100 år, är chansen att en kollision inträffar fortfarande extremt låg (mindre än 50 % sannolikhet för en kollision vid cirka 2,7×10^18 unika ID:n, enligt födelsedagsproblemet).
Sidans gräns på 100 ID:n per batch är mycket säker – även om du kör tusentals batcher över tid är risken för dubbletter praktiskt taget noll. Slumpgeneratorn i moderna webbläsare använder os-beroende kryptografiska metoder (t.ex. Crypto.getRandomValues), vilket ger hög kvalitet som är svår att förutsäga.
| Egenskap | UUID v4 |
|---|---|
| Total bitlängd | 128 bitar |
| Slumpmässiga bitar | 122 bitar |
| Version | 4 |
| Tidsstämpel | Nej |
| Sorteringsordning | Godtycklig (slumpmässig) |
| Kollisionsrisk | Försumbar |
Versaler, bindestreck och visuell läsbarhet
Inställningarna versaler och bindestreck påverkar bara presentationen, inte det underliggande slumpmässiga värdet. Om du returnerar till samma antal ID:n men byter inställning får du helt nya ID:n – generatorn körs om från början. Välj versaler om ditt system kräver det (t.ex. vissa databaser eller API:er förväntar sig versaler). Välj bort bindestreck om du vill ha en sammanhängande 32-teckenssträng, till exempel för användning i filnamn eller webbadresser där bindestreck kan orsaka problem.
Observera att UUID v4 definieras i RFC 4122 med bindestreck som standard, men många implementeringar accepterar både med och utan. Denna sida gör det enkelt att testa båda formaten direkt.
Databasindex och sorteringsordning
En viktig skillnad mellan UUID v4 och tidsbaserade format som UUID v7 eller ULID är sorteringsordningen. UUID v4 är helt slumpmässig – två på varandra följande genererade ID:n kan vara extremt olika i värde. När du använder UUID v4 som primärnyckel i en databas leder det till att varje ny rad hamnar på en slumpmässig plats i indexet, vilket orsakar många sid-splittringar och fragmentering. Prestandaförsämringen kan vara märkbar vid stora tabeller och höga insättningshastigheter.
Därför rekommenderas UUID v4 oftast för användningsområden där tidsordning inte är viktig, till exempel:
- Engångstoken för sessioner
- Extern identifierare för resurser
- Anonymiserade nycklar i testdata
- Objekt som inte ska vara förutsägbara
För databaser där du ändå behöver ett UUID, men där tidsordning underlättar, överväg UUID v7 eller ULID. Denna sida erbjuder också de formaten, men UUID v4 är standard och fokus för denna artikel.
Användningsområden och begränsningar
UUID v4 är idealiskt när du behöver unika identifierare som inte avslöjar ordningen eller tiden för skapande. Det är vanligt i distribuerade system där flera noder genererar ID:n oberoende av varandra – eftersom kollision praktiskt taget är omöjlig kan varje nod generera sina egna ID:n utan central koordinering.
Begränsningen är just den godtyckliga sorteringen: om du vill ha kronologisk sortering måste du lägga till en separat tidsstämpel. UUID v4 är inte heller kompakta – 36 tecken är långt jämfört med t.ex. ett Auto-Increment heltal. För användning i webbadresser eller kortkoder kan man överväga NanoID som är kortare och använder ett större teckenuppsättning (A-Z, a-z, 0-9, _-), men NanoID saknar den garanterade standard som UUID har.
Sidans version hanterar 1–100 ID:n per omgång. Du kan kopiera ett ID genom att klicka på det, eller kopiera alla med knappen ”Kopiera alla”. Statusmeddelandet ändras från ”Redo” till ”Genererade” och ”Alla kopierade!” när du utför åtgärder.
Sekretess och lokal bearbetning
Eftersom all generering sker i din webbläsare lämnar inga uppgifter din dator. Det innebär att du kan använda sidan även offline (efter första laddning) och att ingen logg eller övervakning sker från serverns sida. Detta är särskilt viktigt om du genererar ID:n för känsliga resurser som säkerhetstoken eller sessionsnycklar – du behöver inte oroa dig för att någon annan får tillgång till samma slumpvärden.
När du ändrar format till UUID v7 eller ULID påverkas även vilka inställningar som är tillgängliga (t.ex. kan alternativ för versaler eller bindestreck förändras), men för UUID v4 är dessa alltid tillgängliga och fungerar som beskrivet.
Frågor och svar (FAQ)
1. Är UUID v4 helt slumpmässigt?
Ja, förutom 6 bitar som anger version och variant är resten (122 bitar) slumpmässiga. Det innebär att sekvensen inte kan förutsägas eller återskapas utan tillgång till samma slumpkälla.
2. Kan jag få samma UUID två gånger?
Teoretiskt ja, men sannolikheten är så låg att den i praktiken räknas som noll. Med 122 bitars slumpmässighet finns det 2^122 ≈ 5,3×10^36 möjliga värden. Även om du genererar miljarder ID:n är risken för kollision försumbar.
3. Varför är UUID v4 standard och inte UUID v7?
Sidan har UUID v4 som standard eftersom det är det mest använda formatet och det som oftast efterfrågas för slumpmässiga identifierare. Du kan enkelt växla till andra format i listrutan.
4. Vad händer om jag anger 0 eller 101 i antal?
Sidan accepterar endast värden mellan 1 och 100. Om du försöker ange ett värde utanför detta intervall kommer inget att genereras.
5. Hur vet jag att slumpgeneratorn är stark?
Sidan använder webbläsarens inbyggda kryptografiska API (Crypto.getRandomValues) som är avsett för säkerhetskritiska tillämpningar. Det är samma teknik som används för att generera krypteringsnycklar.
6. Kan jag använda UUID v4 som primärnyckel i en databas?
Ja, men var medveten om att den slumpmässiga sorteringen kan försämra indexprestanda, särskilt vid stora volymer och hög skrivintensitet. Om du behöver tidsordning, överväg UUID v7 eller en separat tidsstämpel.