Vai all’encoder Base64

RFC 4648 · Encoder e decoder

Codifica in Base64 qualsiasi cosa, senza caricare nulla.

Un encoder e decoder Base64 online e gratuito per testo, file e immagini, eseguito in JavaScript nella tua scheda del browser. Non viene caricato nulla, quindi continua a funzionare offline e non ha limiti di dimensione.

  • Codifica mentre scrivi
  • Testo, file e immagini
  • Modalità URL-safe e MIME
  • Niente pubblicità né registrazione
0 caratteri · 0 B
0 caratteri · 0 B
Opzioni
Varianti di codifica

Ctrl+Enter codifica Ctrl+Shift+C copia il risultato Ctrl+Shift+X inverti direzione

Codifica Base64 online: gratis, istantanea e privata

Questo strumento di codifica Base64 online lavora nel tuo browser, non su un server. Scrivi nel riquadro qui sopra e il Base64 compare mentre digiti: niente pulsanti, niente ricaricamenti, niente upload. Passa a Decodifica per l’operazione inversa, oppure apri la scheda File e immagine per codificare un’immagine in Base64 e ottenere un data URI da incollare direttamente in HTML o CSS.

C’è tutto quello che definisce lo standard: l’alfabeto standard, il Base64 URL-safe (RFC 4648 §5), le righe MIME da 76 caratteri, i fine riga LF e CRLF, la codifica riga per riga e sei set di caratteri, da UTF-8 a ISO-8859-1 e UTF-16. Se preferisci codificare in Base64 nel tuo codice, gli esempi qui sotto coprono Python, JavaScript, Linux e macOS, PowerShell, PHP, Java, Go, C# e Ruby.

Ultimo aggiornamento:

Perché questo

La differenza sta nel luogo in cui avviene la codifica.

La maggior parte degli strumenti Base64 invia il tuo file a un server, lo codifica lì e ti restituisce un link per scaricarlo. I tuoi dati lasciano quindi il tuo computer per una trasformazione che il browser esegue in microsecondi. Questo strumento non fa mai quella richiesta.

Confronto tra questo encoder Base64 e i tipici strumenti Base64 online basati su server
Funzione freebase64encode.com Tipico encoder online
Dove vengono elaborati i dati Sempre nella tua scheda del browser Caricati su un server
Limite di dimensione dei file Solo la memoria del dispositivo Di solito al massimo 100 MB
File salvati su un server Mai: non esiste un endpoint Conservati temporaneamente, poi eliminati
Funziona anche offline Sì, una volta caricata la pagina No
Codifica in tempo reale mentre scrivi Attiva di default Opzionale o con un pulsante
Codifica e decodifica Una pagina, un clic per invertire Due pagine separate
Immagine → data URI + HTML/CSS/Markdown Integrato, con anteprima Non disponibile
Esempi di codice in 9 linguaggi Nella pagina Non disponibile
Aumento di dimensione mostrato Byte e % in tempo reale Non mostrato
Pubblicità e banner dei cookie Nessuno, e nessun cookie di tracciamento Di solito presenti

Nel codice

Codifica Base64 in Python, JavaScript, Bash, PowerShell e altri cinque.

Codice pronto da copiare e incollare per codificare e decodificare nei linguaggi più cercati, con la trappola che fa perdere un pomeriggio a tutti segnalata per ognuno.

Codifica Base64 in Python

Python include Base64 nella libreria standard. L’errore più comune: b64encode accetta bytes, non str, quindi il testo va prima codificato in UTF-8.

import base64

# Encode a string ─ note the .encode("utf-8"): b64encode takes bytes, not str
text = "Man is distinguished"
encoded = base64.b64encode(text.encode("utf-8")).decode("ascii")
print(encoded)                       # TWFuIGlzIGRpc3Rpbmd1aXNoZWQ=

# Decode it back
decoded = base64.b64decode(encoded).decode("utf-8")

# URL-safe, unpadded (RFC 4648 §5) ─ the JWT flavour
base64.urlsafe_b64encode(b"data").rstrip(b"=")

# Encode a file, wrapped at 76 characters for MIME
with open("photo.png", "rb") as f:
    mime = base64.encodebytes(f.read()).decode("ascii")

