> base64 | decode | JPG <

// Base64-Strings und Daten-URIs zurück in JPG-/JPEG-Fotos dekodieren — EXIF bleibt erhalten, sofortige Vorschau, Ein-Klick-Download

0 Zeichen
🖼️

Dekodiertes JPEG erscheint hier

[FAITHFUL]

Keine Neukomprimierung

Die JPEG-Bytes, die aus dem Decoder kommen, sind bit-identisch zu dem, was kodiert wurde — gleiche Qualität, gleiche EXIF-Daten, gleiche DCT-Koeffizienten.

[PRIVATE]

Lokale Dekodierung

Ihr Base64-String wird vollständig im Browser mit atob() dekodiert. Kein Upload. Kein Server. Keine Analytics auf den Nutzdaten.

[INSTANT]

Live-Vorschau

Sehen Sie das dekodierte Foto und seine Abmessungen sofort — als .jpg mit einem Klick herunterladen.

// ÜBER BASE64 ZU JPG

Was dieses Tool akzeptiert

  • >Daten-URI: data:image/jpeg;base64,/9j/4AAQSkZ…
  • >Rohe JPEG-Base64-Nutzdaten (beginnt mit /9j/)
  • >Base64 mit eingebetteten Leerzeichen / Zeilenumbrüchen
  • >Standard-RFC-4648-Alphabet (+/, optionales =-Padding)
  • >URL-sicheres Base64 (-_) — wird beim Dekodieren automatisch normalisiert
  • >Mehrteilige JPEGs (JFIF-, EXIF-, Adobe-, SPIFF-Marker)

Häufige Anwendungsfälle

  • >Ein Foto aus einer JSON-API-Antwort wiederherstellen
  • >Einen Profil-Avatar aus einer TEXT-Datenbankspalte extrahieren
  • >Ein als Daten-URI gespeichertes CMS-Bildfeld dekodieren
  • >Ein Foto aus einem E-Mail-MIME-Teil rekonstruieren
  • >Einen per WebSocket gesendeten Kamera-Schnappschuss rendern
  • >Ein fehlerhaftes <img src="data:image/jpeg;base64,…">-Tag debuggen
  • >Offline-First-Apps, die Fotos als Base64 cachen

So funktioniert die Base64-→-JPG-Dekodierung

Der Decoder entfernt etwaige Daten-URI-Präfixe, normalisiert Leerzeichen und URL-sichere Zeichen und ruft dann atob() auf, um jede 4-Zeichen-Base64-Gruppe zurück in 3 Binärbytes zu konvertieren. Das Ergebnis wird in einen Blob mit dem MIME-Typ image/jpeg gepackt und mit einem <img>-Tag in der Vorschau angezeigt. Da Base64 eine bijektive Binär-zu-Text-Transformation ist, ist das ausgegebene JPEG bit-identisch zum Original — sein SHA-256-Hash stimmt überein und es geht keine Qualität verloren.

Beispiel JPEG Daten-URI:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAABAAEBAREA/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAA/AKp//9k=

Performance & Kompatibilität

  • >Die Dekodierung ist O(n) bezüglich der Nutzlastlänge — bewältigt 100 MB+ problemlos
  • >Verwendet native atob() + Uint8Array — keine Drittanbieter-Bibliotheken
  • >Unterstützt EXIF-reiche JPEGs von jedem großen Kamerahersteller
  • >Funktioniert in Chrome, Firefox, Safari, Edge und mobilen Browsern
  • >Pinch-to-Zoom-Vorschau auf Mobilgeräten
  • >Download über Blob-URL — kein Server-Roundtrip

// SO DEKODIEREN SIE BASE64 ZU JPG

📋

Schritt 1: Einfügen

Fügen Sie den Base64-String oder die vollständige Daten-URI in das Eingabefeld ein

🔍

Schritt 2: Dekodieren

Klicken Sie auf [DECODE] — das JPEG wird sofort gerendert

📊

Schritt 3: Prüfen

Prüfen Sie das Foto, seine Abmessungen und die Dateigröße vor dem Speichern

💾

Schritt 4: Herunterladen

Klicken Sie auf [DOWNLOAD .jpg], um ein bit-identisches JPEG auf der Festplatte zu speichern

// CODE-BEISPIELE — BASE64 ZU JPG

JavaScript (Browser)

// Decode Base64 → JPEG Blob → preview
const b64 = '/9j/4AAQSkZJRgAB...';
const bin = atob(b64);
const arr = new Uint8Array(bin.length);
for (let i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i);
const blob = new Blob([arr], { type: 'image/jpeg' });
document.getElementById('preview').src = URL.createObjectURL(blob);

