Aiuto tecnico

Perché Base64 rende i file più grandi?

Base64 di solito rende i dati binari più grandi di circa un terzo. Vedi la struttura da 3 byte a 4 caratteri, il padding, il costo extra della Data URL e quando la dimensione in più conviene.

Risposta rapida

Base64 di solito rende i dati binari più grandi di circa un terzo perché rappresenta ogni 3 byte di dati binari con 4 caratteri Base64 stampabili.

Se la lunghezza in ingresso non è un multiplo esatto di 3, il Base64 con padding standard può aggiungere caratteri =. La lunghezza codificata è 4 × ceil(n / 3), dove n è la lunghezza originale in byte.

«Circa 33%» descrive ingressi grandi. Su ingressi minuscoli la percentuale può sembrare molto più alta a causa del padding. Base64 non è compressione. Per codifica versus crittografia, vedi [Base64 non è crittografia: cosa fa davvero e come decodificarlo](/it/story/base64-is-not-encryption).

Questo articolo spiega perché l’output Base64 è più grande dei byte originali. Non è una guida di sicurezza. Se ti serve codifica versus crittografia, usa Base64 non è crittografia: cosa fa davvero e come decodificarlo.

Perché Base64 ha bisogno di più spazio?

3 byte sono 24 bit. Base64 divide quei 24 bit in 4 gruppi da 6 bit. Ogni gruppo corrisponde a un carattere Base64, quindi 3 byte in ingresso diventano 4 caratteri in uscita. Salvato come 1 byte per carattere ASCII, è 4 / 3 ≈ 1.333 — un aumento di circa 33.3%.

  • 3 byte (24 bit)
  • Dividere in 4 gruppi da 6 bit
  • Ogni gruppo → un carattere Base64
  • 4 caratteri (spesso 4 byte di testo)
Il passo da 3 byte → 4 caratteri è il costo di dimensione. Il padding può aggiungere un po’ di più su ingressi corti.

Un esempio semplice e verificabile

Queste codifiche coincidono con il Base64 con padding standard.

Man

Man

Base64

TWFu

Man sono 3 byte UTF-8/ASCII. TWFu sono 4 caratteri: 3 → 4.

Hello

Hello

Base64

SGVsbG8=

Hello sono 5 byte. SGVsbG8= sono 8 caratteri, incluso un =. Su dati piccoli, il padding fa sembrare la percentuale più grande del 33%.

Come si calcola la dimensione Base64?

Per il Base64 con padding standard, encodedLength = 4 × ceil(originalBytes / 3).

Byte originali Caratteri Base64
14
24
34
48
58
68

1 o 2 byte producono comunque 4 caratteri. Usa la formula, non un 33% fisso.

Cosa significa il padding «=»?

Il segno = indica che l’ultimo blocco da 3 byte non era pieno. 1 byte in ingresso usa due caratteri =; 2 byte ne usano uno; 3 byte non ne usano nessuno. Il padding non è crittografia né una funzione di sicurezza.

Base64URL usa meno spazio?

Base64URL cambia + in - e / in _, e Codifica e decodifica Base64 omette gli = finali in codifica. Questo può accorciare la stringa di quei caratteri =. La struttura 3 byte → 4 caratteri resta, quindi Base64URL non è un formato binario più efficiente nello spazio.

Perché gli ingressi minuscoli possono crescere più del 33%?

1 byte → 4 caratteri è un aumento del 300% in lunghezza. 2 byte → 4 è 100%. 3 byte → 4 è circa 33.3%. Man mano che n cresce, il padding conta meno e il costo extra si avvicina a circa 33%. Base64 non è più grande del 33% in tutti i casi.

Perché una Data URL Base64 è ancora più grande?

Una Data URL aggiunge un prefisso come data:image/png;base64, prima del payload. Su un file minuscolo quel prefisso può dominare la percentuale. Codifica e decodifica Base64 può emettere Base64 grezzo o una Data URL; l’output Data URL usa l’alfabeto standard.

Base64 vs binario: qual è più piccolo?

Il binario grezzo è più efficiente nello spazio per trasporto e archiviazione. Base64 è più grande, ma sicuro come testo in JSON, e-mail e altri percorsi solo testo. È codifica da binario a testo, non compressione.

Base64 comprime i file?

No. Base64 non è un formato di compressione. Il testo codificato di solito è più grande dei byte originali. Se poi applichi gzip o Brotli a quel testo, parte della ridondanza può ridursi — il risultato dipende dai dati e dal compressore. gzip non elimina del tutto il costo extra di Base64.

Cosa succede se al Base64 si applica gzip?

La compressione HTTP può ridurre alcuni pattern ripetuti nel testo Base64. JPEG, PNG o ZIP spesso si comprimono male anche come byte grezzi, e Base64-poi-gzip resta dipendente dal caso. Non c’è una percentuale extra universale dopo gzip.

Dovresti salvare i file come Base64?

Base64 può far stare il binario in un campo JSON, un piccolo asset in linea, un’API solo testo, copia/incolla o una Data URL. Per file grandi, archiviazione, memoria e dimensione del payload crescono tutti. Non significa «non usare mai Base64 per i file».