# Build a data URI for an image
uri = "data:image/png;base64," + base64.b64encode(open("photo.png", "rb").read()).decode()

Il meccanismo

Come funziona davvero la codifica Base64.

Base64 riscrive byte qualsiasi con 64 caratteri che ogni sistema comprende. Prende tre byte (24 bit) e li ritaglia in quattro gruppi da 6 bit. Ogni gruppo è un indice dell’alfabeto A–Z a–z 0–9 + /. Poiché 3 byte diventano sempre 4 caratteri, l’output è esattamente un terzo più grande.

Esempio passo per passo: Man → TWFu

Testo Man
ASCII 7797110
Bit 01001101 01100001 01101110
Gruppi da 6 bit 010011 010110 000101 101110
Indice 19 · 22 · 5 · 46
Base64 TWFu

Quando la lunghezza dell’input non è un multiplo di tre, l’ultimo gruppo viene completato con = in modo che l’output resti un multiplo di quattro. Un byte avanzato dà ==, due byte avanzati danno =.

Esempi di codifica Base64

Ecco come appaiono alcune stringhe comuni codificate in Base64 come UTF-8. Incollane una nello strumento qui sopra per verificarlo.

Stringhe di esempio e la loro codifica Base64
Input Base64 Nota
Hello, World! SGVsbG8sIFdvcmxkIQ== Due = perché 13 byte ne lasciano uno in più
Hello World SGVsbG8gV29ybGQ= 11 byte, quindi un solo =
hello aGVsbG8=
base64 YmFzZTY0 6 byte sono divisibili per 3: niente padding
user:password dXNlcjpwYXNzd29yZA== Valore di un’intestazione HTTP Basic auth
héllo 🎉 aMOpbGxvIPCfjok= UTF-8: la é occupa 2 byte, l’emoji 4
{"alg":"HS256","typ":"JWT"} eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 Intestazione di un JWT, URL-safe e senza padding

L’alfabeto Base64 (tabella degli indici)

Ogni valore da 6 bit, da 0 a 63, corrisponde a un carattere. L’alfabeto URL-safe è identico, tranne che 62 è - e 63 è _. Il = è padding e non fa parte dell’alfabeto.

Tabella degli indici Base64: valori da 0 a 63 e relativi caratteri
Valore Carattere Valore Carattere Valore Carattere Valore Carattere
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Le varianti di Base64 a confronto

«Base64» è una famiglia. Tutte le varianti condividono le stesse 62 lettere e cifre e differiscono per gli ultimi due caratteri, il padding e gli a capo. Lo strumento qui sopra produce le prime tre.

Confronto delle varianti di Base64: standard, URL-safe, MIME e PEM
VarianteSpecificaCaratteri 62 / 63PaddingA capoUso
Standard RFC 4648 §4 + / Obbligatorio Nessuno Uso generale, JSON, data URI
URL-safe (base64url) RFC 4648 §5 - _ Di solito omesso Nessuno JWT, URL, nomi di file
MIME RFC 2045 + / Obbligatorio CRLF ogni 76 Allegati email
PEM RFC 7468 + / Obbligatorio Ogni 64, con BEGIN/END Certificati TLS, chiavi

Dove si usa Base64

Allegati email

SMTP è stato pensato per testo a 7 bit. MIME (RFC 2045) codifica gli allegati in Base64 e va a capo ogni 76 caratteri, così i server di posta li inoltrano senza modificarli.

Data URI

data:image/png;base64,… incorpora una piccola immagine, un font o un SVG direttamente in HTML o CSS, risparmiando una richiesta. Conviene sotto qualche kilobyte; oltre, il 33% in più e la perdita della cache costano più della richiesta.

Dati JSON e XML

Nessuno dei due formati può contenere byte arbitrari. Base64 trasforma un file in una semplice stringa che passa in qualsiasi parser JSON: è così che i dati binari viaggiano nelle API REST.

JWT e URL

I JSON Web Token usano base64url, la variante RFC 4648 §5 con - e _ al posto di + e / e senza padding, così un token può stare tranquillamente in un URL, un cookie o un’intestazione.

HTTP Basic auth

Authorization: Basic è letteralmente base64(utente:password). È una codifica, non una cifratura, ed è proprio per questo che Basic auth è accettabile solo su HTTPS.

Configurazione e segreti