Rohe Base64-JPEG-Nutzdaten dekodieren, in einen Blob packen und mit <img> rendern. Daten-URIs können direkt auf src gesetzt werden.

Node.js

const fs = require('fs');
const b64 = '/9j/4AAQSkZJRgAB...';
fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64'));

Base64-Text mit Nodes eingebautem Buffer in eine JPEG-Datei dekodieren.

Python

import base64
with open('out.jpg', 'wb') as f:
    f.write(base64.b64decode('/9j/4AAQSkZJRgAB...'))

Nur Standardbibliothek — Base64 → JPEG-Bytes → Datei.

PHP

<?php
file_put_contents('out.jpg', base64_decode('/9j/4AAQSkZJRgAB...'));

Einzeiler mit base64_decode() und file_put_contents().

Shell (macOS / Linux)

echo '/9j/4AAQSkZJRgAB...' | base64 -d > out.jpg

POSIX base64 -d liest den String von stdin und schreibt das JPEG auf die Festplatte.

// FAQ — BASE64 ZU JPG

F: Was ist Base64-zu-JPG-Dekodierung?

A: Sie kehrt ein Base64-kodiertes JPEG zurück in seine ursprüngliche Binärform um. Der Decoder liest jeweils 4 ASCII-Zeichen aus dem Base64-String, schlägt sie im RFC-4648-Alphabet nach und gibt 3 Binärbytes pro Gruppe aus. Das resultierende Byte-Array ist eine vollständige, gültige JPEG-Datei — gleiche DCT-Koeffizienten, gleiche Huffman-Tabellen, gleiche EXIF-Metadaten, gleiche Qualität wie vor der Kodierung.

F: Woran erkenne ich, dass der Base64-String wirklich ein JPEG ist?

A: Jedes JPEG beginnt mit den zwei magischen Bytes FF D8 (Start-Of-Image). Werden diese Bytes in Base64 kodiert, lauten die ersten 4 Zeichen immer /9j/. Daher ist jeder Base64-String, der mit /9j/4AAQ (JFIF-Header) oder /9j/2wC (viele Smartphone-Kameras mit Adobe APP14) beginnt, ein JPEG. Andere Formate haben unterschiedliche Präfixe: iVBORw0KGgo für PNG, R0lGOD für GIF, UklGR für WebP.

F: Kann ich eine Daten-URI direkt dekodieren?

A: Ja. Beginnt Ihr String mit data:image/jpeg;base64,, entfernt der Decoder dieses Präfix automatisch und verarbeitet die Nutzdaten. Haben Sie nur den rohen Base64-Teil, erkennt unser Tool die JPEG-Magic-Number (/9j/) und verpackt die dekodierten Bytes als image/jpeg für die Vorschau. Leerzeichen, Zeilenumbrüche und Tabulatoren werden alle vor der Dekodierung entfernt, sodass Sie einen hübsch formatierten JSON-Wert direkt einfügen können.

F: Verringert die Dekodierung die Qualität meines JPEG?

A: Nein. Die Base64-Dekodierung ist eine reine Binärtransformation — jedes Base64-Zeichen bildet deterministisch auf 6 Bit ab, und 4 Zeichen dekodieren zu 3 Bytes. Die JPEG-Bytes, die herauskommen, sind bit-identisch zu dem, was kodiert wurde, sodass die Qualität die ist, mit der das ursprüngliche JPEG gespeichert wurde. Ein SHA-256-Hash der dekodierten Datei stimmt mit dem Hash des Originals überein. Sieht Ihr dekodiertes Foto schlechter aus als erwartet, geschah der Qualitätsverlust, als das JPEG zum ersten Mal gespeichert wurde, nicht während des Base64-Round-Trips.

F: Das dekodierte JPG ist kaputt — was könnte falsch sein?

A: Typische Ursachen:
Abgeschnittener String — das Base64 wurde irgendwo beschnitten. Ein vollständiges JPEG endet mit FF D9 (End-Of-Image), was in Base64 zu /9k= oder 2Q== kodiert. Endet Ihr String nicht mit einem dieser Muster plus optionalem Padding, ist er unvollständig.
Doppelt kodiert — das JPEG wurde zweimal Base64-kodiert. Dekodieren Sie es erneut.
URL-sicheres Alphabet — verwendet der String -_ statt +/, lehnen manche Decoder ihn ab. Unser Tool normalisiert beides.
Eigentlich ein anderes Format — die Nutzdaten sind PNG oder WebP. Verwenden Sie unseren generischen Base64-→-Bild-Decoder, der das Format automatisch erkennt.

F: Bleiben meine EXIF-Metadaten nach dem Dekodieren erhalten?

