Base64: codifica e decodifica

Incolla un testo e convertilo in Base64, o incolla una stringa Base64 e riottieni il testo originale. Accenti ed emoji sono gestiti correttamente (UTF-8).

La conversione avviene nel tuo browser: nulla viene inviato o salvato.

A cosa serve la codifica Base64?

Base64 trasforma qualsiasi sequenza di byte in un testo composto solo da lettere, numeri, +, / e =. È il formato usato per incorporare immagini nei CSS e nelle email (data URI), per il campo Authorization: Basic nelle richieste HTTP e per le due parti di un token JWT. Non è una cifratura: chiunque può decodificarla, serve solo a trasportare dati binari dove è ammesso soltanto testo.

Perché il supporto UTF-8 è importante

La funzione btoa() del browser, da sola, fallisce con lettere accentate, simboli come « € » e le emoji, perché accetta solo caratteri a 8 bit. Questo strumento converte prima il testo in byte UTF-8 con TextEncoder, quindi «perché» ed «🙂» vengono codificati e decodificati senza errori, con lo stesso risultato che otterresti in Python o in Node.js.

Base64 non è cifratura

È l'equivoco più comune e il più pericoloso: Base64 è una codifica reversibile senza chiave, e chiunque la decodifica in un secondo. Un token, una password o un dato personale «protetti» con Base64 sono in chiaro a tutti gli effetti.

Il suo mestiere è un altro: far passare byte qualsiasi dentro un canale che accetta solo testo. È nata per gli allegati delle email, che possono trasportare solo caratteri stampabili, ed è per questo che oggi si ritrova nei JSON, negli URL e dentro le pagine HTML.

Perché occupa un terzo in più

Base64 prende tre byte alla volta e li scrive come quattro caratteri: da qui il 33% di spazio in più, più l'eventuale riempimento con il segno «=». È un costo fisso e inevitabile, non un difetto dell'implementazione.

Il conto pratico conta quando si incorporano immagini nelle pagine: una foto da 300 kB diventa 400 kB di testo dentro l'HTML, non viene messa in cache separatamente e si riscarica a ogni visita. Ha senso solo per icone piccolissime, dove si risparmia una richiesta di rete.

L'accento che rompe tutto

La funzione btoa() del browser lavora solo su byte fino a 255, quindi fallisce con qualunque carattere fuori dal latino di base: una «è», una «ñ», un'emoji o un ideogramma. Il messaggio d'errore parla di caratteri fuori intervallo, e non dice affatto qual è il problema vero.

La soluzione corretta è convertire prima il testo in byte UTF-8 e poi codificarli, e fare il percorso inverso in decodifica. È il motivo per cui una stringa codificata da un programma può risultare illeggibile in un altro: non è Base64 a divergere, è il passaggio da testo a byte.

Strumenti vicini

Per le immagini c'è la scheda dedicata, Da Base64 a immagine. Per gli indirizzi web, dove servono altre regole di codifica, guarda URL encode e decode, e per verificare l'integrità di un file Checksum di un file.