Decodifica Base64
Decodifica Base64 online gratis: ripristina stringhe Base64 in testo originale con supporto UTF-8, ASCII e ISO-8859-1, ideale per debug API, log e ripristino configurazioni.
Raccomandazioni correlate
Cos'è la Decodifica Base64?
La Decodifica Base64 è il processo inverso della Codifica Base64: a partire da una stringa composta dai 64 caratteri ASCII stampabili (A-Z, a-z, 0-9, +, /) più eventuale padding =, ricostruisce i byte originali. Lo standard di riferimento è RFC 4648, che definisce sia l'alfabeto standard sia la variante URL-Safe.
Ogni gruppo di 4 caratteri Base64 rappresenta esattamente 3 byte originali (24 bit). La decodifica traduce ciascun carattere Base64 nel valore a 6 bit corrispondente e poi unisce quattro valori a 6 bit per riottenere 3 byte. Quando l'input non è multiplo di 3 byte, il padding = aggiunto in fase di codifica indica quanti byte vanno scartati in fase di decodifica.
Esistono diverse varianti di Base64 che influenzano la decodifica. Lo standard usa + e /, ma questi caratteri sono problematici negli URL. La variante URL-Safe Base64 (RFC 4648 §5) sostituisce + con - e / con _, mentre la variante MIME Base64 (RFC 2045) inserisce un a capo ogni 76 caratteri: in decodifica questi caratteri non validi o di formattazione vanno gestiti.
Il charset è un passaggio cruciale della decodifica. Base64 codifica solo byte, non caratteri. Se il testo originale contiene caratteri non ASCII come lettere accentate italiane, ideogrammi cinesi o emoji, serve UTF-8 per reinterpretare correttamente i byte come testo. ASCII o ISO-8859-1 funzionano solo per caratteri a 1 byte nell'alfabeto latino base.
Lo strumento usa le API native atob del browser insieme alla conversione UTF-8, così il testo multibyte (italiano, inglese, emoji, ecc.) viene decodificato correttamente. Tutti i calcoli avvengono localmente e i dati non lasciano il dispositivo: puoi verificare l'assenza di richieste esterne aprendo il pannello Network degli strumenti per sviluppatori.
Casi d'uso
- Decodifica campi Base64 restituiti dalle API per visualizzare il contenuto originale
- Ripristina dati codificati in Base64 presenti nei log applicativi
- Recupera valori codificati in Base64 dai file di configurazione
- Indaga le cause degli errori di decodifica Base64 (padding mancante, caratteri non validi, ecc.)
- Decodifica header e payload di un JWT per leggere claim e metadati del token
- Ripristina testo originale da parametri URL o nomi file che usano Base64 URL-Safe
- Verifica il contenuto di un allegato email ricevuto in formato MIME Base64
Come utilizzare
- Incolla la stringa Base64 da decodificare nell'editor di sinistra
- Scegli il charset più adatto al testo originale (UTF-8, ASCII o ISO-8859-1)
- Lo strumento decodifica automaticamente e mostra il testo originale nell'editor di destra
- Copia il risultato o scaricalo come file .txt per uso successivo
Funzionalità
- Conversione bidirezionale in tempo reale: decodifica mentre digiti, con debounce di 300 ms, nessun pulsante da premere
- Supporto multi-charset: UTF-8, ASCII e ISO-8859-1 per coprire testi italiani, inglesi e multilingue
- Compatibilità URL-Safe Base64: gestisce automaticamente i caratteri - e _ e supporta input senza padding
- Rilevamento caratteri non validi: in caso di errore di decodifica indica la posizione esatta per identificare subito il problema di formato
- Copia e download con un clic: copia il risultato decodificato negli appunti o scaricalo come file .txt
- Elaborazione locale nel browser: nessun dato lascia il dispositivo, ideale per decodificare contenuti sensibili
- Supporta varianti Standard, URL-Safe e MIME Base64 per coprire scenari JWT, OAuth e allegati email
Esempi di codice
Decodifica Base64 in JavaScript (supporta UTF-8 e italiano)
// Decodifica Base64 con supporto UTF-8 (italiano, emoji, ecc.)
function b64Decode(str) {
const padded = str + '='.repeat((4 - str.length % 4) % 4);
const standard = padded.replace(/-/g, '+').replace(/_/g, '/');
const bytes = atob(standard);
const bytesArr = new Uint8Array(bytes.length);
for (let i = 0; i < bytes.length; i++) {
bytesArr[i] = bytes.charCodeAt(i);
}
return new TextDecoder('utf-8').decode(bytesArr);
}
// Codifica Base64 con supporto UTF-8
function b64Encode(str) {
const bytes = new TextEncoder().encode(str);
let bin = '';
for (const b of bytes) bin += String.fromCharCode(b);
return btoa(bin);
}
console.log(b64Decode('SGVsbG8g0LjRgtC1INC60LLQsA==')); // Ciao, è bello!
console.log(b64Encode('Ciao, è bello!')); // SGVsbG8g0LjRgtC1INC60LLQsA==Decodifica Base64 in Python
import base64
# Decodifica Base64 Standard (UTF-8)
encoded = base64.b64encode('Ciao, è bello!'.encode('utf-8'))
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded) # Ciao, è bello!
# Decodifica URL-Safe (con gestione padding omesso)
url_safe = 'SGVsbG8g0LjRgtC1INC60LLQsA'
padded = url_safe + '=' * (4 - len(url_safe) % 4)
decoded_url = base64.urlsafe_b64decode(padded).decode('utf-8')
print(decoded_url) # Ciao, è bello!
# Decodifica con rimozione automatica del padding
def b64url_decode(s: str) -> str:
s = s.replace('-', '+').replace('_', '/')
s += '=' * ((4 - len(s) % 4) % 4)
return base64.b64decode(s).decode('utf-8')
print(b64url_decode('SGVsbG8g0LjRgtC1INC60LLQsA')) # Ciao, è bello!Decodifica Base64 in Java
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64DecodeExample {
public static void main(String[] args) {
String text = "Ciao, è bello!";
String encoded = Base64.getEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
String decoded = new String(
Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
System.out.println(decoded); // Ciao, è bello!
String urlSafeNoPad = Base64.getUrlEncoder().withoutPadding()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
String decodedUrl = new String(
Base64.getUrlDecoder().decode(urlSafeNoPad), StandardCharsets.UTF_8);
System.out.println(decodedUrl);
String mime = Base64.getMimeEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
String decodedMime = new String(
Base64.getMimeDecoder().decode(mime), StandardCharsets.UTF_8);
System.out.println(decodedMime);
}
}Domande frequenti
Perché la decodifica Base64 genera InvalidCharacterError?
Le cause più comuni sono: presenza di caratteri non validi come spazi, a capo o virgolette, numero errato di caratteri di padding (=), oppure uso della variante URL-Safe (con - e _ al posto di + e /). Si consiglia di pre-elaborare la stringa con uno strumento di pulizia Base64 prima di decodificare.
Cosa fare se dopo la decodifica appare testo incomprensibile?
Probabilmente il charset scelto non è corretto. Se il testo originale è in italiano, cinese o contiene emoji, seleziona UTF-8. Se contiene solo caratteri inglesi base o dati binari, prova con ASCII o ISO-8859-1.
Qual è la differenza tra URL-Safe Base64 e Base64 standard in decodifica?
URL-Safe Base64 usa - e _ al posto di + e / e spesso omette il padding = finale. Prima di decodificare occorre ripristinare - e _ rispettivamente in + e / e aggiungere il padding corretto fino a una lunghezza multipla di 4.
La decodifica Base64 è adatta per il debug delle API?
Assolutamente sì. Molte risposte API, token OAuth, parametri di callback e log middleware incapsulano il contenuto in Base64: decodificandolo è possibile leggere direttamente il dato originale e accelerare il troubleshooting.
Come decodificare header o payload di un JWT?
JWT usa Base64URL, ovvero la variante URL-Safe. Seleziona la modalità URL-Safe e incolla direttamente il primo segmento (header) o il secondo (payload) del JWT per leggerne il contenuto JSON. Il terzo segmento è la firma e non va decodificato come testo per la verifica.
Cos'è il padding (=) in Base64 e come gestirlo in decodifica?
La lunghezza dell'output Base64 deve essere multipla di 4. Quando l'input non è multiplo di 3 byte, vengono aggiunti caratteri = come riempimento. La variante URL-Safe spesso omette il padding: in questo caso va aggiunto manualmente prima della decodifica.
Lo strumento è gratuito e sicuro?
Sì, è completamente gratuito e non richiede registrazione. Tutta la decodifica avviene localmente nel browser, quindi i tuoi dati non vengono inviati ad alcun server: puoi decodificare liberamente anche contenuti sensibili.
Posso decodificare dati binari come immagini o PDF?
Sì. Incolla la stringa Base64 e lo strumento mostrerà il contenuto binario. Per visualizzare immagini e PDF in modo dedicato puoi usare gli strumenti Base64 in immagine e Base64 in PDF di GeekFormat.
Quale charset devo scegliere per testi con lettere accentate o emoji?
Usa UTF-8, che è lo standard per il web e supporta correttamente lettere accentate italiane, emoji, caratteri cinesi, giapponesi, coreani e tutte le lingue moderne. ASCII e ISO-8859-1 non supportano questi caratteri.
Risoluzione dei problemi
Errore InvalidCharacterError durante la decodifica
La stringa contiene caratteri non appartenenti all'alfabeto Base64 (spazi, a capo, tabulazioni, virgolette, emoji). Apri l'editor di input e ripulisci la stringa rimuovendo i caratteri estranei, oppure usa la modalità URL-Safe se la stringa contiene - e _ al posto di + e /.
Decodifica riuscita ma il testo è incomprensibile
Quasi certamente stai usando il charset sbagliato. Se il testo contiene lettere accentate italiane, emoji o caratteri cinesi, seleziona UTF-8. Se è solo testo inglese base, prova con ASCII o ISO-8859-1.
Padding mancante o errato
La stringa Base64 dovrebbe avere lunghezza multipla di 4. Se mancano uno o due caratteri = finali, aggiungili manualmente prima di decodificare. Lo strumento aggiunge automaticamente il padding mancante, ma in caso di problemi puoi intervenire a mano.
URL-Safe Base64 non viene decodificato
La variante URL-Safe usa - e _ al posto di + e / e spesso omette il padding. Converti manualmente - in + e _ in /, quindi aggiungi il padding = fino a raggiungere una lunghezza multipla di 4. In alternativa seleziona la modalità URL-Safe nello strumento.
Spazi e a capo non vengono riconosciuti
Alcuni sistemi, soprattutto MIME Base64, inseriscono un a capo ogni 76 caratteri. Lo strumento rimuove automaticamente spazi, tabulazioni e a capo dalla stringa prima della decodifica, quindi puoi incollare direttamente anche stringhe multi-linea.
Decodifica lenta su input molto grandi
La decodifica Base64 è O(n) e dovrebbe essere quasi istantanea anche per stringhe di diversi megabyte. Se riscontri lentezza, prova a dividere l'input in blocchi più piccoli o verifica che il browser non sia sovraccarico da altre operazioni aperte.
Glossario
- RFC 4648
- Standard ufficiale IETF per le codifiche Base16, Base32 e Base64. Definisce gli alfabeti Base64 standard e URL-Safe, oltre alle regole su padding, a capo e gestione dei caratteri fuori alfabeto. È il riferimento attuale della decodifica Base64 e sostituisce la precedente RFC 3548.
- RFC 2045 (MIME)
- Standard Multipurpose Internet Mail Extensions, il primo a definire Base64 come codifica di trasferimento per le email. Stabilisce righe non più lunghe di 76 caratteri con CRLF come a capo: è la variante MIME Base64, molto presente negli allegati email.
- Base64URL (URL-Safe Base64)
- Variante sicura per URL definita in RFC 4648 §5. Sostituisce + e / con - e _ e spesso omette il padding =. È usata in JWT, OAuth PKCE, parametri URL e nomi file. In fase di decodifica i caratteri - e _ vanno riconvertiti in + e / e il padding va ripristinato.
- InvalidCharacterError
- Errore generato da atob e da altre API di decodifica quando la stringa contiene caratteri fuori dall'alfabeto Base64 (spazi, a capo, virgolette, caratteri non stampabili, ecc.). Per risolverlo basta ripulire l'input o convertire la variante URL-Safe nella forma standard.
- Padding (riempimento)
- Carattere = aggiunto alla fine di una stringa Base64 per rendere la lunghezza un multiplo di 4. Indica quanti byte fittizi sono stati aggiunti e devono essere rimossi in fase di decodifica. La variante URL-Safe spesso omette il padding: in decodifica va ripristinato.
- atob / btoa
- API native del browser: btoa (binary to ASCII) codifica in Base64, atob (ASCII to binary) decodifica da Base64. Supportano solo Latin-1 (ISO-8859-1), quindi per testo italiano, cinese ed emoji serve una conversione UTF-8 aggiuntiva.
- MIME Base64
- Variante Base64 conforme a RFC 2045 che inserisce un a capo (CRLF) ogni 76 caratteri. In decodifica questi caratteri di a capo vanno rimossi prima di passare la stringa al decodificatore per ottenere il dato originale.
- Charset (set di caratteri)
- Mappatura tra byte e caratteri usata per interpretare il risultato della decodifica Base64. UTF-8 è lo standard moderno e supporta tutte le lingue; ISO-8859-1 copre solo il latino base; ASCII copre i primi 128 caratteri. Scegliere il charset sbagliato produce testo incomprensibile.
Tabella di compatibilità tra varianti Base64 in decodifica
| Caratteristica | Standard | URL-Safe | MIME |
|---|---|---|---|
| Caratteri speciali | + / | - _ | + / |
| Padding (=) | Usato | Spesso omesso | Usato |
| A capo | Nessuno | Nessuno | Ogni 76 caratteri |
| Standard di riferimento | RFC 4648 §4 | RFC 4648 §5 | RFC 2045 |
| Operazione richiesta in decodifica | Decodifica diretta | Sostituire - _ con + / e aggiungere padding | Rimuovere a capo e decodificare |
Tabella di confronto charset per la decodifica Base64
| Charset | Byte per carattere | Lingue supportate | Scenario tipico |
|---|---|---|---|
ASCII | 1 byte | Inglese base, numeri, simboli | Log tecnici e payload di protocolli |
ISO-8859-1 | 1 byte | Europeo occidentale (italiano, francese, tedesco, spagnolo) | Vecchi sistemi e file di configurazione legacy |
UTF-8 | 1-4 byte | Tutte le lingue moderne, emoji, simboli tecnici | Web moderno, API REST, JSON, internazionalizzazione |
Authoritative References
- ReferenceRFC 4648 - Codifiche di dati Base16, Base32 e Base64
- ReferenceRFC 2045 - MIME Parte 1: formato dei corpi dei messaggi Internet
- ReferenceRFC 7519 - JSON Web Token (JWT)
- ReferenceMDN Web Docs - atob()
- ReferenceMDN Web Docs - btoa()
- ReferenceWikipedia - Base64
- Confronto sicuro testo
- Conversione binario
- Cifrario di Cesare
- Codice Morse
- Conversione Hex
- Video in Base64
- Da Base64 a Video
- Immagine in Base64
- Da Base64 a Immagine
- Testo in Base64
- Da Base64 a Testo
- Verificatore hash di file
- File in Base64
- Base64 in File
- Audio in Base64
- Base64 in Audio
- Crittografia e decrittografia AES
- Crittografia e decrittografia DES
- Encoder Decoder Base32
- Codifica e decodifica Base58
- Codifica Base64
- Decodifica Base64
- Confronta Base64
- Dividi Base64
- Unisci Base64 multi-linea
- Formattazione Base64
- Verifica Formato Base64
- Codifica Base64 in batch
- Decodifica Base64 Batch
- Pulizia Base64
- Gestione Padding Base64
- Statistiche Lunghezza Base64
- Da Base64 a Hex
- Convertitore Base64 DataURL
- Convertitore Base64-Hex
- Codifica Base85
- Generatore e verificatore HMAC
- Derivazione chiave PBKDF2
- Hash MD5
- Hash SHA-256
- Hash SHA1
- Hash SHA512
- Decodificatore, Verificatore e Generatore JWT
- Codifica e decodifica entità HTML
- Unicode Escape
- Codifica URL
- Base64 URL Safe
- MIME Base64
- Offuscamento Java
- Offuscamento JS
- Offuscamento PHP
- Offuscamento Python