Validatore Base64

Incolla una stringa per scoprire se è Base64 valido. Il validatore indica la variante, segnala i caratteri non validi e i problemi di padding e ti dice che cosa si ottiene decodificando i dati.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Incolla nel campo di input la stringa che vuoi controllare.
  2. Leggi l’esito: valido o non valido, la variante rilevata (standard o sicura per URL) e la dimensione decodificata.
  3. Se vengono elencati dei problemi, usa le posizioni indicate per trovare caratteri non validi, spazi bianchi o padding fuori posto.
  4. Guarda il tipo di contenuto rilevato per capire se i dati sono testo o un file come PNG, PDF o ZIP.

Quando un Base64 è valido

  • Alfabeto. Sono ammessi solo A-Z, a-z, 0-9 e altri due caratteri: + e / nel Base64 standard, - e _ in Base64URL. Una stringa che mescola le due coppie di solito è stata danneggiata o ricomposta a partire da due fonti diverse.
  • Padding. Il segno = può comparire solo alla fine, al massimo due volte. Un padding nel mezzo indica di solito che sono stati concatenati due valori codificati.
  • Lunghezza. Con il padding, la lunghezza è un multiplo di 4. Senza padding va bene qualsiasi lunghezza tranne 4n + 1: un singolo carattere avanzato contiene solo 6 bit, non abbastanza per un byte.

I decodificatori rigorosi aggiungono un’altra regola: i bit meno significativi inutilizzati dell’ultimo carattere devono essere zero. Molti decodificatori ignorano quei bit, ma alcuni, come base64.StdEncoding.Strict() di Go, rifiutano la stringa.

Errori comuni e come correggerli

ProblemaCausa tipicaSoluzione
Carattere non validoVirgolette, barre rovesciate o sequenze %2B e %3D copiate insieme al valoreRimuovi i caratteri in più o decodifica prima come URL
Spazi nel mezzoSegni + trasformati in spazi quando il valore è passato attraverso un URL o un formRipristina i +, oppure usa Base64URL negli URL
Lunghezza di 4n + 1Valore troncato da un limite di colonna, da una riga di log o da una copia parzialeCopia di nuovo il valore completo
Padding nel mezzoDue stringhe Base64 unite insiemeSepara le parti e decodificale una alla volta
Interruzioni di rigaA capo MIME o PEMDi solito innocue; rimuovile dove è richiesta una sola riga

Valido non significa sensato

Base64 non ha header né checksum, quindi la validità dice solo che una stringa può essere decodificata. Molte parole comuni superano il controllo: quattro lettere qualsiasi formano un gruppo valido. Per questo il validatore decodifica anche i dati e ne riporta dimensione e tipo di contenuto. Un testo leggibile o una firma di file nota, come PNG, PDF o ZIP, è un buon indizio che la stringa sia davvero Base64; una manciata di byte casuali no. Per provare anche altre codifiche, usa il rilevatore di codifica.

Validare Base64 nel codice

// JavaScript: Base64 standard con padding (corrisponde anche a una stringa vuota)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/

# Python: genera un errore invece di ignorare i caratteri non validi
import base64, binascii
try:
    base64.b64decode(s, validate=True)
except binascii.Error:
    print('invalid')

Domande frequenti

Perché una parola comune risulta Base64 valido?
Perché lo è. Qualsiasi sequenza di caratteri dell’alfabeto di lunghezza adatta si decodifica in qualche byte; la parola test, per esempio, si decodifica in tre byte. Controlla il tipo di contenuto rilevato: se il risultato non è né testo leggibile né un tipo di file noto, probabilmente l’input non è mai stato Base64.
Un Base64 con spazi o interruzioni di riga è valido?

MIME e PEM suddividono il Base64 in righe e la maggior parte dei decodificatori ignora gli spazi bianchi. Campi JSON, header HTTP, JWT e data URI si aspettano invece una stringa unica e continua. Il validatore elenca gli spazi bianchi a parte, così puoi decidere se contano nel punto in cui userai la stringa.

Un Base64 senza padding = è valido?
Spesso sì. Base64URL di norma omette il padding e la RFC 4648 consente di eliminarlo quando la lunghezza è nota dal contesto. Alcuni decodificatori rigorosi lo richiedono comunque: se un sistema rifiuta la stringa, aggiungi segni = finché la lunghezza non è un multiplo di 4. Le stringhe senza padding di 4n + 1 caratteri non sono mai valide.
Come posso verificare in JavaScript se una stringa è Base64?
Per il Base64 rigoroso con padding, confrontala con un’espressione regolare che ammette gruppi di quattro caratteri dell’alfabeto seguiti da un padding facoltativo. Un controllo più rapido consiste nel chiamare atob() all’interno di try/catch. Tieni presente che atob() genera un InvalidCharacterError con un input errato, ma accetta senza segnalarli spazi bianchi e padding mancante, e non accetta i caratteri sicuri per URL.