> base64 | decode | JPG <
// Decodeer Base64-strings en data-URI's terug naar JPG-/JPEG-foto's — EXIF behouden, direct voorbeeld, download met één klik
Gedecodeerde JPEG verschijnt hier
Geen hercompressie
De JPEG-bytes die uit de decoder komen zijn bit-identiek aan wat er gecodeerd is — dezelfde kwaliteit, dezelfde EXIF, dezelfde DCT-coëfficiënten.
Lokale decodering
Je Base64-string wordt volledig in de browser gedecodeerd met atob(). Geen upload. Geen server. Geen analyse van de payload.
Live voorbeeld
Bekijk de gedecodeerde foto en de afmetingen onmiddellijk — download als .jpg met één klik.
// OVER BASE64 NAAR JPG
Wat deze tool accepteert
- >Data-URI: data:image/jpeg;base64,/9j/4AAQSkZ…
- >Ruwe JPEG-Base64-payload (begint met /9j/)
- >Base64 met ingebedde witruimte / regelafbrekingen
- >Standaard RFC 4648-alfabet (+/, optionele =-opvulling)
- >URL-veilige Base64 (-_) — automatisch genormaliseerd bij decoderen
- >Meerdelige JPEG's (JFIF-, EXIF-, Adobe-, SPIFF-markeringen)
Veelvoorkomende toepassingen
- >Een foto herstellen uit een JSON-API-respons
- >Een profielavatar uit een TEXT-databasekolom halen
- >Een als data-URI opgeslagen CMS-afbeeldingsveld decoderen
- >Een foto reconstrueren uit een e-mail-MIME-deel
- >Een via WebSocket verzonden camerasnapshot weergeven
- >Een defecte <img src="data:image/jpeg;base64,…">-tag debuggen
- >Offline-first-apps die foto's als Base64 cachen
Hoe Base64 → JPG-decodering werkt
De decoder verwijdert elke data-URI-prefix, normaliseert witruimte en URL-veilige tekens en roept vervolgens atob() aan om elke Base64-groep van 4 tekens terug te zetten naar 3 binaire bytes. Het resultaat wordt verpakt in een Blob met MIME-type image/jpeg en weergegeven met een <img>-tag. Omdat Base64 een bijectieve binair-naar-tekst-transformatie is, is de uitgevoerde JPEG bit-identiek aan het origineel — de SHA-256-hash komt overeen en er gaat geen kwaliteit verloren.
Voorbeeld JPEG-data-URI:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAABAAEBAREA/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAA/AKp//9k=
Prestaties en compatibiliteit
- >Decodering is O(n) op de payloadlengte — verwerkt 100 MB+ zonder problemen
- >Gebruikt native atob() + Uint8Array — geen externe bibliotheken
- >Ondersteunt EXIF-rijke JPEG's van elke grote cameramaker
- >Werkt in Chrome, Firefox, Safari, Edge en mobiele browsers
- >Knijp-om-te-zoomen-voorbeeld op mobiele apparaten
- >Download via Blob-URL — geen heen-en-weer naar de server
// HOE BASE64 NAAR JPG TE DECODEREN
Stap 1: Plakken
Plak de Base64-string of de volledige data-URI in het invoerveld
Stap 2: Decoderen
Klik op [DECODE] — de JPEG wordt direct weergegeven
Stap 3: Inspecteren
Controleer de foto, de afmetingen en de bestandsgrootte voor het opslaan
Stap 4: Downloaden
Klik op [DOWNLOAD .jpg] om een bit-identieke JPEG op schijf op te slaan
// CODEVOORBEELDEN — BASE64 NAAR 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);
Decodeer een ruwe Base64-JPEG-payload, verpak in een Blob en geef weer met <img>. Data-URI's kunnen direct op src worden ingesteld.
Node.js
const fs = require('fs');
const b64 = '/9j/4AAQSkZJRgAB...';
fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64'));
Decodeer Base64-tekst naar een JPEG-bestand met Node's ingebouwde Buffer.
Python
import base64
with open('out.jpg', 'wb') as f:
f.write(base64.b64decode('/9j/4AAQSkZJRgAB...'))
Alleen standaardbibliotheek — Base64 → JPEG-bytes → bestand.
PHP
<?php
file_put_contents('out.jpg', base64_decode('/9j/4AAQSkZJRgAB...'));
Eenregelig met base64_decode() en file_put_contents().
Shell (macOS / Linux)
echo '/9j/4AAQSkZJRgAB...' | base64 -d > out.jpg
POSIX base64 -d leest de string van stdin en schrijft de JPEG naar schijf.
// FAQ — BASE64 NAAR JPG
V: Wat is Base64-naar-JPG-decodering?
A: Het draait een Base64-gecodeerde JPEG terug naar de oorspronkelijke binaire vorm. De decoder leest telkens 4 ASCII-tekens uit de Base64-string, zoekt ze op in het RFC 4648-alfabet en voert 3 binaire bytes per groep uit. De resulterende byte-array is een volledig, geldig JPEG-bestand — dezelfde DCT-coëfficiënten, dezelfde Huffman-tabellen, dezelfde EXIF-metadata, dezelfde kwaliteit als voor het coderen.
V: Hoe weet ik of de Base64-string echt een JPEG is?
A: Elke JPEG begint met de twee magische bytes FF D8 (Start-Of-Image). Wanneer die bytes Base64-gecodeerd worden, zijn de eerste 4 tekens altijd /9j/. Dus elke Base64-string die begint met /9j/4AAQ (JFIF-header) of /9j/2wC (veel smartphonecamera's die Adobe APP14 gebruiken) is een JPEG. Andere formaten hebben andere prefixen: iVBORw0KGgo voor PNG, R0lGOD voor GIF, UklGR voor WebP.
V: Kan ik een data-URI direct decoderen?
A: Ja. Als je string begint met data:image/jpeg;base64,, verwijdert de decoder die prefix automatisch en verwerkt de payload. Als je alleen het ruwe Base64-deel hebt, detecteert onze tool het JPEG-magic-getal (/9j/) en verpakt de gedecodeerde bytes als image/jpeg voor het voorbeeld. Witruimte, regeleinden en tabs worden allemaal verwijderd vóór het decoderen, zodat je een netjes opgemaakte JSON-waarde direct kunt plakken.
V: Vermindert decoderen de kwaliteit van mijn JPEG?
A: Nee. Base64-decodering is een zuivere binaire transformatie — elk Base64-teken wordt deterministisch toegewezen aan 6 bits, en 4 tekens decoderen naar 3 bytes. De JPEG-bytes die eruit komen zijn bit-identiek aan wat er gecodeerd is, dus de kwaliteit is die waarin de oorspronkelijke JPEG is opgeslagen. Een SHA-256-hash van het gedecodeerde bestand komt overeen met de hash van het origineel. Als je gedecodeerde foto er slechter uitziet dan verwacht, is het kwaliteitsverlies opgetreden toen de JPEG voor het eerst werd opgeslagen, niet tijdens de Base64-heen-en-weer.
V: De gedecodeerde JPG is kapot — wat kan er mis zijn?
A: Typische oorzaken:
• Afgekapte string — de Base64 is ergens afgeknipt. Een volledige JPEG eindigt met FF D9 (End-Of-Image), wat in Base64 codeert als /9k= of 2Q==. Als je string niet eindigt op een van deze patronen plus optionele opvulling, is hij onvolledig.
• Dubbel gecodeerd — de JPEG is tweemaal Base64-gecodeerd. Decodeer hem opnieuw.
• URL-veilig alfabet — als de string -_ gebruikt in plaats van +/, weigeren sommige decoders hem. Onze tool normaliseert beide.
• Eigenlijk een ander formaat — de payload is PNG of WebP. Gebruik onze generieke Base64 → Afbeelding-decoder die het formaat automatisch detecteert.
V: Blijven mijn EXIF-metadata behouden na het decoderen?
A: Ja. Het EXIF-APP1-segment (cameramodel, GPS, datum/tijd, lens, ISO, witbalans, oriëntatie, enz.) maakt deel uit van de JPEG-bytestroom. Omdat Base64 bit-voor-bit omkeerbaar is, wordt elke byte — inclusief EXIF — hersteld. Als je om privacyredenen EXIF-vrije foto's nodig hebt, verwijder dan de metadata na het decoderen met een tool als exiftool -all= out.jpg of een canvas-gebaseerde herexport in de browser.
V: Kan ik Base64 naar JPG decoderen in de terminal?
A: Ja. Op macOS en Linux: echo '/9j/4AAQSkZJRgAB…' | base64 -d > out.jpg
(oudere macOS-base64 gebruikt -D.)
Op Windows PowerShell: [IO.File]::WriteAllBytes('out.jpg', [Convert]::FromBase64String('/9j/4AAQSkZJRgAB…'))
Als je invoer een volledige data-URI is, stuur hem dan eerst door sed 's|^data:.*base64,||' om de prefix te verwijderen.
V: Hoe groot mag een Base64-JPG zijn die ik kan decoderen?
A: Tot de geheugenlimiet van je browser. Een gedecodeerde JPEG van 100 MB vereist ~135 MB Base64-tekst, wat moderne desktopbrowsers zonder problemen verwerken. Mobiele browsers zijn betrouwbaar tot ~40 MB. Voor extreem grote foto's (uit RAW geconverteerde JPEG-exports van middenformaatcamera's) kun je decodering aan de serverzijde overwegen: base64 -d photo.b64 > photo.jpg is veel sneller dan een browser-heen-en-weer.
V: Werkt de decoder offline?
A: Ja, na het initiële laden van de pagina. Alle decodering gebruikt ingebouwde browser-API's (atob(), Uint8Array, Blob, URL.createObjectURL()), die geen van alle een netwerkverbinding vereisen. Je kunt dit bevestigen door je netwerk uit te schakelen en door te gaan met decoderen — het voorbeeld en de download blijven beide werken.
V: Is de Base64-JPEG versleuteld of privé?
A: Nee. Base64 is een codering, geen versleuteling. Iedereen met je Base64-string kan deze in milliseconden terugdecoderen naar de oorspronkelijke foto, en EXIF-data (inclusief GPS-coördinaten) gaat mee. Als de JPEG gevoelige informatie bevat, versleutel hem dan (AES-GCM, age, PGP) voordat je Base64 toepast, en transporteer de string uitsluitend via HTTPS.
V: Is het decoderen aan de clientzijde — wordt er iets geüpload?
A: Er wordt niets geüpload. Elke stap — prefix verwijderen, witruimte normaliseren, atob() aanroepen, de Blob bouwen, de <img> weergeven, de download starten — gebeurt in je browser. Open het tabblad Netwerk van je browser-dev-tools tijdens het decoderen en je ziet nul uitgaande verzoeken voor je Base64-payload. Deze tool is veilig voor vertrouwelijke screenshots, persoonlijke foto's en gereguleerde gegevens.
V: Hoe decodeer ik Base64 naar JPG in productiecode?
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)).
V: Base64 naar JPG vs Base64 naar PNG — welke moet ik gebruiken?
A: Kijk naar de prefix van de Base64-string. Als hij begint met /9j/, is het JPEG — gebruik Base64 → JPG. Als hij begint met iVBORw0KGgo, is het PNG — gebruik Base64 → PNG. Je kunt een JPEG-decoder niet dwingen PNG uit te voeren (of omgekeerd); de magische bytes vertellen de waarheid. Bij twijfel gebruik je de generieke decoder die het formaat automatisch detecteert en met de juiste extensie opslaat.