A: Ja. Das EXIF-APP1-Segment (Kameramodell, GPS, Datum/Uhrzeit, Objektiv, ISO, Weißabgleich, Ausrichtung usw.) ist Teil des JPEG-Bytestroms. Da Base64 bitgenau reversibel ist, wird jedes Byte — einschließlich EXIF — wiederhergestellt. Brauchen Sie EXIF-freie Fotos aus Datenschutzgründen, entfernen Sie die Metadaten nach der Dekodierung mit einem Tool wie exiftool -all= out.jpg oder einem canvas-basierten Reexport im Browser.

F: Kann ich Base64 im Terminal zu JPG dekodieren?

A: Ja. Auf macOS und Linux:
echo '/9j/4AAQSkZJRgAB…' | base64 -d > out.jpg
(Älteres macOS-base64 verwendet -D.)
Auf Windows PowerShell:
[IO.File]::WriteAllBytes('out.jpg', [Convert]::FromBase64String('/9j/4AAQSkZJRgAB…'))
Ist Ihre Eingabe eine vollständige Daten-URI, leiten Sie sie zuerst durch sed 's|^data:.*base64,||', um das Präfix zu entfernen.

F: Wie groß darf ein Base64-JPG sein, das ich dekodieren kann?

A: Bis zum Speicherlimit Ihres Browsers. Ein 100-MB-dekodiertes JPEG benötigt ~135 MB Base64-Text, was moderne Desktop-Browser problemlos verarbeiten. Mobile Browser sind bis ~40 MB zuverlässig. Für extrem große Fotos (aus RAW konvertierte JPEG-Exporte aus Mittelformatkameras) ziehen Sie eine serverseitige Dekodierung in Betracht: base64 -d photo.b64 > photo.jpg ist weit schneller als ein Browser-Roundtrip.

F: Funktioniert der Decoder offline?

A: Ja, nach dem initialen Laden der Seite. Die gesamte Dekodierung nutzt eingebaute Browser-APIs (atob(), Uint8Array, Blob, URL.createObjectURL()), von denen keine eine Netzwerkverbindung benötigt. Sie können dies bestätigen, indem Sie Ihr Netzwerk deaktivieren und weiter dekodieren — die Vorschau und der Download funktionieren beide weiterhin.

F: Ist das Base64-JPEG verschlüsselt oder privat?

A: Nein. Base64 ist eine Kodierung, keine Verschlüsselung. Jeder mit Ihrem Base64-String kann ihn in Millisekunden zurück zum ursprünglichen Foto dekodieren, und EXIF-Daten (einschließlich GPS-Koordinaten) kommen mit. Enthält das JPEG sensible Informationen, verschlüsseln Sie es (AES-GCM, age, PGP) vor der Base64-Anwendung und transportieren Sie den String ausschließlich über HTTPS.

F: Ist die Dekodierung clientseitig — wird irgendetwas hochgeladen?

A: Es wird nichts hochgeladen. Jeder Schritt — Präfix entfernen, Leerzeichen normalisieren, atob() aufrufen, den Blob bauen, das <img> rendern, den Download auslösen — erfolgt in Ihrem Browser. Öffnen Sie den Netzwerk-Tab der Browser-DevTools beim Dekodieren, und Sie sehen null ausgehende Anfragen für Ihre Base64-Nutzdaten. Dieses Tool ist sicher für vertrauliche Screenshots, private Fotos und regulierte Daten.

F: Wie dekodiere ich Base64 zu JPG in Produktionscode?

A: In Node.js: fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64')). In Python: open('out.jpg','wb').write(base64.b64decode(b64)). In Go: b, _ := base64.StdEncoding.DecodeString(b64); os.WriteFile("out.jpg", b, 0644). In Java: Files.write(Path.of("out.jpg"), Base64.getDecoder().decode(b64)). In Rust: std::fs::write("out.jpg", base64::decode(b64)?)?. In Ruby: File.binwrite('out.jpg', Base64.decode64(b64)). In PHP: file_put_contents('out.jpg', base64_decode($b64)).

F: Base64 zu JPG vs. Base64 zu PNG — welchen soll ich verwenden?

A: Schauen Sie auf das Präfix des Base64-Strings. Beginnt er mit /9j/, ist es JPEG — verwenden Sie Base64 → JPG. Beginnt er mit iVBORw0KGgo, ist es PNG — verwenden Sie Base64 → PNG. Sie können einen JPEG-Decoder nicht zwingen, PNG auszugeben (oder umgekehrt); die magischen Bytes sagen die Wahrheit. Im Zweifel nutzen Sie den generischen Decoder, der das Format automatisch erkennt und mit der richtigen Endung speichert.

// OTHER LANGUAGES