Cosa significano « encoder » e « decoder » in Base64?
Codificare in Base64 (« encode base64 ») trasforma byte — di solito i byte di un testo codificato in UTF-8 — in una stringa di 64 caratteri ammessi: le 26 lettere maiuscole, le 26 minuscole, le 10 cifre, poi + e /. Decodificare Base64 (« decode base64 ») compie esattamente l'operazione inversa: la stringa viene letta a blocchi di 4 caratteri, ogni carattere codifica 6 bit e 24 bit danno 3 byte. È questo andirivieni che la maggior parte delle persone cerca quando digita « encode and decode base64 ».
Il Base64 non è né compressione né cifratura: il testo diventa circa un terzo più lungo e chiunque può leggerlo in un secondo. Il suo scopo è trasportare byte su canali che accettano solo caratteri ASCII sicuri — URL, header HTTP, file di configurazione, JSON, SVG inline, e-mail, database testuali.
Come codificare un testo in Base64
Passo 1: il testo viene prima codificato in byte secondo il set di caratteri scelto — UTF-8 per impostazione predefinita, ma Latin-1, Windows-1252, ASCII o UTF-16 restano utili per il legacy. Passo 2: i byte vengono letti tre alla volta, cioè 24 bit. Passo 3: questi 24 bit vengono divisi in quattro blocchi di 6 bit e ogni blocco viene sostituito dal carattere corrispondente nella posizione dell'alfabeto. Passo 4: se l'ultimo gruppo è incompleto, viene completato con bit a zero e la stringa si chiude con uno o due = (il padding).
Esempio passo passo: « AB » vale 65 e poi 66 in decimale, cioè 01000001 01000010. In tre byte con riempimento: 01000001 01000010 00000000. I quattro gruppi di 6 bit sono 010000 010100 001000 000000 → posizioni 16, 20, 8, 0 → QUI=. Basta digitare « AB » nel codificatore: il risultato appare prima ancora di rilasciare il tasto.
Come decodificare Base64 in testo
La decodifica legge la stringa a gruppi di 4 caratteri dopo aver rimosso eventuali a capo e spazi. Ogni carattere viene sostituito dal suo valore su 6 bit, i quattro valori vengono concatenati in 24 bit, poi i 24 bit vengono divisi in 3 byte. Gli = finali indicano quanti byte realmente utili contiene l'ultimo gruppo: un = significa 2 byte, due = significano 1 byte.
Se la stringa contiene - o _, si tratta della variante URL-safe: lo strumento li converte automaticamente in + e / prima della decodifica. Se manca il padding, il pulsante « Correggi il padding » lo ripristina. In caso di carattere fuori alfabeto, parentesi mal posizionata o lunghezza non multipla di 4, l'errore viene mostrato con la ragione esatta invece di un semplice « non valido ».
Variante URL-safe (RFC 4648 §5)
Il Base64 standard usa + e /, due caratteri che creano problemi in un URL: il + viene interpretato come spazio dalla maggior parte dei server, e il / può essere confuso con un separatore di percorso. La variante URL-safe li sostituisce con - e _, che non richiedono escaping. È obbligatoria nei JWT (i tre segmenti di un token sono codificati senza padding), nei cookie, negli identificativi e nei parametri URL.
Padding « = »: a cosa serve
Il Base64 lavora per gruppi di 4 caratteri, ma la dimensione di un file non è quasi mai multipla di 3 byte. Il padding ripristina la lunghezza attesa: 1 byte rimasto dà ==, 2 byte rimasti danno =. Alcuni sistemi lo eliminano (alcune API, Base64URL); altri lo richiedono (PHP, vecchi decodificatori). L'opzione « Senza padding » del codificatore e il pulsante « Correggi il padding » del decodificatore coprono entrambi i casi.
Codifica dei caratteri: UTF-8, Latin-1, UTF-16
Il Base64 non conosce i caratteri, solo i byte. La domanda cruciale è quindi: con che cosa si codifica il testo prima del Base64? In UTF-8, « é » occupa 2 byte e « 日 » 3; in Latin-1, « é » sta in 1 byte ma « 日 » diventa impossibile. Una decodifica UTF-8 di una stringa codificata in Latin-1 produce caratteri aberranti (« mojibake »). Se interroghi uno strumento online e il risultato è incomprensibile, quasi sempre è la codifica di partenza a essere diversa — da qui le sei opzioni proposte qui.
File, data URI e immagini in Base64
Una data URI ha la forma data:<tipo MIME>;base64,<dati>. Permette di incorporare direttamente un'immagine in CSS, HTML o JSON: background-image:url(data:image/png;base64,iVBOR…). Per decodificare, incolla l'intera stringa nella scheda « File ⇄ Base64 »: il tipo MIME viene estratto, il nome proposto, poi il file viene rigenerato e scaricabile. Attenzione alla dimensione: il Base64 aggiunge circa il 33 % e una data URI non viene mai memorizzata in cache separatamente.
Base64, URL-encoding e perché non confonderli
Il percent-encoding (%20, %C3%A9) sostituisce ogni byte non permesso con una percentuale: è da due a tre volte più lungo del Base64 ma mantiene visibile il testo originale. Il Base64 produce una stringa compatta e regolare, perfetta per i blob, ma illeggibile. La scheda « URL & data URI » propone le due conversioni affiancate per evitare l'errore classico di codificare un URL in Base64 quando andava fatto l'escaping — o il contrario.
Base64 nei formati di ogni giorno
Il Base64 è ovunque: i tre segmenti di un JWT, l'attributo src di un'immagine SVG inline, il campo cert di un PDF, gli attachments MIME delle e-mail (RFC 2045), gli Authorization: Basic delle API (utente:password), i file .pem e le chiavi SSH, il contenuto dei .docx e .xlsx (ZIP), gli avatar nella memorizzazione lato client e gli data- attributes dei test automatizzati. Saper codificare e decodificare rapidamente evita di aprire un terminale per una sola stringa.
Ciò che Base64 non è
Il Base64 non cifra nulla: una stringa codificata si decifra in una riga di codice. Non usarlo mai come protezione di password, chiave API o dati personali. Non è nemmeno compressione: prevedi sempre il 33 % di volume in più. Infine, il Base64 non è adatto al binario già compresso e denso (PNG, ZIP) oltre qualche megabyte, dove il costo in memoria diventa penalizzante.
Prestazioni e best practice
Nel browser, TextEncoder e TextDecoder trattano diversi megabyte al secondo; l'algoritmo Base64 stesso è lineare, senza ricorsione né allocazione per carattere. I file oltre 5 MB possono rallentare l'interfaccia: per lotti più ingombranti, preferisci l'elaborazione in Web Worker o lato server. Documenta sempre la codifica originale accanto alla stringa e verifica il round-trip (codifica e poi decodifica) prima di salvare un risultato in un database.
Consigliato per
Sviluppatori back-end e front-end (token, data URI, header HTTP), integratori e redattori tecnici (SVG inline, immagini di sfondo), amministratori di sistema e DevOps (certificati, chiavi, dump), tester e pentester (Authorization Basic, fuzzing dei parametri), studenti (capire i byte, l'ASCII e l'UTF-8), e chiunque abbia bisogno di un codificatore e decodificatore Base64 online veloce, completo e riservato.