Codificatore/Decodificatore Base64
Scrivi o incolla il testo, poi codifica o decodifica. Unicode ed emoji funzionano correttamente — nulla di ciò che inserisci lascia il tuo browser.
Base64 corretto per Unicode, non solo ASCII
Base64 codifica byte, non caratteri, quindi il primo passo per il
testo è trasformare la stringa in byte — ed è esattamente lì che le
implementazioni ingenue si rompono. Questo strumento usa TextEncoder per convertire il tuo testo nella sua
sequenza di byte UTF-8 corretta prima di codificarla in Base64, e TextDecoder per invertire il processo al ritorno. La
scorciatoia comune, il semplice btoa(testo), presume un
byte per carattere (Latin-1) e si rompe non appena digiti una
lettera accentata, un carattere greco o un'emoji — questo strumento
non ha quel problema.
Esempio pratico
Codificando città perché già (tre parole italiane, ognuna
con una lettera accentata) si ottiene esattamente:
Y2l0dMOgIHBlcmNow6kgZ2nDoA==
Decodificando quella stringa si ottiene di nuovo città perché già — ogni accento intatto. Passa lo stesso
input attraverso btoa() direttamente e non otterrai un
errore (à ed é rientrano comunque nell'intervallo Latin-1), ma un
Base64 diverso e sbagliato: Y2l0dOAgcGVyY2jpIGdp4A==.
Un decoder che si aspetta correttamente UTF-8 fallisce nel leggerlo:
è un modo silenzioso di ottenere dati corrotti, più insidioso di un
errore esplicito.
Domande frequenti
A cosa serve davvero il Base64?
Base64 trasforma byte arbitrari in una stringa di lettere, cifre, +, / e = — un alfabeto sicuro da inserire ovunque ci si aspetti testo semplice. Questo conta perché molti formati non possono trasportare byte grezzi: la posta elettronica (gli allegati MIME sono codificati in Base64), i data URI (incorporare una piccola immagine direttamente in CSS o HTML come data:image/png;base64,...) e i campi JSON o XML che devono trasportare contenuto binario senza rompere la sintassi circostante.
Perché emoji e accenti mandano in errore alcuni encoder Base64?
La funzione nativa di JavaScript btoa() presume che ogni carattere stia in un solo byte Latin-1 (0–255). Per lettere accentate come à o é — che rientrano nell'intervallo Latin-1 — non genera un errore, ma produce byte sbagliati, diversi da quelli UTF-8 corretti: il risultato sembra Base64 valido ma decodifica in testo corrotto. Per caratteri fuori da quell'intervallo, come ☕ o 日本語, btoa() genera invece un errore immediato. Il testo in JavaScript è internamente UTF-16 ma quasi sempre pensato come UTF-8 sulla rete, dove questi caratteri occupano da 2 a 4 byte ciascuno. Questo strumento codifica prima con TextEncoder (trasformando la tua stringa nella sequenza di byte UTF-8 corretta), poi applica Base64 a quei byte — così tutto ciò che btoa() da solo romperebbe o corromperebbe esce corretto.
Base64 è cifratura o una misura di sicurezza?
No — ed è importante saperlo. Base64 è una codifica, non un cifrario. Non ha chiave, non ha segreto, e chiunque può decodificarlo istantaneamente con qualsiasi strumento online o una singola riga di codice. Se vedi credenziali o token 'protetti' da Base64, non sono protetti affatto: considera Base64 puramente come un formato di sicurezza del testo, mai come un modo per nascondere o proteggere informazioni.
Posso codificare file con questo strumento?
Al momento no — questo strumento lavora sul testo che scrivi o incolli, non sul caricamento di file. Codificare i byte grezzi di un file in Base64 (come fanno i browser internamente per i data URI) è un compito correlato ma diverso, che questo strumento non svolge.