Vai al contenuto

Codificatore e decodificatore Base64

Base64 Encoder & Decoder

Codifica e decodifica in Base64 e Base64URL testo o file, trattando correttamente l’UTF-8.

Codifica in Base64 un testo o un intero file, e lo decodifica all’indietro — compresi gli URI data: e compreso l’alfabeto URL-safe che usa un JWT. Il testo passa prima per UTF-8, che è la parte che il `btoa` incorporato nel browser non sa proprio fare.

🔒 Funziona interamente nel tuo browserbase64encodedecode
Modalità
Alfabeto

L’alfabeto +/, come in MIME.

Testo o file in ingresso

Trascina un file qualsiasi

Letto in questa scheda. Non viene caricato niente.

Base64 in uscita

0 caratteri di Base64.

Il testo viene codificato in UTF-8 prima di diventare Base64, ed è per questo che «€» e gli emoji sopravvivono all’andata e ritorno. Il btoa del browser non ce la fa: rifiuta di netto qualunque carattere sopra U+00FF, mentre una «à» la lascia passare e te la restituisce come «Ã». Per questo il codificatore qui è scritto e non preso in prestito.

Come si usa

  1. Scrivere o trascinare quello che si ha

    La casella di testo accetta qualunque testo; l’area di rilascio accetta qualunque file e lo codifica a fette, così uno grande non congela la scheda. Se in modalità codifica si incolla qualcosa che sembra già Base64, la pagina propone di cambiare.

  2. Scegliere l’alfabeto

    Base64 è l’alfabeto `+/` di MIME. Base64URL è quello con `-_`, che va in un percorso di URL o in un segmento di JWT. Non sono intercambiabili: un decodificatore per l’uno rifiuta l’altro.

  3. Decidere di padding e di a capo

    L’`=` finale è richiesto da alcuni parser e vietato in un JWT. A capo a 76 è la lunghezza di riga di MIME, che conta quando l’uscita finisce in un’intestazione di posta o in un file a forma di PEM, e da nessun’altra parte.

  4. Prendere l’URI data se si è venuti per quello

    Un file trascinato produce anche un URI `data:` con il suo tipo MIME, e il pannello mostra quanto è più grande del file — circa un terzo, che è il numero che decide se incorporarlo sia una buona idea.

Domande frequenti

Perché qui le lettere accentate e il simbolo dell’euro passano intatti e altrove no?

Perché il testo viene convertito in byte UTF-8 prima di essere codificato in Base64. Il `btoa` del browser codifica una «à» come un singolo byte Latin-1, che riletto come UTF-8 torna come «Ã », e solleva un’eccezione su qualunque carattere sopra U+00FF — su un «€» o su un’emoji. La scappatoia diffusa, `unescape(encodeURIComponent(…))`, è quella che quasi tutti i siti usano e sbagliano in silenzio. L’encoder qui è scritto per esteso per evitare entrambe le cose.

Base64 è cifratura?

No, e la cosa conta. È una codifica: chiunque può decodificarla, questa pagina compresa. Una password o un token in Base64 stanno in bella vista. Se si vuole segretezza, lo strumento di cifratura del testo di questo sito fa AES-GCM con una passphrase.

L’uscita decodificata è vuota ma non c’è stato nessun errore.

Allora i byte si sono decodificati bene ma non sono testo UTF-8: un PNG, uno zip, un protobuf. In quel caso il pannello passa a un’anteprima esadecimale e a un pulsante di scaricamento; la casella di testo non ha niente da mostrare perché non c’è testo.

Quanto può essere grande un file da codificare?

La codifica in sé è a blocchi e non blocca la pagina, ma il risultato è un’unica stringa più grande del file di un terzo, e sta tutta in memoria. Sulle decine di megabyte una scheda del browser comincia a lamentarsi, e un URI data: di quelle dimensioni non è comunque utilizzabile da nessuna parte.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.