Tutorial 22 Feb 2026 10 min di lettura

Codifica Base64 spiegata: cos'è, come funziona e quando usarla

Una guida completa alla codifica Base64: comprendi l'algoritmo, impara i casi d'uso comuni come data URI, allegati e-mail e token API, e scopri quando Base64 è la scelta giusta.

Base64 Encoding Explained - Visual Guide

Cos'è la codifica Base64?

Base64 è uno schema di codifica da binario a testo che converte i dati binari in una sequenza di caratteri ASCII stampabili. Il nome "Base64" deriva dal fatto che utilizza un insieme di 64 caratteri per rappresentare i dati. Questi 64 caratteri consistono in lettere maiuscole (A-Z), lettere minuscole (a-z), cifre (0-9) e due caratteri aggiuntivi, tipicamente + e /, con = usato come carattere di riempimento.

Base64 è stato originariamente progettato per consentire la trasmissione di dati binari attraverso canali che supportano in modo affidabile solo contenuti testuali. Pensalo come un traduttore universale: prende qualsiasi sequenza di byte, che sia un'immagine, un documento o dati crittografati, e la trasforma in una stringa di caratteri che può viaggiare in sicurezza attraverso protocolli basati su testo come e-mail (SMTP), HTML, CSS, JSON e XML.

La codifica è definita nella RFC 4648, che standardizza diversi alfabeti di codifica Base. La variante più comune che incontrerai sul web è l'alfabeto Base64 standard, ma esiste anche una variante sicura per URL che sostituisce + con - e / con _ per evitare conflitti con i caratteri riservati degli URL.

Come funziona l'algoritmo Base64

Comprendere l'algoritmo dietro Base64 aiuta a demistificare quella che sembra una trasformazione "magica". Ecco il processo passo dopo passo:

Passo 1: Convertire l'input in binario

Ogni byte dei dati di input viene rappresentato come un numero binario a 8 bit. Ad esempio, il testo ASCII Man viene rappresentato come:

  • M = 77 in decimale = 01001101 in binario
  • a = 97 in decimale = 01100001 in binario
  • n = 110 in decimale = 01101110 in binario

Concatenato, questo ci dà un flusso di 24 bit: 010011010110000101101110

Passo 2: Dividere in gruppi di 6 bit

Invece dei soliti confini di byte a 8 bit, Base64 divide il flusso binario in gruppi di 6 bit. Perché 6 bit? Perché 26 = 64, che è esattamente il numero di caratteri nell'alfabeto Base64. Il nostro flusso di 24 bit diventa quattro gruppi di 6 bit:

  • 010011 = 19
  • 010110 = 22
  • 000101 = 5
  • 101110 = 46

Passo 3: Mappatura sulla tabella dei caratteri Base64

Ogni valore a 6 bit (0-63) viene mappato su un carattere specifico nell'alfabeto Base64:

Intervallo di valoriCaratteri
0-25A-Z
26-51a-z
52-610-9
62+
63/

Applicando questo ai nostri valori: 19 = T, 22 = W, 5 = F, 46 = u. Quindi Man viene codificato come TWFu.

Passo 4: Gestione del riempimento

Quando la lunghezza dell'input non è un multiplo di 3 byte, il flusso binario non si divide uniformemente in gruppi di 6 bit. In questo caso, vengono aggiunti bit zero per completare l'ultimo gruppo di 6 bit, e vengono aggiunti caratteri di riempimento = all'output per indicare quanti byte extra sono stati aggiunti:

  • 1 byte in input produce 2 caratteri Base64 + riempimento ==
  • 2 byte in input produce 3 caratteri Base64 + riempimento =
  • 3 byte in input produce 4 caratteri Base64 senza riempimento

Ad esempio, codificare solo Ma (2 byte) ci dà TWE=, e codificare solo M (1 byte) ci dà TQ==.

Casi d'uso comuni della codifica Base64

La codifica Base64 appare in molte aree dello sviluppo web moderno e dell'ingegneria del software. Ecco i più importanti:

