Base64 Converter Online

Codifica e decodifica testi in formato Base64 in modo rapido e sicuro. Tutto avviene nel tuo browser.

Pubblicità

Cos'è il Base64?

Base64 è un metodo di codifica che converte dati binari in testo ASCII. Viene spesso utilizzato per trasmettere dati su canali che supportano solo testo, come le email (MIME) o per includere immagini direttamente nel codice HTML/CSS.

Come funziona?

L'algoritmo suddivide i dati binari in blocchi di 3 byte (24 bit) e li rappresenta come 4 caratteri stampabili a 6 bit. I caratteri utilizzati sono A-Z, a-z, 0-9, + e /. Il simbolo = viene usato come riempimento (padding) alla fine.

Approfondimenti

Storia e Standard Base64

Base64 fu sviluppato negli anni '90 per risolvere un problema critico: trasmettere dati binari (immagini, file, eseguibili) attraverso sistemi progettati solo per testo ASCII a 7 bit, come le email SMTP tradizionali.

Il predecessore era UUENCODE (Unix-to-Unix Encoding), introdotto nel 1980, ma usava caratteri meno affidabili e aveva problemi di compatibilità cross-platform. Base64 è diventato standard con il MIME (Multipurpose Internet Mail Extensions) nel 1996 (RFC 2045) per allegati email.

Lo standard attuale è definito nella RFC 4648 (2006), che specifica 3 varianti: Base64 standard, Base64 URL-safe (usato in JWT e OAuth), e Base32 (alfabeto più ridotto per sistemi case-insensitive).

Uso Moderno: Oggi Base64 è onnipresente nello sviluppo web. I JSON Web Tokens (JWT) usano Base64 URL-safe per codificare header e payload. Le API RESTful trasmettono file binari in JSON usando Base64. I browser supportano nativamente btoa() (encode) e atob() (decode).

Quando Usare Base64

Data URIs in HTML/CSS: Includere immagini piccole (icone, loghi) direttamente nel codice senza HTTP request separato:

<img src="data:image/png;base64,iVBORw0KG..." />

Allegati Email (MIME): Quando mandi email con attachment, il client codifica PDF, immagini, ZIP in Base64 per compatibilità con server email che gestiscono solo testo ASCII a 7 bit.

JWT e Autenticazione API: I token JWT (JSON Web Tokens) sono 3 stringhe Base64 separate da punti: header.payload.signature. Esempio: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Storing Binary in JSON/XML: JSON non supporta dati binari nativamente. Per inviare un file via API JSON, devi codificarlo in Base64. MongoDB, localStorage browser, e molti database NoSQL memorizzano binari come Base64.

Embed Fonts e Assets: Font web (@font-face) e CSS possono includere WOFF/TTF codificati in Base64 per ridurre HTTP requests in applicazioni critiche per performance.

Algoritmo di Codifica Dettagliato

Esempio: Codificare "Man"

  1. Converti in ASCII:
    M = 77, a = 97, n = 110
  2. Binario a 8 bit:
    01001101 01100001 01101110 (24 bit totali)
  3. Raggruppa in 6 bit:
    010011 | 010110 | 000101 | 101110
  4. Converti in decimale:
    19, 22, 5, 46
  5. Mappa su caratteri Base64:
    Alfabeto: A-Z (0-25), a-z (26-51), 0-9 (52-61), + (62), / (63)
    19=T, 22=W, 5=F, 46=u → Risultato: TWFu

Padding con =: Se i byte input non sono multipli di 3, si aggiunge padding. "Ma" (2 byte) → TWE=, "M" (1 byte) → TQ==. Ogni = rappresenta 6 bit mancanti.

Overhead del 33%: Base64 aumenta sempre la dimensione del 33% perché trasforma 3 byte (24 bit) in 4 caratteri (4×6=24 bit, ma ogni carattere occupa 8 bit). Quindi 3 byte → 4 byte. Un file da 1MB diventa 1.33MB codificato.

Errori Comuni da Evitare

Errore #1: Base64 NON è crittografia
Base64 è encoding, non encryption. Chiunque può decodificarlo in 1 secondo con atob() o questo tool. Non usarlo per "nascondere" password o dati sensibili! Usa AES, RSA, o hash (SHA-256, bcrypt).

Errore #2: Variante Standard vs URL-safe
Base64 standard usa + e /, ma questi caratteri hanno significato speciale negli URL. La variante URL-safe sostituisce: +-, /_, e omette padding =. JWT usa sempre URL-safe.

Errore #3: Line breaks nel codice
Alcuni encoder (es. OpenSSL, email clients) inseriscono newline ogni 76 caratteri per leggibilità. Ma decodificare richiede rimuoverli! JavaScript atob() fallisce con newline — usa .replace(/\s/g, "") prima di decodificare.

Errore #4: Omettere padding
Alcuni sistemi omettono i trailing = per compattezza. JavaScript atob() in alcuni browser fallisce senza padding corretto. Aggiungi manualmente: while (str.length % 4) str += '=';

Alternative e Casi Avanzati

Base32: Usa solo A-Z e 2-7 (32 caratteri), più sicuro per sistemi case-insensitive (Windows filesystem). Usato in: Google Authenticator TOTP codes, Bittorrent magnet links. Overhead 60% (vs 33% di Base64).

Base85 (Ascii85): Più efficiente di Base64, overhead solo 25%. Usato in PostScript, PDF, Git packs. Però meno compatibile (usa caratteri speciali <>).

Data URIs e Performance: Includere troppe immagini Base64 in HTML/CSS aumenta il file size e rallenta parsing. Limite consigliato: <5KB per immagine, max 2-3 images. Per file grandi, usa hosting separato + HTTP/2 multiplexing.

JWT Structure: Un JWT ha 3 parti separate da punti:

  • Header: {"alg":"HS256","typ":"JWT"} codificato
  • Payload: Claims (user ID, expiration, ecc.) codificati
  • Signature: HMAC-SHA256(header+payload, secret)

MIME Types con Data URI: Specifica sempre il MIME type corretto:

  • PNG: data:image/png;base64,...
  • SVG: data:image/svg+xml;base64,...
  • PDF: data:application/pdf;base64,...
  • JSON: data:application/json;base64,...

Quando NON usare Base64: File grandi (>100KB) perché aumentano del 33% e rallentano caricamento pagina. Video/audio (usa streaming HTTP invece). Dati già testuali (JSON, XML, CSV già sono testo, non serve encoding).

💡 Tip Sicurezza: Se codifichi dati user-generated in Base64 per includerli in HTML, DEVI comunque sanitizzare l'input prima! Un attaccante potrebbe inserire<script> tags codificati che, dopo il decode, causano XSS. Base64 non protegge da injection attacks.

Pubblicità