Convertitore Base64
Scrivi del testo per ottenerne il Base64, oppure incolla del Base64 per vedere cosa contiene. Non devi dire in che direzione vai, e se quello che esce è un’immagine o un file, te lo mostriamo come tale.
Il risultato appare mentre scrivi. Testo e file vengono convertiti dentro questa pagina e non ci vengono inviati. Base64 è un modo di scrivere byte con lettere, non una cifratura: chiunque può decodificarlo.
Far passare byte in canali pensati per il testo
L’e-mail è stata progettata per semplici lettere inglesi. Così i primi indirizzi web, e così oggi JSON e XML. Una foto, un PDF o una chiave crittografica sono fatti di byte arbitrari, e per un canale del genere molti di quei byte hanno un significato speciale o non ne hanno affatto. Se li fai passare così come sono, arrivano danneggiati.
Base64 è l’espediente. Riscrive qualsiasi sequenza di byte usando 64 caratteri innocui: da A a Z, da a a z, da 0 a 9, + e /. Ogni allegato e-mail viaggia così. Così anche le immagini incorporate in un foglio di stile e i token che ti mantengono connesso.
Tre byte diventano quattro caratteri
Un byte contiene 8 bit, e uno di 64 caratteri può rappresentare 6 bit. Quindi il codificatore prende 3 byte (24 bit) alla volta e li taglia in quattro gruppi da 6 bit. Ogni gruppo sceglie un carattere dell’alfabeto.
text M a n
bytes 01001101 01100001 01101110
6 bits 010011 010110 000101 101110
Base64 T W F uQuesto ha due effetti collaterali. Il risultato è un terzo più lungo dell’ingresso, circa il 33 %, un po’ di più con gli a capo. E quando l’ingresso non è divisibile per 3, l’ultimo gruppo viene completato con uno o due segni =, detti padding. Ma dà TWE= e M dà TQ==. Il padding non contiene dati, ed è per questo che alcuni sistemi lo omettono.
Standard, URL-safe, MIME
| Variante | Caratteri 63 e 64 | Padding | Dove la incontri |
|---|---|---|---|
| Standard | + / | Sì | Data URI, autenticazione HTTP Basic, chiavi PEM |
| URL-safe (Base64URL) | - _ | Di solito no | JSON Web Token, link, nomi di file |
| MIME | + / | Sì | Allegati e-mail, con un a capo ogni 76 caratteri |
In decodifica, questo strumento le accetta tutte insieme: l’uno o l’altro alfabeto, con o senza padding, spazi e a capo ovunque. Poi ti dice quale variante ha riconosciuto. I caratteri fuori dall’alfabeto vengono elencati con la loro posizione e ignorati. Una lunghezza che lascia un carattere in più viene segnalata. Un singolo carattere contiene 6 bit e non basta per un byte, quindi qualcosa è stato tagliato.
Il testo prima di tutto è fatto di byte
Base64 codifica byte, non lettere, quindi il testo va trasformato in byte prima di ogni altra cosa. Questo strumento usa UTF-8, la codifica di quasi tutto il web. In UTF-8 una lettera latina senza accento è 1 byte, é ne occupa 2, la maggior parte dei caratteri cinesi o giapponesi 3 e un’emoji 4. Ecco perché é da sola diventa w6k=.
Il bug classico è saltare questo passaggio. In JavaScript, btoa("é") restituisce 6Q==, il byte Latin-1, e btoa("👍") genera un errore. Al ritorno, atob() ti consegna é dove prima c’era é. La soluzione è TextEncoder prima della codifica e TextDecoder dopo la decodifica.
Quando i byte decodificati non sono UTF-8 valido, lo strumento non ti stampa caratteri senza senso. Guarda i primi byte, che identificano la maggior parte dei formati di file (PNG, JPEG, GIF, WebP, PDF, ZIP e gzip sono riconosciuti), mostra l’anteprima di un’immagine, offre il risultato come file e mostra l’inizio in esadecimale.
Non nasconde niente
Base64 non ha né chiave né segreto. Decodificare è la stessa ricetta letta al contrario, e ogni linguaggio di programmazione ce l’ha di serie. Una password «protetta» con Base64 è una password in chiaro con qualche passaggio in più. Prendi l’intestazione HTTP Authorization: Basic dXNlcjpwYXNz, che chiunque può riportare a user:pass.
Un URI data: come data:image/png;base64,iVBORw0… mette un intero file dentro un indirizzo. Per un’icona minuscola, risparmia una richiesta. Per qualcosa di più grande paghi il 33 % in più e il file non può più essere messo in cache separatamente.
Domande frequenti
Base64 è crittografia?
No. È una codifica, un modo pubblico e reversibile di scrivere byte con 64 caratteri stampabili. Non c’è chiave, quindi chiunque può decodificarlo. Usalo per trasportare dati, mai per proteggerli.
Perché Base64 finisce con uno o due segni di uguale?
Il codificatore lavora su gruppi di 3 byte. Quando l’ultimo gruppo ha solo 1 o 2 byte, il risultato viene completato con == o = perché la lunghezza resti un multiplo di 4. I segni non contengono dati, e il Base64 URL-safe spesso li omette.
Che differenza c’è tra Base64 e Base64URL?
Due caratteri. Il Base64 standard usa + e /, che hanno entrambi un significato negli indirizzi web. Base64URL li sostituisce con - e _ e di solito toglie il padding =. I dati dentro sono gli stessi.
Perché accenti o emoji escono sbagliati dopo la decodifica?
Il decodificatore ha letto i byte con la codifica di testo sbagliata, di solito Latin-1 quando il testo era UTF-8. È lì che vedi é al posto di é. Decodifica i byte come UTF-8 (in JavaScript, con TextDecoder) e il testo torna intatto.
Quanto diventa più grande un file in Base64?
Circa il 33 %, perché ogni 3 byte diventano 4 caratteri. Un’immagine da 300 KB diventa circa 400 KB di testo, più circa il 2.6 % quando le righe vanno a capo ogni 76 caratteri per l’e-mail.
Come trasformo un’immagine in data URI?
Trascina l’immagine sullo strumento. Ottieni il Base64 e un indirizzo data:image/…;base64,… completo da incollare in un attributo src o in un url() CSS. Riservalo alle immagini piccole, di pochi kilobyte.