1. Data URI in HTML e CSS

I Data URI ti permettono di incorporare file direttamente in HTML o CSS usando la codifica Base64. Invece di fare una richiesta HTTP separata per una piccola immagine, puoi includerla inline:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." />

Questo è particolarmente utile per piccole icone e immagini decorative dove eliminare una richiesta HTTP migliora le prestazioni di caricamento della pagina. Tuttavia, Base64 aumenta la dimensione dei dati di circa il 33%, quindi questa tecnica è da riservare ai file sotto i 2-3 KB. Puoi usare il nostro convertitore da Immagine a Base64 per generare rapidamente data URI da qualsiasi file immagine.

2. Allegati e-mail (MIME)

L'uso originale e forse storicamente più significativo di Base64 è nell'e-mail. Il protocollo SMTP è stato progettato per trasmettere testo ASCII a 7 bit, il che significa che file binari come immagini, PDF e documenti non possono essere inviati direttamente. MIME (Multipurpose Internet Mail Extensions) usa Base64 per codificare questi allegati in modo che possano essere trasmessi in sicurezza attraverso i server di posta senza corruzione.

3. Token di autenticazione API

L'autenticazione HTTP Basic codifica la coppia nome_utente:password in Base64 e la invia nell'header Authorization:

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

È importante capire che questo fornisce codifica, non crittografia. Chiunque intercetti questo header può decodificarlo banalmente, motivo per cui l'autenticazione Basic deve sempre essere usata su HTTPS.

4. JSON Web Tokens (JWT)

I JWT sono uno degli usi più comuni di Base64 nello sviluppo web moderno. Un JWT consiste in tre parti codificate in Base64URL separate da punti: l'header, il payload e la firma. Ad esempio:

eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiam9obiJ9.xyz123...

L'header e il payload sono oggetti JSON codificati in Base64URL che chiunque può decodificare. La firma è ciò che fornisce la verifica dell'integrità. Puoi ispezionare e decodificare i JWT usando il nostro strumento decoder JWT o generare token di test con il generatore JWT.

5. Archiviazione di dati binari in JSON e XML

JSON e XML sono formati basati su testo che non supportano nativamente i dati binari. Quando devi includere contenuto binario, come una chiave crittografica, una piccola immagine o un certificato, la codifica Base64 è l'approccio standard. Molte API restituiscono dati binari come stringhe codificate in Base64 all'interno delle risposte JSON.

6. Codifica di dati negli URL

Mentre Base64 standard usa caratteri riservati negli URL (+, /, =), la variante sicura per URL (Base64URL) li sostituisce con -, _ e facoltativamente rimuove il riempimento. Questo è usato ampiamente nei token OAuth, URL firmati e parametri di stato. Per altre esigenze di codifica URL, consulta il nostro strumento codificatore/decodificatore URL.

Base64 NON è crittografia

Questo è uno dei punti più critici da comprendere, e un errore che anche sviluppatori esperti a volte commettono: la codifica Base64 non è un meccanismo di sicurezza. Non fornisce assolutamente nessuna riservatezza.

Ecco perché questa distinzione è importante:

  • La codifica trasforma i dati da un formato a un altro per compatibilità. È completamente reversibile da chiunque, senza bisogno di chiave o segreto.
  • La crittografia trasforma i dati per impedire l'accesso non autorizzato. Richiede una chiave per invertirla ed è progettata per essere computazionalmente impossibile da decifrare senza quella chiave.

Se qualcuno ti dà una stringa Base64, puoi decodificarla istantaneamente. Non c'è chiave, non c'è password, non c'è segreto. Provalo tu stesso con il nostro codificatore/decodificatore Base64: incolla qualsiasi stringa Base64 e vedrai immediatamente i dati originali.

Non memorizzare mai password, chiavi API o dati sensibili usando solo la codifica Base64. Se hai bisogno di vera crittografia, usa algoritmi come AES-256. Puoi sperimentare con il nostro strumento di crittografia AES per vedere la differenza tra codifica e crittografia. Per l'hashing delle password, considera l'uso di algoritmi dedicati come bcrypt, scrypt o Argon2.

