DevToolBoxFREE
BlogAdvertise

Base64 Encode & Decode: Vollständiger Leitfaden mit Code-Beispielen

12 Min. Lesezeitvon DevToolBox

Base64-Kodierung ist eines der grundlegendsten Datenkodierungsschemata in der Informatik. Taglich verwenden Millionen von Entwicklern Base64-Encode- und Base64-Decode-Operationen, um Bilder in HTML einzubetten, Binardaten uber textbasierte Protokolle zu ubertragen und Authentifizierungstoken zu verarbeiten. Dieser umfassende Leitfaden deckt alles ab, vom 6-Bit-Mapping-Algorithmus bis zu praktischen Codebeispielen in JavaScript, Python, Bash und PowerShell.

Testen Sie unser kostenloses Online Base64 Encode/Decode Tool.

Was ist Base64-Kodierung?

Base64 ist ein Binar-zu-Text-Kodierungsschema, das Binardaten mit 64 druckbaren ASCII-Zeichen darstellt. Das Alphabet umfasst: A-Z (26), a-z (26), 0-9 (10) sowie + und /. Das Zeichen = dient als Padding. Der Encoder verarbeitet Eingabedaten in 3-Byte-Gruppen (24 Bits) und wandelt sie in 4 Base64-Zeichen um.

Der Algorithmus teilt jede Drei-Byte-Eingabe in vier 6-Bit-Gruppen. Jeder 6-Bit-Wert (0-63) wird einem Zeichen im Base64-Alphabet zugeordnet. Bei nicht durch drei teilbarer Eingabelange werden =-Padding-Zeichen angehangt.

Base64-Kodierung erhoht die Datenmenge um etwa 33%. Dieser Overhead ist der Preis fur die sichere Ubertragung von Binardaten uber reine Textkanale.

Wie Base64-Kodierung/Dekodierung funktioniert

Schritt fur Schritt: Konvertierung des ASCII-Strings Man in Base64:

  1. In ASCII-Bytes konvertieren: M=77, a=97, n=110.
  2. Bits verketten: 24 Bits gesamt.
  3. In 6-Bit-Gruppen teilen: 4 Gruppen.
  4. In Dezimal umrechnen: 19, 22, 5, 46.
  5. Auf Base64-Zeichen abbilden: T, W, F, u.

Das Ergebnis ist TWFu. Zum Dekodieren wird der Prozess umgekehrt.

Padding-Beispiel: Ma (2 Bytes) ergibt TWE=. Ein einzelnes Byte M ergibt TQ==.

Haufige Base64-Anwendungsfalle

Base64-Kodierung ist in der modernen Softwareentwicklung allgegenwartig:

Data URIs (Base64-Bildkodierung): Betten Sie Bilder direkt in HTML/CSS ein mit data:image/png;base64,....

E-Mail-Anhange (MIME): Der MIME-Standard verwendet Base64 zur Kodierung binarer E-Mail-Anhange.

API-Authentifizierung (HTTP Basic Auth): HTTP Basic Auth kodiert Benutzer:Passwort in Base64.

JSON Web Tokens (JWT): JWTs bestehen aus drei Base64URL-kodierten Segmenten.

URL-sichere Datenubertragung: Base64 stellt sicher, dass Daten nur sichere ASCII-Zeichen enthalten.

Base64 Encode/Decode Codebeispiele

JavaScript Base64 Encode/Decode

Im Browser verwenden Sie btoa() zum Kodieren und atob() zum Dekodieren. In Node.js verwenden Sie Buffer:

// ===== Browser: btoa() and atob() =====

// Base64 encode a string
const encoded = btoa('Hello World');
console.log(encoded); // "SGVsbG8gV29ybGQ="

// Base64 decode a string
const decoded = atob('SGVsbG8gV29ybGQ=');
console.log(decoded); // "Hello World"

// Handle Unicode strings (btoa only supports Latin-1)
function base64EncodeUnicode(str) {
  return btoa(encodeURIComponent(str).replace(
    /%([0-9A-F]{2})/g,
    (_, p1) => String.fromCharCode(parseInt(p1, 16))
  ));
}

function base64DecodeUnicode(str) {
  return decodeURIComponent(
    Array.from(atob(str))
      .map(c => '%' + c.charCodeAt(0).toString(16).padStart(2, '0'))
      .join('')
  );
}

base64EncodeUnicode('Hello 🌍');  // "SGVsbG8g8J+MjQ=="
base64DecodeUnicode('SGVsbG8g8J+MjQ=='); // "Hello 🌍"

// ===== Node.js: Buffer =====

// Encode
const buf = Buffer.from('Hello World', 'utf-8');
const b64 = buf.toString('base64');
console.log(b64); // "SGVsbG8gV29ybGQ="

// Decode
const original = Buffer.from(b64, 'base64').toString('utf-8');
console.log(original); // "Hello World"

