Koda text och filer till Base64

Gör om text, råa byte eller valfri fil till Base64. Välj den teckenuppsättning mottagaren förväntar sig, behåll eller ta bort utfyllnaden med =, och bryt raderna efter 76 eller 64 tecken för MIME och PEM.

Körs helt i din webbläsare. Inget laddas upp.

Så använder du verktyget

  1. Skriv eller klistra in texten som ska kodas, välj Hex under Indata som för att koda råa byte, eller klicka på Öppna fil för att koda en fil.
  2. Låt Teckenkodning stå kvar på UTF-8 om inte det mottagande systemet förväntar sig en annan teckenuppsättning.
  3. Ställ in alternativen: behåll varianten Standard i de flesta fall, stäng av utfyllnad om mottagaren inte vill ha den, och bryt raderna efter 76 (MIME) eller 64 (PEM) tecken vid behov.
  4. Kopiera Base64-utdatan eller ladda ned den som en fil.

Så fungerar Base64-kodning

Kodaren läser indatan tre byte åt gången. Dessa 24 bitar delas upp i fyra grupper om 6 bitar, och varje 6-bitarsvärde (0 till 63) väljer ett tecken: A-Z för 0 till 25, a-z för 26 till 51, 0-9 för 52 till 61 och därefter + och /. Tre byte in ger fyra tecken ut, och det är därför Base64 blir ungefär 33 % större än originaldatan.

Text     M        a        n
Byte     77       97       110
Bitar    01001101 01100001 01101110
6 bitar  010011 010110 000101 101110
Index    19     22     5      46
Base64   T      W      F      u

Utfyllnad och utdatans längd

När indatans längd inte är en multipel av tre blir den sista gruppen ofullständig. En överbliven byte blir två tecken följda av ==; två överblivna byte blir tre tecken och ett =. Utfylld utdata är därför alltid 4 × ceil(n / 3) tecken lång för n byte indata.

Utfyllnaden innehåller ingen data. JSON Web Tokens, URL-parametrar och många API:er utelämnar den, så stäng av utfyllnad när mottagaren förväntar sig utdata utan utfyllnad. För länkar och filnamn väljer du den URL-säkra varianten eller använder sidan Base64URL; båda ersätter + och / med - och _.

Radbrytning för MIME och PEM

Som standard blir utdatan en enda lång rad, vilket är vad JSON, data URI:er och HTTP-headers behöver. Två format kräver radbrytningar:

  • MIME, 76 tecken. E-postbilagor som skickas med Content-Transfer-Encoding: base64 får inte ha rader som är längre än 76 tecken (RFC 2045). Det här alternativet avslutar raderna med CRLF, som MIME kräver.
  • PEM, 64 tecken. Certifikat och nycklar mellan raderna -----BEGIN och -----END använder rader på 64 tecken (RFC 7468). Det här alternativet använder LF som radslut.

Teckenuppsättningar och filer

Base64 kodar byte, inte bokstäver, så text omvandlas först till byte med hjälp av en teckenuppsättning. Bokstaven å är två byte i UTF-8 men en enda byte i ISO-8859-1 eller Windows-1252, så samma text ger olika Base64. UTF-8 är rätt val för webben, JSON och nästan alla moderna API:er; välj GBK, Shift_JIS, Windows-1251 eller en annan teckenuppsättning bara när du måste matcha ett äldre system.

Filer kodas exakt som de är lagrade, utan någon teckenkonvertering. För bilder med färdiga kodsnuttar för HTML och CSS, se Bild till Base64; för en data URI med identifierad MIME-typ, använd Fil till Base64.

Specifikation

AlfabetA-Z a-z 0-9 + /
Utdatastorlek4 tecken per 3 byte (cirka 133 %)
Utfyllnad= fyller ut till en multipel av 4 tecken
StandardRFC 4648 avsnitt 4
SkiftlägeskänsligJa

Exempel

Indata (UTF-8)Utdata
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

Vanliga frågor

Varför skiljer sig min Base64-utdata från en annan kodares?
Nästan alltid för att indatans byte skiljer sig åt. Vanliga orsaker är en avslutande radbrytning (skalkommandot echo lägger till en; använd printf '%s' eller echo -n), en annan teckenuppsättning, Windows-radslut i texten eller andra inställningar för utfyllnad, alfabet eller radbrytning. Samma byte med samma inställningar ger alltid samma utdata.
Hur kodar jag Unicode-text till Base64 i JavaScript?
btoa() accepterar bara tecken upp till U+00FF och kastar ett fel för allt annat. Konvertera först strängen till UTF-8-byte, till exempel btoa(String.fromCharCode(...new TextEncoder().encode(str))). I Node.js använder du Buffer.from(str, 'utf8').toString('base64').
Hur kodar jag Base64 på kommandoraden?
Kör printf '%s' 'your text' | base64 i Linux eller macOS. GNU base64 bryter som standard utdatan efter 76 tecken (lägg till -w 0 för en enda rad), och openssl base64 bryter efter 64 tecken (lägg till -A).
Är Base64-kodning en form av kryptering?
Nej. Base64 har ingen nyckel och vem som helst kan vända på kodningen med en Base64-avkodare. Den finns till för att flytta binärdata genom kanaler som bara accepterar text, inte för att dölja information.
Hur mycket större blir min data med Base64?

Varje grupp om 3 byte blir 4 tecken, avrundat uppåt till en hel grupp, så utdatan blir ungefär 33 % större. Radbrytning för MIME lägger till ytterligare två byte (CRLF) per 76 tecken.