Korte UUID uitgelegd
Een UUID is 36 tekens lang, maar dat komt door de vier koppeltekens en de hexadecimale notatie. Dezelfde 128 bits in Base64url zonder padding zijn maar 22 tekens.
Base64url gebruikt alleen - en _, dus in een URL-pad, querystring of bestandsnaam is escapen niet nodig. Wil je het nog korter, kies dan de variant van 12 bytes (16 tekens) of 8 bytes (11 tekens).
Hoe het werkt
- Kies bij Aantal random bytes de gewenste lengte. 16 bytes is gelijk aan 128 bits, net als een UUID.
- Stel indien nodig het aantal in, maximaal 1000.
- Klik op Genereren.
- Neem het resultaat mee met Alles kopiëren of de downloadknoppen.
Waarvoor je het gebruikt
- Resource-ID's in een URL-pad of querystring.
- Plekken waar het kort moet blijven, zoals bestandsnamen en logsleutels.
- Interne identificaties waar 128 bits te veel is en 64 bits genoeg.
Structuur
16 bytes in Base64url levert 22 tekens op, 12 bytes geeft 16 tekens en 8 bytes geeft 11 tekens. Er worden geen opvultekens toegevoegd.
Waar Korte UUID past
| Optie | Wanneer gebruiken |
|---|---|
Korte UUID | 22 tekens, direct te gebruiken in URL's en bestandsnamen |
UUID v4 | 36 tekens, maar door elke tool zonder meer te lezen |
Omzetten | Als je een bestaande UUID wilt inkorten |
Overzicht van alle UUID-versies
| Versie | Sorteerbaar | Herkomst van de bits | Waarvoor het past |
|---|---|---|---|
| v1 | Nee | Tijdstempel + MAC-adres | Bestaande systemen die v1 verwachten |
| v3 | Nee | MD5-hash van de naam | Deterministische ID's als MD5 verplicht is |
| v4 | Nee | 122 random bits | Vrijwel elke gewone unieke identificatie |
| v5 | Nee | SHA-1-hash van de naam | Als dezelfde naam altijd dezelfde ID moet geven |
| v6 | Ja | Herschikte tijdstempel | Als je zowel randomheid als sortering wilt |
| v7 | Ja | Unix-tijd in milliseconden | Primaire sleutels en gebeurtenis-ID's |
| v8 | Nee | Zelfgekozen bitindeling | Eigen formaten en experimenten |
Alle zeven versies zijn 128 bits en gebruiken dezelfde notatie 8-4-4-4-12. Het verschil zit alleen in wat elk bit voorstelt.
Codevoorbeelden
javascript
const bytes = crypto.getRandomValues(new Uint8Array(16));
const short = btoa(String.fromCharCode(...bytes))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
python
import base64, os
short = base64.urlsafe_b64encode(os.urandom(16)).rstrip(b'=').decode()
java
byte[] bytes = new byte[16];
new java.security.SecureRandom().nextBytes(bytes);
String short = Base64.getUrlEncoder().withoutPadding()
.encodeToString(bytes);
csharp
var bytes = RandomNumberGenerator.GetBytes(16);
var shortId = Convert.ToBase64String(bytes)
.Replace('+', '-').Replace('/', '_').TrimEnd('=');
sql
-- PostgreSQL 13+
SELECT translate(encode(gen_random_bytes(16), 'base64'), '+/=', '-_');
Veelgestelde vragen
Is een korte UUID net zo uniek?
Met 16 bytes heb je dezelfde 128 bits als een UUID en dus dezelfde uniciteit. Ga je naar 8 bytes, dan houd je 64 bits over en wordt de kans op dubbelen bij veel waarden merkbaar groter.
Kan ik het in een UUID-kolom zetten?
Opslaan lukt, want het zijn bytes. Voor een kolom van het type UUID moet je de waarde eerst terugzetten naar 128 bits, zodat het versie- en variantnummer weer gevuld is.
Is het veilig in een URL?
Ja. Base64url gebruikt alleen - en _, dus in een URL-pad of querystring is escapen niet nodig.