Perché Base64 è comune nelle API JSON?

JSON non ha un tipo nativo di binario grezzo, quindi le API spesso mettono i byte in una stringa Base64. Per file grandi, multipart/form-data, object storage o un upload binario diretto possono stare meglio. Nessuna scelta è sempre la migliore.

Perché Base64 è usato nella posta?

MIME può usare Base64 perché un allegato binario viaggi come caratteri sicuri per il testo. Lo stesso costo extra di dimensione vale ancora. È una rappresentazione di trasporto, non un file più piccolo.

Quando la dimensione extra conviene?

La dimensione extra può convenire quando il binario deve stare dentro il testo, il payload è piccolo, un’API richiede Base64 o ti serve una Data URL. Per media grandi, preferisci il binario grezzo quando il sistema lo consente.

Quando dovresti evitare Base64?

Saltalo per file grandi, banda stretta, trasferimenti frequenti o quando esiste già un percorso binario — situazionale, non «Base64 è una cattiva pratica».

Lunghezze Base64 con padding che puoi controllare

Conteggi di byte originali e conteggi di caratteri Base64 con padding standard:

Byte originali Caratteri Base64
14
24
34
1016
100136
1,0001,336

Tutte le righe seguono 4 × ceil(n / 3). Sono conteggi di caratteri Base64.

Esempio: quanto diventa grande un file di 1,000 byte?

4 × ceil(1000 / 3). ceil(333.333…) = 334, e 4 × 334 = 1336. Quindi 1,000 byte diventano 1,336 caratteri Base64. Salvati come UTF-8/ASCII, ogni carattere è in genere 1 byte — non trattare 1,336 come un conteggio esatto di byte in memoria.

Base64 può usare più memoria di quanto suggerisca la dimensione del file?

Alcuni runtime memorizzano le stringhe con più di 1 byte per carattere, e codificare/decodificare può tenere insieme un buffer e una stringa. L’uso di memoria non è esattamente la lunghezza in caratteri.

Una guida semplice di decisione sulla dimensione

Se il sistema accetta binario grezzo, preferiscilo per la dimensione. Se è consentito solo testo, Base64 può stare. Per un payload grande, cerca un percorso di upload binario. Per testo sicuro per URL, considera Base64URL — l’espansione da 3 a 4 rimane.

  • Bisogno di inviare dati binari
  • Binario grezzo consentito? Preferisci il binario per la dimensione
  • Campo solo testo? Base64 può essere adatto
  • Payload grande? Cerca un percorso di upload binario
  • Serve testo sicuro per URL? Considera Base64URL
  • Aspettati circa il 33% di testo in più su ingressi grandi
Base64 compra compatibilità col testo. Non compra un file più piccolo.
Base64 scambia spazio per compatibilità col testo

Base64 non è pensato per rendere i dati più piccoli. Rende più facile rappresentare il binario dentro sistemi basati su testo, e il costo è dimensione extra.

Codifica o decodifica Base64 nel browser

NEXNARA Codifica e decodifica Base64 codifica e decodifica testo, e può trasformare un file in Base64 o una Data URL e riportare Base64 in un file.

Il testo usa byte UTF-8, poi Base64 — non solo ASCII. Scegli Standard o Base64URL. L’output file può essere Base64 grezzo o una Data URL (alfabeto standard). L’ingresso non valido viene rifiutato. I byte non UTF-8 devono andare a file, non a una decodifica testo.

I file oltre 10 MB possono rallentare la scheda (avviso). I file oltre 32 MB sono bloccati.

Codifica e decodifica avvengono nel tuo browser. Il file non viene inviato a un server NEXNARA per questo strumento. Gli annunci e altre funzioni del sito usano ancora la rete.

Incolla testo o un file in Codifica e decodifica Base64 e confronta i byte originali con la lunghezza codificata.

FAQ

Perché Base64 aumenta la dimensione del file?

Mappa 3 byte (24 bit) su 4 caratteri (4 × 6 bit). Salvato come testo, è circa un terzo in più per ingressi grandi.

Base64 è sempre più grande del 33%?

No. Gli ingressi grandi si avvicinano a circa 33.3%. Gli ingressi minuscoli possono crescere di più per il padding. Usa 4 × ceil(n / 3).

Quanto è più grande Base64 rispetto al binario?

La lunghezza con padding standard è 4 × ceil(n / 3) caratteri. Un prefisso Data URL ne aggiunge altri.

La compressione Base64 riduce la dimensione del file?

Base64 non comprime. gzip o Brotli sul testo codificato possono ridurne una parte; non cancellano il costo extra in ogni caso.

Base64URL usa meno spazio?

Può omettere il padding =, quindi la stringa può essere più corta di 0–2 caratteri. La struttura di codifica da 3 a 4 è la stessa.

Dovrei usare Base64 per file grandi?

Solo se ti serve testo. Per trasferimenti grandi o frequenti, un percorso binario è spesso più piccolo. Base64 non è sempre sbagliato per le API.