TextToolbox Strumenti di testo istantanei

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.