// URL-safe Base64 in Node.js
const urlSafe = buf.toString('base64url');
console.log(urlSafe); // "SGVsbG8gV29ybGQ"

Python Base64 Encode/Decode

In Python verwenden Sie das eingebaute base64-Modul:

import base64

# Standard Base64 encode
text = "Hello World"
encoded = base64.b64encode(text.encode('utf-8'))
print(encoded)          # b'SGVsbG8gV29ybGQ='
print(encoded.decode())  # "SGVsbG8gV29ybGQ="

# Standard Base64 decode
decoded = base64.b64decode(encoded)
print(decoded.decode('utf-8'))  # "Hello World"

# URL-safe Base64 (replaces + with - and / with _)
url_encoded = base64.urlsafe_b64encode(text.encode('utf-8'))
print(url_encoded.decode())  # "SGVsbG8gV29ybGQ="

url_decoded = base64.urlsafe_b64decode(url_encoded)
print(url_decoded.decode('utf-8'))  # "Hello World"

# Encode a file (e.g., an image)
with open('image.png', 'rb') as f:
    image_b64 = base64.b64encode(f.read()).decode('utf-8')
    data_uri = f"data:image/png;base64,{image_b64}"

# Decode Base64 back to file
with open('output.png', 'wb') as f:
    f.write(base64.b64decode(image_b64))

Bash / Linux Base64 Encode/Decode

Unter Linux/macOS verwenden Sie den base64-Befehl:

# Base64 encode a string (Linux)
echo -n "Hello World" | base64
# Output: SGVsbG8gV29ybGQ=

# Base64 decode a string (Linux)
echo "SGVsbG8gV29ybGQ=" | base64 --decode
# Output: Hello World

# macOS uses -D instead of --decode
echo "SGVsbG8gV29ybGQ=" | base64 -D
# Output: Hello World

# Base64 encode a file
base64 image.png > image_b64.txt

# Base64 decode a file
base64 --decode image_b64.txt > restored_image.png

# Encode and use inline (e.g., for curl auth header)
AUTH=$(echo -n "user:password" | base64)
curl -H "Authorization: Basic $AUTH" https://api.example.com/data

# Pipe from/to files
cat document.pdf | base64 > document_b64.txt
cat document_b64.txt | base64 --decode > restored.pdf

# Wrap lines at 76 characters (MIME standard)
echo -n "Long text..." | base64 -w 76

PowerShell Base64 Encode/Decode

In PowerShell verwenden Sie die .NET [Convert]-Klasse:

# PowerShell Base64 encode (UTF-16LE by default)
$text = "Hello World"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($text)
$encoded = [Convert]::ToBase64String($bytes)
Write-Output $encoded
# Output: SGVsbG8gV29ybGQ=

# PowerShell Base64 decode
$decoded = [Convert]::FromBase64String($encoded)
$original = [System.Text.Encoding]::UTF8.GetString($decoded)
Write-Output $original
# Output: Hello World

# Encode a file to Base64
$fileBytes = [IO.File]::ReadAllBytes("C:\image.png")
$fileBase64 = [Convert]::ToBase64String($fileBytes)

# Decode Base64 to file
$decodedBytes = [Convert]::FromBase64String($fileBase64)
[IO.File]::WriteAllBytes("C:\restored.png", $decodedBytes)

# One-liner for encoding strings (UTF-8)
[Convert]::ToBase64String(
  [Text.Encoding]::UTF8.GetBytes("Hello World")
)

# Using UTF-16LE (default Windows encoding)
$utf16 = [Convert]::ToBase64String(
  [Text.Encoding]::Unicode.GetBytes("Hello World")
)
# Note: UTF-16LE produces different output than UTF-8

Base64-Kodierungstabelle

Das vollstandige Base64-Alphabet bildet jeden 6-Bit-Wert (0-63) auf ein druckbares ASCII-Zeichen ab (RFC 4648):

ValueCharValueCharValueCharValueChar
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/

Padding: =

Base64 URL-sichere Kodierung

Standard-Base64 verwendet + und /, die in URLs Sonderbedeutung haben. Base64URL ersetzt diese durch - und _ und lasst das =-Padding typischerweise weg.

Base64URL ist in RFC 4648 Abschnitt 5 definiert und wird in JWT, OAuth 2.0 PKCE und vielen modernen APIs verwendet.

Vergleich zwischen Standard-Base64 und Base64URL:

// Standard Base64 vs Base64URL comparison

// Standard Base64 (RFC 4648 Section 4)
// Alphabet: A-Z, a-z, 0-9, +, /
// Padding:  = (required)
"Hello World?" → "SGVsbG8gV29ybGQ/"   // contains /
"subjects?"    → "c3ViamVjdHM/"       // contains /
"<<???>>"     → "PDw/Pz8+Pg=="        // contains + and =