Il sovraccarico dimensionale: capire l'aumento del 33%

La codifica Base64 aumenta sempre la dimensione dei dati. La ragione è matematica: ogni 3 byte (24 bit) di input diventano 4 caratteri (32 bit) di output. Ciò significa che i dati codificati sono circa il 33% più grandi dell'originale.

Ecco un riferimento rapido per il sovraccarico dimensionale:

Dimensione originaleDimensione Base64Sovraccarico
1 KB~1,37 KB+37%
10 KB~13,3 KB+33%
100 KB~133 KB+33%
1 MB~1,33 MB+33%

Questo sovraccarico è importante da considerare quando si incorporano immagini come data URI. Un'immagine da 50 KB diventa circa 67 KB quando codificata in Base64, e quella stringa Base64 viene incorporata direttamente nel tuo HTML o CSS, rendendo il documento stesso più grande e potenzialmente più lento da analizzare.

Quando NON usare Base64

Sapere quando evitare Base64 è tanto importante quanto sapere quando usarlo. Ecco scenari comuni in cui Base64 è la scelta sbagliata:

  • File di grandi dimensioni: Incorporare un'immagine da 500 KB come data URI Base64 aumenta la dimensione del documento HTML di ~667 KB, distrugge le possibilità di caching e rallenta il rendering della pagina. Servi i file di grandi dimensioni come risorse separate.
  • Sicurezza: Come discusso sopra, non usare mai Base64 come misura di sicurezza. È banalmente reversibile.
  • Archiviazione nel database: Archiviare grandi dati binari come Base64 in una colonna del database spreca il 33% in più di spazio di archiviazione. Usa colonne native BLOB/BYTEA.
  • Dati in streaming: Base64 richiede che l'intero input sia disponibile prima della codifica (a causa del raggruppamento a 3 byte). Per scenari di streaming, la codifica di trasferimento chunked o i protocolli binari sono scelte migliori.
  • Percorsi critici per le prestazioni: La codifica e la decodifica Base64 richiedono cicli CPU. Nei sistemi ad alto throughput che elaborano milioni di operazioni al secondo, il sovraccarico può diventare significativo.

Esempi pratici con codice

Ecco esempi rapidi di codifica e decodifica Base64 nei linguaggi di programmazione più diffusi:

JavaScript (Browser e Node.js)

// Encoding
const encoded = btoa("Hello, World!");
console.log(encoded); // "SGVsbG8sIFdvcmxkIQ=="

// Decoding
const decoded = atob("SGVsbG8sIFdvcmxkIQ==");
console.log(decoded); // "Hello, World!"

// For Unicode strings, use TextEncoder
const encoder = new TextEncoder();
const bytes = encoder.encode("Hello");
const base64 = btoa(String.fromCharCode(...bytes));

Python

import base64

# Encoding
encoded = base64.b64encode(b"Hello, World!")
print(encoded)  # b'SGVsbG8sIFdvcmxkIQ=='

# Decoding
decoded = base64.b64decode(encoded)
print(decoded)  # b'Hello, World!'

# URL-safe variant
url_safe = base64.urlsafe_b64encode(b"Hello, World!")

PHP

// Encoding
$encoded = base64_encode("Hello, World!");
echo $encoded; // "SGVsbG8sIFdvcmxkIQ=="

// Decoding
$decoded = base64_decode($encoded);
echo $decoded; // "Hello, World!"

Naturalmente, non hai bisogno di scrivere codice ogni volta che devi codificare o decodificare Base64. Il nostro strumento Base64 online lo gestisce istantaneamente nel tuo browser senza bisogno di installare alcun software.

Conversione da immagine a Base64: vantaggi e svantaggi

Convertire le immagini in stringhe Base64 è uno degli usi più dibattuti di questa codifica. Ecco uno sguardo equilibrato su entrambi i lati:

