Codifica Base64

Testo input
0 caratteri

Codifica e decodifica Base64 online con charset UTF-8, ASCII e ISO-8859-1, varianti Standard, URL-Safe e MIME, statistiche live e gestione locale nel browser.

Raccomandazioni correlate

Cos’è la Codifica Base64?

Base64 è uno schema di codifica da binario a testo basato su 64 caratteri ASCII stampabili, definito per la prima volta da RFC 2045 (standard MIME). La Codifica Base64 trasforma ogni gruppo di 3 byte (24 bit) in 4 caratteri Base64 (A-Z, a-z, 0-9, +, /), permettendo di trasmettere dati binari attraverso sistemi solo testuali come header HTTP, payload JSON, documenti XML o parametri di query URL.

**Base64 non è crittografia**: offre solo una conversione del formato dei dati e chiunque può decodificarlo facilmente. Se devi proteggere informazioni sensibili, usa una vera soluzione di crittografia come AES. Gli usi tipici includono HTTP Basic Authentication (`Authorization: Basic dXNlcjpwYXNz`), segmenti header e payload dei JWT Token in formato Base64URL, Data URI (`data:image/png;base64,...`) e codifica MIME per allegati email.

**URL-Safe Base64** (RFC 4648 §5) sostituisce + e / del Base64 standard con - e _ e di solito omette il padding =. In questo modo il risultato codificato può comparire senza problemi in URL, percorsi file o campi JSON. JWT Token, code_verifier di OAuth PKCE e AWS Signature V4 usano tutti la Codifica Base64 URL-Safe.

**Il folding MIME** è lo standard definito da RFC 2045 per mantenere ogni riga entro 76 caratteri. Quando un contenuto Base64 viene usato nelle email o in scenari che richiedono testo su più righe, la variante MIME inserisce automaticamente un carattere di nuova riga (`\n`) ogni 76 caratteri. È il formato standard per trasmettere allegati email.

Lo strumento usa le **API native btoa/atob** del browser insieme a una logica sicura per UTF-8, così caratteri multibyte come cinese, giapponese ed emoji vengono codificati correttamente. Tutti i calcoli avvengono localmente e i dati non vengono inviati a nessun server. Puoi aprire il pannello Network degli strumenti per sviluppatori del browser e verificare che non partano richieste esterne.

Casi d'uso

  • Debug JWT: decodifica header e payload di un JWT (formato Base64URL) per leggere le claim del token
  • Basic Auth: codifica username:password come credenziali per HTTP Basic Authentication
  • Sviluppo OAuth: genera il code_verifier o verifica il code_challenge negli scenari PKCE
  • Debug API: codifica dati JSON o decodifica campi Base64 restituiti da un’API
  • Immagini incorporate con Data URI: converti piccole icone in formato data:image/...;base64,... da inserire in CSS/HTML
  • Allegati email: codifica allegati binari nel formato MIME Base64

Come utilizzare

  1. Scegli la modalità: fai clic su Encode (codifica) o Decode (decodifica) per cambiare direzione di elaborazione
  2. Scegli la variante: Standard, URL-Safe (JWT/OAuth) o MIME (formato email con a capo ogni 76 caratteri)
  3. Inserisci il contenuto: incolla testo o una stringa Base64 e il risultato viene generato in tempo reale
  4. Controlla le statistiche: in basso trovi numero di caratteri e tasso di espansione, circa +33% in codifica
  5. Copia il risultato: usa il pulsante di copia per ottenere subito la stringa Base64 o il testo decodificato

Funzionalità

  • Passaggio Encode/Decode con un clic: cambia liberamente tra codifica e decodifica; l’output può diventare input per cicli di lavoro rapidi
  • Tre set di caratteri: UTF-8 (cinese, giapponese ed emoji), ASCII e ISO-8859-1 per coprire casi d’uso professionali
  • Tre varianti di output: Standard, URL-Safe sicura per JWT/OAuth/PKCE e MIME conforme a RFC 2045 con righe da 76 caratteri
  • Statistiche in tempo reale: mostra caratteri di input/output e tasso di espansione, perché Base64 aumenta la dimensione di circa il 33%
  • Messaggi di errore chiari: quando un carattere è fuori intervallo, mostra il motivo preciso invece di un errore generico
  • Divisore trascinabile: su desktop regoli la proporzione tra editor di input e output per concentrarti sul contenuto
  • Tab indipendenti su mobile: su smartphone e tablet passi tra input e output con un’esperienza più fluida