I Secret di Kubernetes, i certificati TLS in formato PEM e le chiavi SSH salvano i dati binari in Base64, così il file resta un testo leggibile, confrontabile e facile da copiare.

Sei errori che costano un pomeriggio

Base64 non è cifratura

Chiunque può decodificarlo con un solo comando. Non usarlo mai per nascondere una password, una chiave API o dati personali: per quello serve una vera cifratura.

Set di caratteri diversi rovinano il testo

Base64 codifica byte, e il testo diventa byte solo dopo aver scelto un set di caratteri. Codifica in UTF-8 e decodifica in Latin-1 e otterrai caratteri incomprensibili. Usa UTF-8 da entrambe le parti.

echo aggiunge un a capo

echo "hi" | base64 codifica tre byte, non due, perché echo aggiunge \n. Usa printf %s per codificare esattamente ciò che hai scritto.

Gli a capo cambiano la stringa

L’output MIME contiene un CRLF ogni 76 caratteri. La maggior parte dei decoder ignora gli spazi, ma un confronto rigoroso o l’hash di due stringhe «identiche» fallisce se una delle due va a capo.

+ e / si rompono negli URL

Il + diventa uno spazio quando una query string viene decodificata come form, e la / divide i percorsi. Usa la variante URL-safe ogni volta che il valore finisce in un URL o in un nome di file.

I dati crescono di un terzo

Ogni 3 byte diventano 4 caratteri. Mettere un grosso upload in Base64 dentro un JSON aumenta banda e memoria da entrambe le parti: invia invece multipart/form-data.

Domande

Codifica Base64: domande e risposte.

Che cos’è la codifica Base64?

Base64 è uno schema di codifica da binario a testo che rappresenta i dati binari con 64 caratteri ASCII stampabili (A–Z, a–z, 0–9, + e /). Esiste perché i dati binari possano viaggiare in sicurezza su canali pensati per il testo: corpi delle email, documenti JSON e XML, intestazioni HTTP, URL e attributi HTML. Base64 è una codifica, non una cifratura: chiunque può decodificarlo, quindi non offre riservatezza.

Come si codifica un testo in Base64 online?

Incolla o scrivi il testo nel riquadro di input di questa pagina. Il risultato appare subito nel riquadro di output: nessun pulsante da premere e nessun ricaricamento, perché la codifica avviene nel browser mentre scrivi. Premi Copia, oppure Ctrl+Shift+C, per copiare la stringa Base64 negli appunti.

Come si codifica una stringa in Base64?

La stringa viene prima trasformata in byte con un set di caratteri (quasi sempre UTF-8) e poi quei byte vengono codificati in Base64. In questa pagina succede in automatico: scrivi la stringa e copia il risultato. Per esempio, "Hello, World!" in Base64 diventa SGVsbG8sIFdvcmxkIQ==. Nel codice basta una riga in qualsiasi linguaggio diffuso; guarda gli esempi per Python, JavaScript, Bash, PowerShell, PHP, Java, Go, C# e Ruby.

Questo encoder Base64 è sicuro e privato?

Sì. Ogni byte viene codificato localmente da JavaScript nella tua scheda del browser. Testi, file e immagini non vengono mai inviati a un server, mai salvati in un database e mai registrati: il sito è una pagina completamente statica, senza alcun endpoint di upload. Puoi verificarlo aprendo la scheda Rete dei DevTools durante la codifica, oppure scollegandoti da internet e vedendo che lo strumento funziona ancora.

Come si codifica in Base64 con Python?

Usa il modulo integrato base64. Codifica con base64.b64encode(data.encode("utf-8")).decode("ascii") e decodifica con base64.b64decode(encoded).decode("utf-8"). Nota che b64encode accetta bytes, non str: per questo l’input viene prima codificato in UTF-8. Per un output URL-safe usa base64.urlsafe_b64encode, e per un output MIME con righe da 76 caratteri base64.encodebytes.

Come si codifica in Base64 con PowerShell o su Windows?

