DevBox Strumenti veloci per sviluppatori, senza registrazione

Codificatore/Decodificatore Base64

Digita o incolla del testo, poi codifica o decodifica. Unicode ed emoji funzionano correttamente — nulla di ciò che inserisci esce dal tuo browser.

Base64 corretto con l'Unicode, non solo ASCII

Il Base64 codifica byte, non caratteri, quindi il primo passo per il testo è convertire la tua stringa in byte — ed è esattamente lì che le implementazioni ingenue si rompono. Questo strumento converte il tuo testo nella sua corretta sequenza di byte UTF-8 con TextEncoder prima, poi codifica quei byte in Base64, e inverte il processo con TextDecoder al ritorno:

function toBase64(str) {
  return btoa(String.fromCharCode(...new TextEncoder().encode(str)));
}
function fromBase64(b64) {
  return new TextDecoder().decode(Uint8Array.from(atob(b64), c => c.charCodeAt(0)));
}

La scorciatoia comune, un semplice btoa(testo), presume un byte per carattere (Latin-1) e si rompe non appena digiti una lettera accentata o un emoji — questo strumento non ha questo problema, perché non passa mai caratteri grezzi a btoa.

Esempio pratico

Codificare perché 😀 (una lettera accentata e un emoji insieme) produce esattamente:

cGVyY2jDqSDwn5iA

Decodificare quella stringa restituisce perché 😀 esatto — ogni carattere intatto. Fai passare lo stesso input direttamente per una btoa() nuda e lancerà un errore, perché 😀 sta fuori dal Latin-1.

Domande frequenti

A cosa serve davvero il Base64?

Il Base64 trasforma byte arbitrari in una stringa composta solo da lettere, cifre, +, / e = — un alfabeto sicuro da inserire ovunque ci si aspetti testo semplice. Questo conta perché molti formati non riescono a trasportare binario grezzo senza rompersi: gli allegati email (MIME li codifica 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 spezzare la sintassi circostante.

Perché emoji e lettere accentate rompono alcuni strumenti Base64?

La btoa() nuda di JavaScript presume che ogni carattere stia in un solo byte (0–255) e restituisce errore o corrompe tutto ciò che sta fuori da quell'intervallo — così una è accentata o un emoji escono sbagliati. Questo strumento codifica prima con TextEncoder, che converte il tuo testo nella sua corretta sequenza di byte UTF-8, e poi codifica in Base64 quei byte invece dei caratteri grezzi; TextDecoder inverte il processo al ritorno. Per questo perché, città o un emoji vengono codificati e decodificati correttamente qui, a differenza di un btoa(testo) diretto.

Il Base64 è una cifratura o una misura di sicurezza?

No — è importante saperlo. Il Base64 è una codifica, non un cifrario: non ha chiave né segreto, e chiunque può decodificarlo all'istante con qualsiasi strumento online o una riga di codice. Se vedi credenziali o token 'protetti' con Base64, non sono protetti affatto — trattalo esclusivamente come un formato per trasportare testo in modo sicuro, mai come un modo per nascondere o proteggere informazioni.

Posso codificare file con questo strumento?

Al momento no — questo strumento lavora sul testo che digiti o incolli, non su file caricati. 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.