Base64 coderen en decoderen
Zet tekst of een bestand om naar Base64, of decodeer Base64 terug naar leesbare tekst. Unicode wordt correct verwerkt, het URL-veilige alfabet kiest u met één klik en bij het decoderen wordt elk van beide alfabetten geaccepteerd, met of zonder opvulling.
0 tekens · 0 woorden · 0 regels
0 tekens · 0 woorden · 0 regels
Werkt volledig in dit browsertabblad. Uw tekst wordt nooit geüpload of opgeslagen.
Het Base64-alfabet
Index → teken volgens RFC 4648. De twee gemarkeerde laatste verschillen in de URL-veilige variant: 62 is + of -, 63 is / of _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
Hoe lang de uitvoer wordt
Elke 3 invoerbytes worden 4 tekens; een laatste groep van 1 of 2 bytes wordt in standaard Base64 aangevuld met = en in de URL-veilige vorm niet aangevuld.
| Invoer | Bytes | Standaard | URL-veilig | Lengte |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
Wat Base64 doet
Base64, vastgelegd in RFC 4648, schrijft willekeurige bytes weg met 64 afdrukbare ASCII-tekens: A–Z, a–z, 0–9, + en /. Elke groep van drie bytes (24 bits) wordt opgesplitst in vier getallen van 6 bits, en elk getal kiest één teken uit het alfabet. Is de lengte van de invoer geen veelvoud van drie, dan wordt de laatste groep aangevuld met een of twee =-tekens. Het resultaat is altijd ongeveer 33% groter dan de invoer: 4 tekens voor elke 3 bytes.
Base64 bestaat omdat veel kanalen voor tekst zijn gebouwd. E-mail (MIME), data:-URL's in HTML en CSS, JSON-velden met afbeeldingen of certificaten en HTTP Basic-authenticatieheaders gebruiken allemaal Base64 om binaire data veilig te verplaatsen. Het is geen versleuteling en verbergt niets; voor het decoderen is geen sleutel nodig.
Unicode en de URL-veilige variant
Base64 codeert bytes, geen letters, dus tekst moet eerst naar bytes worden omgezet. Deze tool gebruikt altijd UTF-8, de codering waarop het web draait: é wordt twee bytes en een emoji vier. De ingebouwde btoa-functie van de browser geeft op zichzelf een foutmelding bij elk teken boven U+00FF, en daarom falen naïeve encoders bij accenten en emoji; hier gaat de tekst eerst door TextEncoder en bij het decoderen draait TextDecoder dat om. Zijn de gedecodeerde bytes geen geldige UTF-8 (een afbeelding, een zipbestand), dan toont de tool ze als hexadecimaal in plaats van als onleesbare tekst.
Standaard Base64 gebruikt + en /, die in URL's en bestandsnamen een betekenis hebben. Het URL-veilige alfabet uit sectie 5 van RFC 4648 vervangt ze door - en _, en de padding wordt meestal weggelaten. JSON Web Tokens gebruiken precies deze vorm. De decoder accepteert beide alfabetten en ontbrekende padding, dus u kunt beide plakken.
Bestanden en afbeeldingen coderen
Kies een bestand en de tool leest het lokaal in met FileReader en geeft de Base64 ervan terug, of een volledige data:-URL met het MIME-type van het bestand, klaar om te plakken in een img-tag of een CSS-achtergrond. Inline afbeeldingen besparen een HTTP-verzoek, maar worden een derde groter en kunnen niet apart worden gecachet, dus ze zijn geschikt voor kleine pictogrammen en niet voor foto's. Voor afbeeldingen met een voorbeeld en kant-en-klare HTML- en CSS-snippets gebruikt u Afbeelding naar Base64.
Veelgestelde vragen
- Waarom is de Base64-uitvoer langer dan mijn invoer?
- Elke 3 bytes worden 4 tekens, dus de uitvoer is ongeveer 4/3 zo groot als de invoer, plus maximaal twee opvultekens. Tekst met niet-ASCII-tekens wordt nog langer, omdat UTF-8 twee tot vier bytes per teken gebruikt.
- Wat betekenen de =-tekens aan het einde?
- Padding. Daarmee wordt de lengte van de uitvoer een veelvoud van vier als de lengte van de invoer geen veelvoud van drie is. Eén = betekent dat de laatste groep twee bytes had, twee =-tekens betekenen dat het er één was.
- Waarom mislukt het decoderen met een foutmelding over een ongeldig teken?
- De invoer bevat iets buiten het alfabet, zoals een spatie midden in een woord, een aanhalingsteken of een % uit URL-codering. Regeleinden en ontbrekende padding worden getolereerd; andere tekens niet.
- Is het veilig om een wachtwoord met Base64 te coderen?
- Base64 biedt geen enkele bescherming. HTTP Basic-authenticatie verstuurt user:password in Base64, en daarom mag het alleen via HTTPS worden gebruikt. Gebruik echte versleuteling of hashing om geheimen te beschermen.
- Wat is het verschil tussen Base64 en Base64url?
- Alleen twee tekens en de padding: Base64url gebruikt - en _ in plaats van + en / en laat = meestal weg, zodat het resultaat zonder escapen in URL's en bestandsnamen kan staan.