In PowerShell esegui [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("hello")) per codificare una stringa, oppure [Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\percorso\file.png")) per codificare un file. Da cmd.exe, certutil -encode in.png out.b64 funziona su qualsiasi installazione di Windows, ma aggiunge righe di intestazione BEGIN ed END. Usa [Text.Encoding]::Unicode (UTF-16 LE) solo con powershell -EncodedCommand.

Come si codifica in Base64 con JavaScript?

Per il testo ASCII, btoa(str) codifica e atob(str) decodifica. btoa genera un errore con i caratteri oltre U+00FF, quindi per il testo Unicode converti prima in byte: btoa(Array.from(new TextEncoder().encode(str), (b) => String.fromCharCode(b)).join("")). Evita la forma con spread String.fromCharCode(...bytes), che fa traboccare lo stack con input grandi. In Node.js usa Buffer.from(str, "utf8").toString("base64"). I runtime moderni offrono anche Uint8Array.prototype.toBase64().

Come si codifica un file in Base64 su Linux?

Usa il comando base64 di coreutils: base64 file.txt lo codifica e base64 -d file.b64 lo decodifica. Aggiungi -w 0 per disattivare gli a capo quando ti serve un’unica riga, oppure -w 76 per un output conforme a MIME. Per codificare direttamente una stringa, passala con una pipe: printf %s "hello" | base64. Usa printf invece di echo, così non includi un a capo finale nei byte codificati.

Come si codifica in Base64 su Mac?

macOS include il comando base64 BSD nel Terminale. Codifica un file con base64 -i file.png -o file.b64, una stringa con printf %s "hello" | base64, e decodifica con base64 -D -i file.b64 -o file.png. A differenza del base64 GNU di Linux, non va a capo per default e non ha l’opzione -w. Reindirizza su pbcopy per copiare il risultato direttamente negli appunti.

Come si codifica un’immagine in Base64?

Apri la scheda File e immagine di questa pagina e trascina la tua immagine. Ottieni il Base64 grezzo, un data URI pronto da incollare (data:image/png;base64,...) e snippet HTML, CSS e Markdown già generati. Base64 rende un’immagine circa il 33% più grande, quindi conviene incorporare solo immagini piccole (sotto i 5 KB circa) e servire quelle più grandi come normali file che il browser può mettere in cache.

Che cos’è il Base64 URL-safe?

Il Base64 standard usa + e /, che hanno un significato riservato negli URL e nei nomi di file. Il Base64 URL-safe (RFC 4648 §5, detto anche base64url) sostituisce + con - e / con _, e di solito elimina il padding =. È il formato usato dai JSON Web Token. Attiva l’opzione URL-safe di questa pagina per generarlo.

Perché la mia stringa Base64 finisce con dei segni =?

Base64 elabora l’input a gruppi di 3 byte che diventano 4 caratteri. Quando la lunghezza dell’input non è un multiplo di 3, l’ultimo gruppo viene completato con = perché l’output resti un multiplo di 4. Un byte avanzato produce due =, due byte avanzati ne producono uno. Il padding non contiene dati ed è facoltativo in alcune varianti, come base64url.

Di quanto aumenta Base64 la dimensione dei dati?

Di circa il 33%: ogni 3 byte di input diventano 4 caratteri di output, un rapporto di 4/3. La lunghezza esatta con padding è di 4 × ⌈n / 3⌉ caratteri per n byte di input, quindi 10 byte diventano 16 caratteri e 1 MB diventa circa 1,33 MB. In modalità MIME gli a capo aggiungono un ulteriore 2,6% circa (un CRLF di due byte ogni 76 caratteri). Questo strumento mostra la dimensione esatta di input e output e la percentuale di aumento sotto il risultato mentre scrivi.

C’è un limite di dimensione per i file?

Non c’è alcun limite lato server, perché non c’è nessun server. Il limite pratico è la memoria del dispositivo e della scheda del browser; su un computer di solito funzionano file fino a qualche centinaio di megabyte, e questo strumento elabora i file grandi a blocchi così il browser resta reattivo. Gli strumenti concorrenti che caricano i file su un server di solito ti limitano a 100 MB.

La codifica Base64 funziona con Unicode ed emoji?

Sì. Il testo viene prima convertito in byte con il set di caratteri scelto (UTF-8 per default, che copre ogni punto di codice Unicode, emoji comprese) e poi quei byte vengono codificati in Base64. Set di caratteri diversi tra encoder e decoder sono la causa più comune di testo illeggibile, quindi tieni entrambi su UTF-8, a meno che tu non abbia un motivo preciso.