Esempi di codice

Codifica Base64 in JavaScript (supporta UTF-8 e cinese)

// 编码(支持 UTF-8 中文)
function b64Encode(str) {
  return btoa(unescape(encodeURIComponent(str)));
}

// 解码(支持 UTF-8 中文)
function b64Decode(str) {
  return decodeURIComponent(escape(atob(str)));
}

// URL-Safe 编码(用于 JWT / OAuth)
function b64UrlEncode(str) {
  return btoa(unescape(encodeURIComponent(str)))
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=+$/, '');
}

console.log(b64Encode('Hello 世界')); // SGVsbG8g5LiW55WM
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界

Codifica Base64 in Python

import base64

# Standard 编码(UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
print(encoded.decode())  # SGVsbG8g5LiW55WM

# Standard 解码
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded)  # Hello 世界

# URL-Safe 编码(用于 JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
print(url_safe.decode())  # SGVsbG8g5LiW55WM(无 padding 需手动去除)

# 去除 padding(JWT 标准做法)
url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)

Codifica Base64 in Java

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        String text = "Hello 世界";

        // Standard 编码
        String encoded = Base64.getEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(encoded); // SGVsbG8g5LiW55WM

        // Standard 解码
        String decoded = new String(
            Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(decoded); // Hello 世界

        // URL-Safe 编码(用于 JWT / URL)
        String urlSafe = Base64.getUrlEncoder().withoutPadding()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(urlSafe);

        // MIME 编码(76字符换行)
        String mime = Base64.getMimeEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
    }
}

Domande frequenti

La Codifica Base64 e la crittografia sono la stessa cosa?

No. Base64 converte solo il testo in una rappresentazione reversibile: chiunque può decodificarla e tornare al contenuto originale. Per dati sensibili come password o token, usa una vera soluzione di crittografia come AES. Base64 serve alla conversione di formato, utile per trasmettere dati binari in sistemi testuali.

Strumento di cifratura AES

Quanto aumenta la dimensione dopo la Codifica Base64?

La Codifica Base64 aumenta la dimensione dei dati originali di circa il 33%. Questo accade perché ogni 3 byte (24 bit) vengono codificati in 4 caratteri Base64. Ad esempio, un testo di 100 byte diventa circa 133 byte. Lo strumento mostra in tempo reale il tasso di espansione per aiutarti a stimare la dimensione. Esempio: `Hello` → `SGVsbG8=` (+33%).

Statistiche Base64

Qual è la differenza tra Standard, URL-Safe e MIME?

Standard è il Base64 classico e usa i caratteri A-Z, a-z, 0-9, + e /. URL-Safe sostituisce + e / con - e _, quindi è adatto a parametri URL e JWT Token. MIME inserisce un a capo ogni 76 caratteri secondo RFC 2045, per allegati email e testo su più righe.

URL-Safe Base64MIME Base64

Come decodificare header o payload di un JWT?

JWT usa Base64URL, cioè la variante URL-Safe. Seleziona la modalità URL-Safe e incolla direttamente il primo segmento del JWT (header) o il secondo segmento (payload) per decodificarlo. Il terzo segmento è la firma: non va interpretato come testo decodificato per la verifica.

Strumento JWT

Cos’è il padding (riempimento) in Base64?

La lunghezza del risultato Base64 deve essere un multiplo di 4. Quando l’input non ha una lunghezza multipla di 3 byte, alla fine vengono aggiunti caratteri = come riempimento. La variante URL-Safe spesso omette il padding. Lo strumento gestisce automaticamente il padding e rimuove i caratteri = durante la decodifica quando necessario.

Strumento padding Base64

Perché btoa e atob in JavaScript non supportano direttamente il cinese?

btoa e atob sono API native del browser che operano sul set Latin-1 (ISO-8859-1), in cui ogni carattere occupa 1 byte. I caratteri cinesi in UTF-8 occupano 3 byte, quindi passarli direttamente può generare errore. La soluzione è convertire prima il testo in sequenze UTF-8 con encodeURIComponent, trasformarle in una stringa Latin-1 con unescape e poi usare btoa.

Cos’è il Data URI Scheme? Come incorporare immagini con Base64?

Data URI è un formato URI che consente di incorporare dati direttamente in un URL, con sintassi `data:[<mediatype>][;base64],<data>`. Ad esempio: `data:image/png;base64,iVBORw0KGgo...`. È utile per piccole icone o sfondi CSS perché riduce le richieste HTTP. Poiché Base64 aumenta la dimensione del 33%, è consigliato solo per file piccoli; per file grandi meglio usare URL normali.

