Codificatore e decodificatore Base64URL

Converti testo, byte esadecimali o file in Base64 sicuro per URL e viceversa. L’alfabeto usa - e _ al posto di + e /, e il padding è disattivato per impostazione predefinita, come nei JSON Web Token e in OAuth PKCE.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Scegli Codifica o Decodifica. La variante sicura per URL è già selezionata, con il padding disattivato.
  2. Digita o incolla il testo, inserisci byte esadecimali o apri un file. Il risultato si aggiorna mentre scrivi.
  3. Attiva Padding solo se il sistema di destinazione richiede i segni = alla fine.
  4. 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 standardBase64URL
Valore 62+-
Valore 63/_
Padding=, obbligatoriodi 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, x e y, 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

AlfabetoA-Z a-z 0-9 - _
Dimensione dell’output4 caratteri ogni 3 byte (circa 133%)
PaddingFacoltativo, di solito omesso
StandardRFC 4648, sezione 5
Distingue maiuscole/minuscoleSì

Esempi

Input (UTF-8)Output
Hello, World!SGVsbG8sIFdvcmxkIQ
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

Domande frequenti

Base64URL equivale a codificare per URL una stringa Base64?
No. La codifica percentuale del Base64 standard trasforma +, / 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?
Dipende da chi lo riceve. JWT, JSON Web Key e PKCE richiedono che il padding venga omesso, mentre 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?
I decodificatori standard rigorosi non accettano - 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?
La challenge è 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.