Zo gebruik je het
- Kies Coderen of Decoderen. De URL-veilige variant is al geselecteerd en Opvulling staat uit.
- Typ of plak tekst, voer hex-bytes in of open een bestand. Het resultaat wordt bijgewerkt terwijl je typt.
- Zet Opvulling alleen aan als het ontvangende systeem =-tekens aan het eind vereist.
- Kopieer het resultaat met Kopiëren of sla het op met Downloaden.
Wat is Base64URL?
Base64URL is gedefinieerd in sectie 5 van RFC 4648 als "Base 64 Encoding with URL and Filename Safe Alphabet". Het werkt precies zoals standaard-Base64, met 6 bits per teken, maar vervangt de twee tekens die in URL's en bestandspaden problemen geven:
| Standaard-Base64 | Base64URL | |
|---|---|---|
| Waarde 62 | + | - |
| Waarde 63 | / | _ |
| Opvulling | =, verplicht | meestal weggelaten |
In een URL kan + als spatie worden gelezen, scheidt / padsegmenten en scheidt = querysleutels van hun waarden. Standaard-Base64 moet daarom procentgecodeerd worden voordat het in een link terechtkomt. Base64URL heeft geen escaping nodig. RFC 4648 staat toe dat de opvulling wordt weggelaten als de lengte uit de context bekend is, en de meeste specificaties die op Base64URL voortbouwen, doen precies dat.
Waar Base64URL wordt gebruikt
- JSON Web Tokens. De header, payload en handtekening van een JWT zijn elk Base64URL zonder opvulling (RFC 7515). Bekijk er een met de JWT-decoder.
- OAuth 2.0 PKCE. De
code_challengeis de Base64URL-vorm zonder opvulling van de SHA-256-hash van de code verifier (RFC 7636), en is daardoor altijd 43 tekens lang. - JSON Web Keys en WebAuthn. Sleutelparameters zoals
n,e,xeny, en ook WebAuthn-challenges en credential-ID's, worden als Base64URL uitgewisseld. - Tokens, ID's en bestandsnamen. Resetlinks, ondertekende URL's en cachesleutels bevatten Base64URL zonder escaping; een willekeurige ID van 16 bytes wordt 22 tekens. Kies op bestandssystemen die geen onderscheid maken tussen hoofdletters en kleine letters liever Base32, want Base64URL is hoofdlettergevoelig.
Omzetten tussen Base64 en Base64URL
Beide varianten coderen dezelfde bytes, dus omzetten komt neer op tekens verwisselen: vervang + door - en / door _, en verwijder daarna de afsluitende =. Om terug te gaan, verwissel je de tekens opnieuw en voeg je = toe tot de lengte een veelvoud van 4 is. De decoder op deze pagina accepteert beide alfabetten, met of zonder opvulling.
// Node.js 16+
Buffer.from(data).toString('base64url')
Buffer.from(str, 'base64url')
# Python (urlsafe_b64encode behoudt de opvulling)
base64.urlsafe_b64encode(data).rstrip(b'=')
// Go
base64.RawURLEncoding.EncodeToString(data)
// Java
Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)
Specificatie
| Alfabet | A-Z a-z 0-9 - _ |
|---|---|
| Uitvoergrootte | 4 tekens per 3 bytes (ongeveer 133%) |
| Opvulling | Optioneel, meestal weggelaten |
| Standaard | RFC 4648, sectie 5 |
| Hoofdlettergevoelig | Ja |
Voorbeelden
| Invoer (UTF-8) | Uitvoer |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Veelgestelde vragen
Is Base64URL hetzelfde als een Base64-string URL-coderen?
+, / en = om in %2B, %2F en %3D, waardoor de string langer wordt. Base64URL gebruikt een ander alfabet, zodat er helemaal geen escaping nodig is. De twee vormen zijn niet zonder omzetting uitwisselbaar.Moet Base64URL opvulling hebben?
urlsafe_b64encode van Python en de standaard-URL-encoder van Java wel opvulling toevoegen. Laat de opvulling bij twijfel weg; deze decoder accepteert beide vormen.Waarom weigert een standaard-Base64-decoder mijn Base64URL-string?
- en _ niet, en sommige vereisen opvulling. Verwissel de tekens en voeg =-tekens toe zodat de lengte een veelvoud van 4 wordt, of decodeer de string hier.Hoe controleer ik een PKCE code challenge?
BASE64URL(SHA256(code_verifier)) zonder opvulling. Decodeer hem hier met Uitvoer als op Hex: een correcte waarde levert precies 32 bytes op, die je kunt vergelijken met de SHA-256-hash van de verifier.