Strumento Data URIBase64 in immagine

Glossario

RFC 4648
Standard ufficiale IETF per le codifiche Base16, Base32 e Base64. Definisce gli alfabeti Base64 standard e URL-Safe Base64, oltre alle regole per padding, a capo e gestione dei caratteri fuori alfabeto. È lo standard de facto attuale della Codifica Base64 e sostituisce la precedente RFC 3548.Strumento URL-Safe Base64Strumento padding Base64
RFC 2045 (MIME)
Standard Multipurpose Internet Mail Extensions (MIME), il primo a definire Base64 come codifica di trasferimento per contenuti email. Stabilisce che la Codifica Base64 non superi 76 caratteri per riga e usi CRLF per andare a capo: questa è la variante MIME Base64.Strumento MIME Base64
Base64URL (URL-Safe Base64)
Variante sicura per URL definita in RFC 4648 §5. Sostituisce + del Base64 standard con - e / con _, e di solito omette il carattere di padding =. È molto usata in JWT Token, OAuth PKCE, parametri URL e nomi file.Strumento URL-Safe Base64Strumento JWT
MIME Base64
Variante Base64 conforme a RFC 2045 che inserisce un a capo (CRLF) ogni 76 caratteri. È usata soprattutto per trasmettere allegati email, perché i protocolli SMTP storici avevano limiti sulla lunghezza delle singole righe.Strumento MIME Base64
Padding (riempimento)
La lunghezza del risultato Base64 deve essere un multiplo di 4. Quando il numero di byte in input non è multiplo di 3, il risultato viene completato con il carattere =. Il Base64 standard usa il padding, mentre Base64URL spesso lo omette.Strumento padding Base64
Alfabeto Base64 (Alphabet)
Insieme dei 64 caratteri usati dalla Codifica Base64. L’alfabeto Base64 standard è composto da A-Z (26), a-z (26), 0-9 (10), + e /, per un totale di 64 caratteri, più il carattere di riempimento =.
btoa / atob
API native del browser per codificare e decodificare Base64. btoa (binary to ASCII) serve a codificare, mentre atob (ASCII to binary) serve a decodificare. Queste API supportano solo Latin-1, quindi per il cinese e altri testi Unicode bisogna aggiungere una conversione UTF-8.
Data URI Scheme
Formato URI che consente di incorporare piccoli file direttamente in un URL, con struttura data:[<mediatype>][;base64],<data>. È usato spesso per piccole icone o immagini di sfondo CSS, riducendo il numero di richieste HTTP.Strumento Data URIBase64 in immagine
HTTP Basic Authentication
Metodo di autenticazione del protocollo HTTP in cui username e password vengono uniti con due punti, codificati in Base64 e trasmessi nell’header Authorization. Il formato è: Authorization: Basic <base64(username:password)>.Generatore Auth Header
Tasso di espansione Base64
Percentuale di aumento della dimensione dei dati dopo la Codifica Base64. Ogni 3 byte (24 bit) vengono codificati in 4 caratteri Base64, quindi la dimensione cresce di circa il 33% (4/3 ≈ 1,333). Con il padding, l’espansione può essere leggermente maggiore.

Confronto tra le tre varianti Base64

CaratteristicaStandardURL-SafeMIME
Caratteri speciali+ /- _+ /
Padding (=)UsatoDi solito omessoUsato
A capoNessunoNessunoA capo ogni 76 caratteri
StandardRFC 4648 §4RFC 4648 §5RFC 2045
Scenario tipicoData URI e codifica genericaJWT, parametri URL, nomi fileAllegati email e trasmissione SMTP

Tabella comparativa delle codifiche Base

CodificaNumero caratteriCaratteristiche del setAumento dimensioneUso tipico
Base16 (Hex)160-9, A-F100%Debug e visualizzazione di hash
Base3232A-Z, 2-7 (maiuscole non ambigue)60%DNS, chiavi TOTP, codici QR
Base5858Esclude caratteri ambigui 0/O/I/l38%Indirizzi Bitcoin e criptovalute
Base6262A-Z, a-z, 0-934%URL brevi e codifica ID
Base6464A-Z, a-z, 0-9, +, /33%Data URI, MIME, JWT (variante URL-Safe)

Authoritative References