Zo gebruik je het
- Plak de string die je wilt controleren in het invoerveld.
- Lees het oordeel: geldig of ongeldig, de herkende variant (standaard of URL-veilig) en de gedecodeerde grootte.
- Staan er punten onder Problemen, gebruik dan de gemelde posities om ongeldige tekens, witruimte of misplaatste opvulling te vinden.
- Bekijk bij Inhoud het herkende type om te zien of de gegevens tekst zijn of een bestand zoals PNG, PDF of ZIP.
Waaraan geldige Base64 voldoet
- Alfabet. Alleen
A-Z,a-z,0-9en nog twee tekens zijn toegestaan:+en/in standaard-Base64,-en_in Base64URL. Een string waarin beide paren door elkaar staan, is meestal beschadigd of uit twee bronnen samengesteld. - Opvulling. Het teken
=mag alleen aan het eind staan, en hoogstens twee keer. Opvulling in het midden betekent meestal dat twee gecodeerde waarden aan elkaar zijn geplakt. - Lengte. Met opvulling is de lengte een veelvoud van 4. Zonder opvulling is elke lengte goed behalve 4n + 1: één overgebleven teken bevat maar 6 bits, niet genoeg voor een byte.
Strikte decoders hanteren nog één regel: de ongebruikte lage bits van het laatste teken moeten nul zijn. Veel decoders negeren die bits, maar sommige, zoals base64.StdEncoding.Strict() in Go, weigeren de string dan.
Veelvoorkomende fouten en hoe je ze oplost
| Probleem | Typische oorzaak | Oplossing |
|---|---|---|
| Ongeldig teken | Aanhalingstekens, backslashes of escapes als %2B en %3D die met de waarde zijn meegekopieerd | Verwijder de extra tekens of URL-decodeer eerst |
| Spaties in het midden | + is omgezet in spaties toen de waarde via een URL of formulier werd doorgegeven | Zet de + terug, of gebruik Base64URL voor URL's |
| Lengte van 4n + 1 | Waarde afgekapt door een kolomlimiet, een logregel of een onvolledige kopie | Kopieer de volledige waarde opnieuw |
| Opvulling in het midden | Twee Base64-strings aan elkaar geplakt | Splits ze en decodeer elk deel afzonderlijk |
| Regeleinden | MIME- of PEM-regelafbreking | Meestal onschuldig; verwijder ze waar één regel vereist is |
Geldig betekent niet zinvol
Base64 heeft geen header en geen controlesom, dus geldigheid zegt alleen dat een string kan worden gedecodeerd. Veel gewone woorden komen erdoor: elke vier letters vormen een geldige groep. Daarom decodeert de validator de gegevens ook en meldt hij de grootte en het inhoudstype. Leesbare tekst of een bekende bestandssignatuur zoals PNG, PDF of ZIP is een sterke aanwijzing dat de string echt Base64 is; een handvol willekeurige bytes is dat niet. Wil je ook andere coderingen testen, probeer dan de coderingsdetector.
Base64 valideren in code
// JavaScript: standaard-Base64 met opvulling (komt ook overeen met een lege string)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/
# Python: geef een fout in plaats van ongeldige tekens over te slaan
import base64, binascii
try:
base64.b64decode(s, validate=True)
except binascii.Error:
print('invalid')
Veelgestelde vragen
Waarom wordt een gewoon woord als geldige Base64 gemeld?
test decodeert bijvoorbeeld naar drie bytes. Kijk naar het herkende type bij Inhoud: is het resultaat leesbare tekst noch een bekend bestandstype, dan was de invoer waarschijnlijk nooit Base64.Is Base64 met spaties of regeleinden geldig?
MIME en PEM breken Base64 af in regels, en de meeste decoders slaan witruimte over. JSON-velden, HTTP-headers, JWT's en data-URI's verwachten echter één ononderbroken string. De validator vermeldt witruimte apart, zodat je zelf kunt beoordelen of die van belang is op de plek waar de string wordt gebruikt.
Is Base64 zonder opvulling (=) geldig?
=-tekens toe tot de lengte een veelvoud van 4 is als een systeem de string weigert. Strings zonder opvulling met een lengte van 4n + 1 tekens zijn nooit geldig.Hoe controleer ik in JavaScript of een string Base64 is?
atob() aanroepen binnen try/catch. Let op: atob() gooit een InvalidCharacterError bij ongeldige invoer, maar accepteert zonder melding witruimte en ontbrekende opvulling, en accepteert de URL-veilige tekens niet.