Base64url is een variant van Base64-codering die specifiek is ontworpen voor gebruik in URL's, bestandsnamen en andere contexten waar de standaard Base64-tekens + en / problemen veroorzaken. Gedefinieerd in RFC 4648 Section 5 vervangt Base64url + door - (koppelteken) en / door _ (onderstrepingsteken), en laat de afsluitende =-opvultekens weg. Het resultaat is een string die direct in een URL-queryparameter, een bestandsnaam of een HTTP-header kan worden opgenomen zonder extra procentcodering.
Standaard Base64 (RFC 4648 Section 4) gebruikt 64 tekens: A-Z, a-z, 0-9, + en /. De tekens + en / zijn gereserveerd in URL's: + wordt geïnterpreteerd als een spatie in querystrings (application/x-www-form-urlencoded) en / is een padscheidingsteken. Het gebruik van standaard Base64 in een URL vereist daarom procentcodering van deze tekens (%2B, %2F), wat de stringlengte vergroot en de leesbaarheid vermindert. Base64url elimineert dit probleem volledig door van meet af aan URL-veilige tekens te gebruiken.
De meest prominente toepassing van Base64url is in JSON Web Tokens (JWT). Alle drie segmenten van een JWT — header, payload en handtekening — zijn Base64url-gecodeerd. OAuth 2.0 PKCE code_verifier-waarden, WebAuthn-uitdagingswaarden en veel API-tokenschema's maken ook gebruik van Base64url. Het begrijpen van deze codering is essentieel voor elke ontwikkelaar die werkt met authenticatie, autorisatie of cryptografische gegevensuitwisseling.
Waarom Deze Base64url-tool Gebruiken?
Converteer tussen Base64url en tekst of binaire gegevens rechtstreeks in uw browser. Zowel codering als decodering worden ondersteund, met automatische verwerking van opvulling en tekenvervanging. Of u nu een JWT-token debugt, een PKCE-codechallenge genereert of URL-veilige identifiers bouwt, deze tool verwerkt alles lokaal in uw browser met nul latentie en zonder serverroundtrips.
⚡
Directe Conversie
De uitvoer wordt bijgewerkt terwijl u typt. Codeer tekst naar Base64url of decodeer Base64url terug naar tekst zonder vertraging — geen formulierverzendingen of paginaherlaadbewerkingen.
🔗
URL-veilige Uitvoer
De uitvoer gebruikt alleen tekens die veilig zijn in URL's, bestandsnamen en HTTP-headers: A-Z, a-z, 0-9, koppelteken en onderstrepingsteken. Geen procentcodering nodig.
🔒
Privacy-eerst Verwerking
Alle codering en decodering wordt lokaal in uw browser uitgevoerd. JWT-tokens, OAuth-geheimen en API-sleutels die u hier plakt, worden nooit naar een server verzonden.
🏛️
Standaardconform
Implementeert RFC 4648 Section 5 exact: - en _ vervangen + en /, opvulling wordt weggelaten. Compatibel met JWT-bibliotheken, OAuth 2.0 PKCE en WebAuthn-implementaties.
Base64url-gebruiksscenario's
JWT-token Inspecteren
Decodeer afzonderlijke JWT-segmenten (header, payload) om claims, vervaltijden en ondertekeningsalgoritmen te inspecteren zonder een JWT-bibliotheek te importeren of de handtekening te verifiëren.
OAuth 2.0 PKCE-flow
Genereer en verifieer PKCE code_verifier en code_challenge-waarden. De code_challenge_method S256 vereist een Base64url-gecodeerde SHA-256-hash van de code_verifier.
WebAuthn / FIDO2-integratie
WebAuthn-uitdagingen, referentie-ID's en attesteringsgegevens worden als Base64url-strings uitgewisseld tussen de browser en de relyingpartyserver. Decodeer ze om registratie- en authenticatiestromen te debuggen.
API-tokengeneratie
Maak URL-veilige tokens van willekeurige bytes voor wachtwoordherstelkoppelingen, e-mailverificatie en sessie-ID's. Base64url produceert compacte strings die zonder escaping in URL's werken.
DevOps en CI/CD-pijplijnen
Sla binaire configuratiewaarden (certificaten, sleutels) op als Base64url-strings in omgevingsvariabelen of YAML-bestanden. In tegenstelling tot standaard Base64 bevat de uitvoer geen tekens die conflicteren met shell-uitbreiding of YAML-syntaxis.
Data Engineering
Codeer binaire identifiers, hashes of controlesommen als Base64url voor gebruik in bestandsnamen, databasesleutels of CSV-kolommen waar de tekens + en / het parseren zouden verstoren of escaping vereisen.
Standaard Base64 vs Base64url
Base64url verschilt op precies drie manieren van standaard Base64. Het coderingsalgoritme is identiek — alleen het alfabet en het opvulgedrag veranderen:
Kenmerk
Standaard (RFC 4648 §4)
Base64url (RFC 4648 §5)
Index 62
+
-
Index 63
/
_
Padding
= (required)
Omitted
Deze drie verschillen betekenen dat conversie tussen standaard Base64 en Base64url eenvoudig is: vervang + door -, / door _, en verwijder afsluitende =-tekens. Omgekeerd: vervang - door +, _ door /, en voeg opvulling toe zodat de lengte een veelvoud van 4 is. De meeste talen bieden native Base64url-ondersteuning, waardoor handmatige conversie overbodig is. Beide conversies zijn volledig omkeerbaar en verliesvrij, waarbij de originele bytereeks exact behouden blijft. Deze interoperabiliteit is gegarandeerd door RFC 4648.
Coderingsvergelijkingstabel
De onderstaande tabel toont dezelfde invoer gecodeerd met standaard Base64 en Base64url. Let op hoe opvultekens (=) worden weggelaten en + / / worden vervangen door - / _ in de URL-veilige variant:
Invoer
Standaard Base64
Base64url (geen opvulling)
Hello
SGVsbG8=
SGVsbG8
A
QQ==
QQ
1+1=2
MSsxPTI=
MSsxPTI
subject?ref=1
c3ViamVjdD9yZWY9MQ==
c3ViamVjdD9yZWY9MQ
ð (thumbs up)
8J+RjQ==
8J-RjQ
Codevoorbeelden
Hoe Base64url-strings te coderen en decoderen in populaire talen. Elk voorbeeld produceert uitvoer die veilig is voor gebruik in URL's, bestandsnamen en HTTP-headers:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
// Encode to Base64url (no padding)
encoded := base64.RawURLEncoding.EncodeToString([]byte("Hello!"))
fmt.Println(encoded) // → "SGVsbG8h"
// Decode from Base64url
decoded, _ := base64.RawURLEncoding.DecodeString("SGVsbG8h")
fmt.Println(string(decoded)) // → "Hello!"
}
Veelgestelde Vragen
Wat is het verschil tussen Base64 en Base64url?
Base64url vervangt + door - en / door _ uit het standaard Base64-alfabet, en laat afsluitende =-opvultekens weg. Dit maakt de uitvoer veilig voor gebruik in URL's, queryparameters, bestandsnamen en HTTP-headers zonder aanvullende codering. Het onderliggende algoritme (bytes splitsen in 6-bit groepen die worden gekoppeld aan ASCII-tekens) is identiek. In de praktijk kunnen Base64url-strings direct in URL's en HTTP-headers worden opgenomen zonder aanpassing, terwijl standaard Base64-strings procentcodering vereisen (%2B voor +, %2F voor /) in die contexten.
Waarom gebruiken JWT-tokens Base64url in plaats van standaard Base64?
JWT's worden vaak verzonden in URL-queryparameters en HTTP Authorization-headers. De standaard Base64-tekens + en / zouden procentgecodeerd moeten worden in URL's, wat de lengte vergroot en eenvoudige stringvergelijkingen bemoeilijkt. De JWT-specificatie (RFC 7519) schrijft Base64url zonder opvulling voor om te garanderen dat tokens standaard compact en URL-veilig zijn.
Hoe converteer ik standaard Base64 naar Base64url?
Vervang elke + door -, elke / door _, en verwijder alle afsluitende =-tekens. In JavaScript: base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''). In Python: base64.urlsafe_b64encode(data).rstrip(b'='). De meeste moderne talen bieden ook een speciale Base64url-coderingsfunctie. Deze conversie is vaak nodig bij het integreren van oudere bibliotheken die standaard Base64 produceren met moderne systemen die Base64url verwachten, zoals JWT-validators en OAuth 2.0-servers.
Is Base64url-codering omkeerbaar?
Ja, Base64url is volledig omkeerbaar. Om te decoderen vervangt u - door + en _ door /, voegt u =-opvultekens toe zodat de lengte een veelvoud van 4 is, en decodeert u vervolgens als standaard Base64. De gedecodeerde uitvoer is byte-voor-byte identiek aan de oorspronkelijke invoer.
Kan ik Base64url gebruiken voor het versleutelen van gegevens?
Nee. Base64url is een codering, geen versleuteling. Het transformeert binaire gegevens naar een tekstveilig formaat zonder enige geheimhouding — iedereen kan het decoderen. Als u gegevens wilt beschermen, versleutel ze dan eerst met een geschikt algoritme (AES, ChaCha20) en codeer de versleutelde tekst vervolgens met Base64url voor transport.
Waarom wordt opvulling weggelaten in Base64url?
Opvultekens (=) dienen geen doel wanneer de decoder het ontbrekende byteaantal kan berekenen uit de stringlengte: (4 - length % 4) % 4 geeft de benodigde opvulling. Het weglaten van opvulling maakt de string korter en vermijdt =-tekens die procentgecodeerd zouden moeten worden in URL's. RFC 4648 Section 5 staat het weglaten van opvulling in Base64url expliciet toe.
Hoe ga ik in mijn code om met Base64url-strings met opvulling?
Sommige systemen produceren Base64url-strings die =-opvulling behouden. De meeste decoders verwerken dit correct. Als dat bij de uwe niet het geval is, verwijder dan afsluitende =-tekens vóór het decoderen. Omgekeerd geldt: als een bibliotheek opvulling vereist, bereken en voeg deze toe: const padded = str + '='.repeat((4 - str.length % 4) % 4). Dit werkt omdat het aantal opvultekens deterministisch bepaald wordt door de stringlengte.