Codifica Base64 di testo e file

Trasforma testo, byte grezzi o qualsiasi file in Base64. Scegli il set di caratteri che il destinatario si aspetta, mantieni o elimina il padding = e vai a capo ogni 76 o 64 caratteri per MIME e PEM.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Digita o incolla il testo da codificare, imposta Formato input su Esadecimale per codificare byte grezzi, oppure fai clic su Apri file per codificare un file.
  2. Lascia Codifica del testo su UTF-8, a meno che il sistema di destinazione non si aspetti un altro set di caratteri.
  3. Imposta le opzioni: per la maggior parte degli usi mantieni Variante su Standard, disattiva Padding se il destinatario non lo vuole e, se serve, imposta A capo su 76 (MIME) o 64 (PEM) caratteri.
  4. Copia l’output Base64 o scaricalo come file.

Come funziona la codifica Base64

Il codificatore legge l’input tre byte alla volta. Quei 24 bit vengono divisi in quattro gruppi da 6 bit e ogni valore a 6 bit (da 0 a 63) seleziona un carattere: A-Z per i valori da 0 a 25, a-z da 26 a 51, 0-9 da 52 a 61, poi + e /. Tre byte in ingresso, quattro caratteri in uscita: ecco perché il Base64 è più grande di circa il 33% rispetto ai dati originali.

Testo    M        a        n
Byte     77       97       110
Bit      01001101 01100001 01101110
6 bit    010011 010110 000101 101110
Indice   19     22     5      46
Base64   T      W      F      u

Padding e lunghezza dell’output

Quando la lunghezza dell’input non è un multiplo di tre, l’ultimo gruppo è incompleto. Un byte avanzato diventa due caratteri seguiti da ==; due byte avanzati diventano tre caratteri e un =. L’output con padding è quindi sempre lungo 4 × ceil(n / 3) caratteri per n byte di input.

Il padding non contiene dati. JSON Web Token, parametri URL e molte API lo omettono, quindi disattiva il padding quando il destinatario si aspetta un output senza padding. Per link e nomi di file scegli la variante sicura per URL o usa la pagina Base64URL: entrambe sostituiscono + e / con - e _.

A capo per MIME e PEM

Per impostazione predefinita l’output è un’unica lunga riga, come richiedono JSON, data URI e header HTTP. Due formati invece prevedono interruzioni di riga:

  • MIME, 76 caratteri. Gli allegati email inviati con Content-Transfer-Encoding: base64 non devono avere righe più lunghe di 76 caratteri (RFC 2045). Questa opzione termina le righe con CRLF, come richiede MIME.
  • PEM, 64 caratteri. Certificati e chiavi racchiusi tra le righe -----BEGIN e -----END usano righe da 64 caratteri (RFC 7468). Questa opzione usa terminatori di riga LF.

Set di caratteri e file

Base64 codifica byte, non lettere, quindi il testo viene prima convertito in byte tramite un set di caratteri. La lettera é occupa due byte in UTF-8 ma un solo byte in ISO-8859-1 o Windows-1252, perciò lo stesso testo produce Base64 diversi. UTF-8 è la scelta corretta per il web, per JSON e per quasi tutte le API moderne; scegli GBK, Shift_JIS, Windows-1251 o un altro set di caratteri solo per adeguarti a un sistema legacy.

I file vengono codificati esattamente come sono memorizzati, senza alcuna conversione del set di caratteri. Per le immagini con snippet HTML e CSS pronti all’uso, vedi Immagine in Base64; per ottenere un data URI con il tipo MIME rilevato, usa File in Base64.

Specifiche

AlfabetoA-Z a-z 0-9 + /
Dimensione dell’output4 caratteri ogni 3 byte (circa 133%)
Padding= fino a un multiplo di 4 caratteri
StandardRFC 4648, sezione 4
Distingue maiuscole/minuscoleSì

Esempi

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

Domande frequenti

Perché il mio output Base64 è diverso da quello di un altro codificatore?
Quasi sempre perché i byte di input sono diversi. Le cause tipiche sono un carattere di nuova riga in coda (il comando di shell echo ne aggiunge uno; usa printf '%s' o echo -n), un set di caratteri diverso, terminatori di riga Windows nel testo, oppure impostazioni diverse di padding, alfabeto o a capo. Gli stessi byte con le stesse opzioni producono sempre lo stesso output.
Come si codifica in Base64 un testo Unicode in JavaScript?
btoa() accetta solo caratteri fino a U+00FF e genera un errore con qualsiasi altro carattere. Converti prima la stringa in byte UTF-8, per esempio con btoa(String.fromCharCode(...new TextEncoder().encode(str))). In Node.js usa Buffer.from(str, 'utf8').toString('base64').
Come si codifica in Base64 dalla riga di comando?
Su Linux o macOS esegui printf '%s' 'your text' | base64. Il comando base64 di GNU va a capo ogni 76 caratteri per impostazione predefinita (aggiungi -w 0 per ottenere una sola riga), mentre openssl base64 va a capo ogni 64 (aggiungi -A).
La codifica Base64 è una forma di cifratura?
No. Base64 non ha una chiave e chiunque può invertirlo con un decodificatore Base64. Serve a trasportare dati binari attraverso canali che accettano solo testo, non a nascondere informazioni.
Di quanto aumentano le dimensioni dei dati con Base64?

Ogni 3 byte diventano 4 caratteri, arrotondando a un gruppo completo, quindi l’output è più grande di circa il 33%. L’a capo MIME aggiunge altri due byte (CRLF) ogni 76 caratteri.