Base64
Skriv eller klistra in text, så kodas eller avkodas den direkt.
0 tecken · 0 byte
Resultat
Så fungerar det
Base64 skriver om godtyckliga byte till 64 tecken som överlever transport i system byggda för text, till exempel e-post och webbadresser.
Tre byte blir fyra tecken, vilket gör resultatet ungefär en tredjedel längre än originalet. Likhetstecknen på slutet är utfyllnad när antalet byte inte är jämnt delbart med tre.
Base64 är kodning, inte kryptering. Vem som helst kan avkoda resultatet, så det skyddar ingenting. Använd det för att transportera data, aldrig för att dölja den.
Texten kodas som UTF-8 innan den räknas om, vilket är anledningen till att å, ä, ö och emoji fungerar. Webbläsarens inbyggda funktion klarar bara tecken under 256 på egen hand.
Den URL-säkra varianten byter ut plus mot bindestreck och snedstreck mot understreck. Avkodningen här tar emot båda varianterna, med eller utan utfyllnad.
Så räknar verktyget
Vid kodning gör verktyget först om texten till byte i UTF-8 och låter sedan webbläsarens funktion btoa skriva dem som base64. Vid avkodning tas alla blanktecken bort, även radbrytningar inne i texten, bindestreck och understreck byts tillbaka mot plus och snedstreck, och likhetstecken läggs till tills längden är delbar med fyra. Därefter avkodar webbläsarens atob, och byten tolkas som UTF-8 i strikt läge: byte som inte bildar giltig UTF-8 ger ett felmeddelande i stället för ersättningstecken. Under fältet visas både tecken och byte. Tecknen räknas som läsaren ser dem, så en emoji med hudton är ett tecken men åtta byte i UTF-8, och det är byten som avgör hur långt resultatet blir.
Exempel
Hå blir tre byte i UTF-8: 48 för H och C3 A5 för å. De 24 bitarna delas i fyra grupper om sex: 010010, 001100, 001110 och 100101, alltså talen 18, 12, 14 och 37. I base64-alfabetet, där A–Z är 0–25 och a–z är 26–51, motsvarar de S, M, O och l. Resultatet blir SMOl, utan utfyllnad eftersom tre byte går jämnt upp i fyra tecken.
Hej! är fyra byte och blir SGVqIQ==. Den fjärde byten räcker bara till två tecken i en ny grupp om fyra, och de två likhetstecknen fyller ut gruppen.
Gränsfall
Verktyget arbetar med text. Base64 som innehåller binära data, t.ex. en bild eller en komprimerad fil, ger som regel felmeddelandet vid avkodning, eftersom byten inte är giltig UTF-8.
Base64 i e-post är radbruten: RFC 2045 tillåter högst 76 tecken per rad och säger att radbrytningar ska hoppas över vid avkodning. Eftersom verktyget tar bort alla blanktecken först går en kodad textdel ur ett mejl att klistra in som den är.
En sträng vars längd ger resten 1 vid delning med fyra kan aldrig vara giltig. Ett ensamt sista tecken bär bara sex bitar och räcker inte till en hel byte, och algoritmen i WHATWG:s Infra-standard, som atob följer, avvisar därför sådan indata. SGVqI, alltså SGVqIQ== med de tre sista tecknen bortklippta, ger felmeddelandet, medan SGVqIQ utan likhetstecken avkodas till Hej!.