Come si usa
- Scegli Codifica o Decodifica. La variante sicura per URL è già selezionata, con il padding disattivato.
- Digita o incolla il testo, inserisci byte esadecimali o apri un file. Il risultato si aggiorna mentre scrivi.
- Attiva Padding solo se il sistema di destinazione richiede i segni = alla fine.
- Copia il risultato o scaricalo.
Che cos’è Base64URL?
Base64URL è definito nella sezione 5 della RFC 4648 come "Base 64 Encoding with URL and Filename Safe Alphabet", cioè codifica Base64 con un alfabeto sicuro per URL e nomi di file. Funziona esattamente come il Base64 standard, con 6 bit per carattere, ma sostituisce i due caratteri che creano problemi negli URL e nei percorsi dei file:
| Base64 standard | Base64URL | |
|---|---|---|
| Valore 62 | + | - |
| Valore 63 | / | _ |
| Padding | =, obbligatorio | di solito omesso |
In un URL, + può essere interpretato come uno spazio, / separa i segmenti del percorso e = separa le chiavi della query dai valori, quindi il Base64 standard va convertito con la codifica percentuale (percent-encoding) prima di finire in un link. Base64URL non richiede alcun escape. La RFC 4648 consente di omettere il padding quando la lunghezza è nota dal contesto, e la maggior parte delle specifiche basate su Base64URL fa proprio così.
Dove si usa Base64URL
- JSON Web Token. Header, payload e firma di un JWT sono ciascuno in Base64URL senza padding (RFC 7515). Puoi leggerne uno con il decodificatore JWT.
- OAuth 2.0 PKCE. Il
code_challengeè la forma Base64URL senza padding dell’hash SHA-256 del code verifier (RFC 7636), quindi è sempre lungo 43 caratteri. - JSON Web Key e WebAuthn. I parametri delle chiavi come
n,e,xey, così come le challenge e gli ID delle credenziali WebAuthn, vengono scambiati in Base64URL. - Token, ID e nomi di file. Link di reimpostazione, URL firmati e chiavi di cache contengono Base64URL senza bisogno di escape; un ID casuale di 16 byte diventa una stringa di 22 caratteri. Sui file system che non distinguono tra maiuscole e minuscole preferisci Base32, perché Base64URL dipende dalla differenza tra maiuscole e minuscole.
Conversione tra Base64 e Base64URL
Entrambe le varianti codificano gli stessi byte, quindi la conversione è una semplice sostituzione di caratteri: sostituisci + con - e / con _, poi rimuovi gli = finali. Per tornare indietro, sostituisci di nuovo i caratteri e aggiungi = finché la lunghezza non è un multiplo di 4. Il decodificatore di questa pagina accetta entrambi gli alfabeti, con o senza padding.
// Node.js 16+
Buffer.from(data).toString('base64url')
Buffer.from(str, 'base64url')
# Python (urlsafe_b64encode mantiene il padding)
base64.urlsafe_b64encode(data).rstrip(b'=')
// Go
base64.RawURLEncoding.EncodeToString(data)
// Java
Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)
Specifiche
| Alfabeto | A-Z a-z 0-9 - _ |
|---|---|
| Dimensione dell’output | 4 caratteri ogni 3 byte (circa 133%) |
| Padding | Facoltativo, di solito omesso |
| Standard | RFC 4648, sezione 5 |
| Distingue maiuscole/minuscole | Sì |
Esempi
| Input (UTF-8) | Output |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Domande frequenti
Base64URL equivale a codificare per URL una stringa Base64?
+, / e = in %2B, %2F e %3D, allungando la stringa. Base64URL usa un alfabeto diverso, quindi non serve alcun escape. Le due forme non sono intercambiabili senza una conversione.Base64URL deve avere il padding?
urlsafe_b64encode di Python e il codificatore URL predefinito di Java lo aggiungono. Nel dubbio, omettilo: questo decodificatore accetta entrambe le forme.Perché un decodificatore Base64 standard rifiuta la mia stringa Base64URL?
- e _, e alcuni richiedono il padding. Sostituisci i caratteri e aggiungi segni = per portare la lunghezza a un multiplo di 4, oppure decodifica la stringa qui.Come si verifica una code challenge PKCE?
BASE64URL(SHA256(code_verifier)) senza padding. Decodificala qui con l’output Esadecimale: un valore corretto produce esattamente 32 byte, che puoi confrontare con l’hash SHA-256 del verifier.