Vantaggi

  • Meno richieste HTTP: Ogni immagine incorporata come data URI elimina un round-trip di rete. Per pagine con molte piccole icone, questo può migliorare sensibilmente i tempi di caricamento.
  • Documenti autonomi: Un file HTML con immagini Base64 è completamente autonomo. Questo è utile per template e-mail, documenti offline ed esportazioni a file singolo.
  • Nessun problema CORS: Le immagini inline aggirano completamente le restrizioni cross-origin.
  • Deployment semplificato: Non è necessario gestire file di immagine separati, percorsi CDN o pipeline di asset per piccoli elementi grafici.

Svantaggi

  • Aumento dimensionale del 33%: La stringa codificata è sempre più grande del file binario originale.
  • Nessun caching del browser: Le immagini Base64 inline non possono essere memorizzate nella cache indipendentemente. Ogni caricamento di pagina trasferisce nuovamente l'intera stringa codificata.
  • Blocco del rendering: Le immagini Base64 nel CSS devono essere scaricate e analizzate come parte del foglio di stile prima che la pagina possa essere renderizzata.
  • Difficoltà di manutenzione: Aggiornare un'immagine Base64 inline richiede di rigenerare e sostituire l'intera stringa codificata.

La regola generale: usa i data URI Base64 per immagini sotto i 2 KB (piccole icone, SVG semplici, pixel di tracciamento 1x1). Per qualsiasi cosa più grande, servi l'immagine come file separato e lascia che il browser la memorizzi nella cache. Puoi sperimentare con i nostri strumenti di conversione Immagine a Base64 e Base64 a Immagine.

Varianti di Base64 che dovresti conoscere

Non tutta la codifica Base64 è uguale. Ecco le varianti chiave:

  • Base64 standard (RFC 4648): Usa A-Za-z0-9+/ con riempimento =. Questa è la variante più comune.
  • Base64URL (RFC 4648 Sezione 5): Usa A-Za-z0-9-_ invece di +/. Essenziale per URL, nomi di file e token. Usato nei JWT.
  • MIME Base64 (RFC 2045): Stesso alfabeto dello standard ma inserisce interruzioni di riga ogni 76 caratteri. Usato negli allegati e-mail.
  • Base32: Usa un alfabeto di 32 caratteri. Meno efficiente in termini di spazio ma insensibile alle maiuscole, utile in contesti dove la sensibilità alle maiuscole è problematica (come le chiavi segrete TOTP).

Riepilogo e punti chiave

La codifica Base64 è uno strumento fondamentale nel toolkit di ogni sviluppatore. Ecco i punti essenziali da ricordare:

  • Base64 converte i dati binari in testo usando un alfabeto di 64 caratteri, producendo un output che è il 33% più grande dell'input.
  • Funziona dividendo i dati binari in gruppi di 6 bit e mappando ogni gruppo a un carattere stampabile.
  • Gli usi comuni includono data URI, allegati e-mail, token JWT, autenticazione API e incorporamento di dati binari in JSON/XML.
  • Base64 è codifica, non crittografia. Non usarlo mai come misura di sicurezza.
  • Usa Base64 per file piccoli e trasporto dati. Evitalo per file di grandi dimensioni, sicurezza e percorsi critici per le prestazioni.
  • La variante sicura per URL (Base64URL) sostituisce i caratteri problematici per l'uso in URL e token.
Suggerimento: Aggiungi ai preferiti il nostro codificatore/decodificatore Base64 per attività rapide di codifica e decodifica. Funziona interamente nel tuo browser, quindi i tuoi dati non lasciano mai il tuo dispositivo.
Promemoria di sicurezza: Se devi proteggere dati sensibili, usa strumenti di crittografia appropriati come il nostro strumento di crittografia AES, non la codifica Base64. Per la generazione sicura di password, prova il generatore di password.
Prova il nostro codificatore Base64 gratuito

Codifica e decodifica testo o file in Base64 istantaneamente nel tuo browser. Nessun dato viene inviato a nessun server.