// Base64URL (RFC 4648 Section 5)
// Alphabet: A-Z, a-z, 0-9, -, _
// Padding:  omitted (optional)
"Hello World?" → "SGVsbG8gV29ybGQ_"   // / replaced with _
"subjects?"    → "c3ViamVjdHM_"       // / replaced with _
"<<???>>"     → "PDw_Pz8-Pg"          // + → -, / → _, no padding

// JavaScript conversion between formats
function base64ToBase64Url(base64) {
  return base64
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=+$/, '');
}

function base64UrlToBase64(base64url) {
  let base64 = base64url
    .replace(/-/g, '+')
    .replace(/_/g, '/');
  // Add padding
  while (base64.length % 4 !== 0) {
    base64 += '=';
  }
  return base64;
}

Base64-Bildkodierung

Eine der beliebtesten Verwendungen von Base64 ist das Einbetten von Bildern in HTML/CSS uber Data URIs im Format data:[Medientyp];base64,[Daten].

Anwendungsfalle: Inline-Bilder in HTML-E-Mails, kleine Icons in CSS, Bilder in JSON-API-Antworten und Assets in SPAs.

Performance: Base64-kodierte Bilder sind etwa 33% grosser. Fur Bilder uber einige KB sind separate Dateien mit Caching effizienter. Base64 eignet sich fur kleine Bilder (unter 10KB).

Base64-Bilder in HTML verwenden:

<!-- Inline Base64 image in HTML -->
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAADElEQVQI12P4//8/AwAI/AL+hc2rNAAAAABJRU5E
rkJggg==" alt="Red dot" width="5" height="5" />

<!-- Base64 SVG in HTML -->
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMT
AwIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI0MCIgZmlsbD0icmVk
Ii8+PC9zdmc+" alt="Red circle" />

<!-- Base64 favicon -->
<link rel="icon" href="data:image/x-icon;base64,AAABAA..." />

Base64-Bilder in CSS verwenden:

/* Base64 background image in CSS */
.icon-check {
  background-image: url('data:image/svg+xml;base64,PHN2ZyB4bW...');
  background-size: contain;
  width: 24px;
  height: 24px;
}

/* Base64 cursor in CSS */
.custom-cursor {
  cursor: url('data:image/png;base64,iVBORw0KGgo...'), auto;
}

/* Base64 font in CSS (@font-face) */
@font-face {
  font-family: 'CustomFont';
  src: url('data:font/woff2;base64,d09GMgABAAAAAD...') format('woff2');
}

Bild in Base64 konvertieren mit JavaScript:

// Convert image file to Base64 data URI (browser)
function imageToBase64(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onload = () => resolve(reader.result);
    reader.onerror = reject;
    reader.readAsDataURL(file);
  });
}

// Usage with file input
const input = document.querySelector('input[type="file"]');
input.addEventListener('change', async (e) => {
  const file = e.target.files[0];
  const dataUri = await imageToBase64(file);
  console.log(dataUri);
  // "data:image/png;base64,iVBORw0KGgo..."
});

// Convert canvas to Base64
const canvas = document.getElementById('myCanvas');
const base64Image = canvas.toDataURL('image/png');
// "data:image/png;base64,iVBORw0KGgo..."

// Node.js: encode image file to Base64
const fs = require('fs');
const imageBuffer = fs.readFileSync('photo.jpg');
const base64String = imageBuffer.toString('base64');
const dataUri = `data:image/jpeg;base64,${base64String}`;

Haufig gestellte Fragen

Wofur wird Base64-Kodierung verwendet?

Base64 konvertiert Binardaten in ASCII-Text fur sichere Ubertragung: Data URIs, E-Mail-Anhange, JSON/XML-APIs, HTTP Basic Auth, JWT und Speicherung binarer Daten in Textdatenbanken.

Wie kodiert man einen String in Base64 mit JavaScript?

Verwenden Sie btoa("Hello World") = "SGVsbG8gV29ybGQ=". Dekodierung: atob("SGVsbG8gV29ybGQ="). Fur Unicode: btoa(unescape(encodeURIComponent(text))). In Node.js: Buffer.from("Hello World").toString("base64").

Ist Base64-Kodierung dasselbe wie Verschlusselung?

Nein. Base64 ist eine umkehrbare Kodierung ohne Schlussel. Sie bietet keine Sicherheit. Verwenden Sie AES-256 oder RSA fur echte Verschlusselung.

Base64-Kodierung ist eine grundlegende Fahigkeit fur jeden Entwickler. Nutzen Sie unser kostenloses Tool fur sofortiges Kodieren und Dekodieren.

Base64 sofort kodieren und dekodieren mit unserem kostenlosen Online-Tool.

War das hilfreich?

Stay Updated

Get weekly dev tips and new tool announcements.

No spam. Unsubscribe anytime.

Partner Picks

Sponsor this article

Place your product next to this developer topic with tracked clicks.

Ask about article sponsorship

This site uses cookies for analytics and to display ads. By continuing to browse, you agree. Privacy Policy