Decodifica Base64

Input Base64
0 caratteri

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

  1. Incolla la stringa Base64 da decodificare nell'editor di sinistra
  2. Scegli il charset più adatto al testo originale (UTF-8, ASCII o ISO-8859-1)
  3. Lo strumento decodifica automaticamente e mostra il testo originale nell'editor di destra
  4. 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

CaratteristicaStandardURL-SafeMIME
Caratteri speciali+ /- _+ /
Padding (=)UsatoSpesso omessoUsato
A capoNessunoNessunoOgni 76 caratteri
Standard di riferimentoRFC 4648 §4RFC 4648 §5RFC 2045
Operazione richiesta in decodificaDecodifica direttaSostituire - _ con + / e aggiungere paddingRimuovere a capo e decodificare

Tabella di confronto charset per la decodifica Base64

CharsetByte per carattereLingue supportateScenario tipico
ASCII1 byteInglese base, numeri, simboliLog tecnici e payload di protocolli
ISO-8859-11 byteEuropeo occidentale (italiano, francese, tedesco, spagnolo)Vecchi sistemi e file di configurazione legacy
UTF-81-4 byteTutte le lingue moderne, emoji, simboli tecniciWeb moderno, API REST, JSON, internazionalizzazione

Authoritative References