Base64 Image Encoder

Afbeeldingen coderen naar Base64 data URI's voor HTML en CSS

Sleep een afbeelding hierheen of klik om te uploaden

Ondersteunt PNG, JPG, SVG, WebP, GIF, AVIF

Wat is Base64-afbeeldingscodering?

Base64-afbeeldingscodering converteert binaire afbeeldingsdata naar een ASCII-string die direct in HTML, CSS of JSON kan worden ingesloten zonder te verwijzen naar een extern bestand. Het resultaat is een data URI — een op zichzelf staande string die begint met data:image/png;base64, gevolgd door de Base64-gecodeerde bytes van de afbeelding. Browsers behandelen data URI's precies zoals externe afbeeldings-URL's: ze decoderen de Base64-inhoud en renderen de afbeelding inline.

De techniek is vastgelegd in RFC 2397 (data URI-schema) en RFC 4648 (Base64-codering). Wanneer een afbeelding Base64-gecodeerd wordt, worden elke 3 bytes aan binaire pixeldata omgezet naar 4 ASCII-tekens, waardoor de payload met ongeveer 33% groter wordt. Ondanks deze overhead elimineert het insluiten van afbeeldingen één HTTP-verzoek per bestand — een zinvolle optimalisatie als de afbeeldingen klein zijn (pictogrammen, logo's, 1x1 trackingpixels) en de round-trip-latentie van een afzonderlijk verzoek de kosten van de extra bytes zou overstijgen.

Data URI's worden ondersteund in alle moderne browsers, e-mailclients (met beperkingen) en elke context die standaard URI-syntaxis accepteert. Ze worden veel gebruikt in single-page applicaties, HTML-e-mailsjablonen, SVG-sprites en CSS background-image-declaraties waar het verminderen van het totale aantal netwerkverzoeken de waargenomen laadtijd verbetert.

Waarom deze Base64 Image Encoder gebruiken?

Dit hulpmiddel converteert elke afbeelding naar een kant-en-klare data URI, direct in je browser — geen upload, geen server, geen account vereist.

Directe conversie
Sleep een afbeelding of selecteer een bestand en de volledige data URI verschijnt onmiddellijk. Geen wachten op serververwerking — de FileReader API verwerkt alles lokaal.
🔒
Privacy-eerste verwerking
Je afbeeldingen verlaten je apparaat nooit. De codering wordt volledig in de browser uitgevoerd met de ingebouwde methode FileReader.readAsDataURL(). Er worden geen gegevens naar enige server verzonden.
🌐
Alle gangbare formaten ondersteund
Accepteert PNG, JPEG, SVG, WebP, GIF, ICO, BMP en elk ander afbeeldingsformaat dat je browser ondersteunt. Het MIME-type wordt automatisch gedetecteerd op basis van het bestand.
📦
Kopieerklare uitvoer
De uitvoer is een volledige data URI-string — plak hem direct in een HTML img src, een CSS url()-declaratie of een JSON-payload zonder handmatige opmaak.

Toepassingen van Base64-afbeeldingscodering

Frontend-ontwikkeling
Sluit kleine pictogrammen en UI-elementen direct in HTML of CSS in om HTTP-verzoeken te elimineren. Dit vermindert de waterval-latentie voor kritieke above-the-fold-afbeeldingen en verbetert de Largest Contentful Paint (LCP)-scores.
HTML-e-mailsjablonen
Veel e-mailclients blokkeren externe afbeeldingen standaard. Ingesloten Base64-afbeeldingen worden direct gerenderd zonder dat de ontvanger op 'afbeeldingen laden' hoeft te klikken, wat de open rates en visuele consistentie verbetert.
Single-page applicaties
Bundel kleine bestanden als data URI's in je JavaScript of CSS om het totale aantal netwerkverzoeken te verminderen. Zowel Webpack als Vite ondersteunen automatisch Base64-inlining voor bestanden onder een instelbare groottedrempel.
API- en JSON-payloads
Codeer gebruikersavatars, handtekeningen of miniaturen als Base64-strings om ze direct op te nemen in JSON API-responses. Dit vermijdt de noodzaak van een afzonderlijk bestandshosting-eindpunt voor kleine afbeeldingen.
Documentatie en Markdown
Sluit diagrammen of schermafbeeldingen in als data URI's in Markdown-bestanden of README-documenten. De afbeeldingen reizen mee met het document en worden correct weergegeven zonder externe hosting.
Testen en prototyping
Gebruik Base64 data URI's als plaatshouderafbeeldingen in testfixtures, Storybook-stories of prototype-HTML-bestanden. Geen noodzaak om een statische bestandsserver in te stellen of afbeeldingsbestanden te beheren tijdens de vroege ontwikkeling.

Data URI-structuur

Een data URI codeert het afbeeldingsformaat en de binaire inhoud in één string. Het begrijpen van de structuur helpt bij het programmatisch opbouwen of verwerken van data URI's:

OnderdeelBeschrijving
data:URI scheme identifier
image/pngMIME type of the image
;base64,Encoding declaration
iVBORw0KGgo...Base64-encoded binary data

Vergelijking van afbeeldingsformaten voor Base64-codering

De keuze van afbeeldingsformaat beïnvloedt de Base64-uitvoergrootte, browserondersteuning en renderingkenmerken. Gebruik het formaat dat het beste past bij je inhoudstype:

FormaatMIME-typeTransparantieGeschikt voor
PNGimage/pngYesScreenshots, icons, UI elements
JPEGimage/jpegNoPhotos, gradients, large images
SVGimage/svg+xmlYesLogos, icons, scalable graphics
WebPimage/webpYesModern web images, smaller files
GIFimage/gifYes (1-bit)Simple animations, small icons
ICOimage/x-iconYesFavicons

Codevoorbeelden

Hoe afbeeldingen naar Base64 data URI's worden geconverteerd in populaire talen en omgevingen:

JavaScript (browser)
// Convert a File object to a Base64 data URI
function fileToDataUri(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader()
    reader.onload = () => resolve(reader.result)
    reader.onerror = reject
    reader.readAsDataURL(file)
    // reader.result → "data:image/png;base64,iVBORw0KGgo..."
  })
}

// Convert a canvas element to a data URI
const dataUri = canvas.toDataURL('image/png')
// → "data:image/png;base64,iVBORw0KGgo..."

// Convert with quality parameter (JPEG/WebP only)
const jpegUri = canvas.toDataURL('image/jpeg', 0.8)
// → "data:image/jpeg;base64,/9j/4AAQ..."
Python
import base64

# Read an image file and encode it to a data URI
with open('logo.png', 'rb') as f:
    encoded = base64.b64encode(f.read()).decode('ascii')

data_uri = f'data:image/png;base64,{encoded}'
# → "data:image/png;base64,iVBORw0KGgo..."

# Detect MIME type automatically
import mimetypes
mime, _ = mimetypes.guess_type('photo.jpg')
# mime → "image/jpeg"

with open('photo.jpg', 'rb') as f:
    b64 = base64.b64encode(f.read()).decode('ascii')

data_uri = f'data:{mime};base64,{b64}'
Node.js
import { readFileSync } from 'fs'
import { lookup } from 'mime-types'

// Read file and encode to data URI
const buffer = readFileSync('icon.png')
const base64 = buffer.toString('base64')
const mime = lookup('icon.png') // → "image/png"

const dataUri = `data:${mime};base64,${base64}`
// → "data:image/png;base64,iVBORw0KGgo..."

// From a Buffer received via HTTP/API
function bufferToDataUri(buf, mimeType) {
  return `data:${mimeType};base64,${buf.toString('base64')}`
}
CLI (bash)
# Encode an image to Base64 (macOS)
base64 -i logo.png | tr -d '\n'

# Encode an image to a full data URI (Linux)
echo -n "data:image/png;base64,$(base64 -w 0 logo.png)"

# Encode and copy to clipboard (macOS)
echo -n "data:image/png;base64,$(base64 -i logo.png | tr -d '\n')" | pbcopy

# Detect MIME type and encode (Linux, requires file command)
MIME=$(file -b --mime-type image.webp)
echo -n "data:$MIME;base64,$(base64 -w 0 image.webp)"

Veelgestelde vragen

Wat is de maximale afbeeldingsgrootte voor Base64-codering?
Er is geen harde limiet in de Base64-specificatie zelf. Browserondersteuning voor data URI's verschilt: de meeste moderne browsers verwerken data URI's tot enkele megabytes. Base64-codering vergroot echter de grootte met 33%, dus een afbeelding van 1 MB wordt ongeveer 1,33 MB aan tekst. Voor afbeeldingen groter dan 10-20 KB is het efficiënter om ze als afzonderlijke bestanden met correcte caching te serveren.
Vermindert Base64-codering de afbeeldingskwaliteit?
Nee. Base64 is een verliesloze codering — het converteert binaire data naar tekst zonder de inhoud te wijzigen. De gedecodeerde data is byte-voor-byte identiek aan het originele bestand. Eventueel kwaliteitsverlies is afkomstig van het afbeeldingsformaat zelf (bijvoorbeeld JPEG-compressie), niet van Base64-codering.
Waarom is Base64-gecodeerde uitvoer groter dan de originele afbeelding?
Base64 stelt 3 bytes binaire data voor met 4 ASCII-tekens, wat resulteert in een toename van 33%. Een data URI voegt ook een prefix toe (bijvoorbeeld data:image/png;base64,) van ongeveer 25-30 tekens. Voor kleine afbeeldingen (onder 2-5 KB) wordt deze overhead gecompenseerd door het elimineren van een HTTP-verzoek. Voor grotere afbeeldingen maakt de extra omvang externe bestanden efficiënter.
Kan ik Base64-afbeeldingen gebruiken in CSS background-image?
Ja. Gebruik de data URI als waarde van de url()-functie: background-image: url('data:image/png;base64,...'). Dit werkt in alle moderne browsers. Het is het meest effectief voor kleine, veelgebruikte achtergrondpatronen of pictogrammen waarbij het vermijden van een HTTP-verzoek opweegt tegen het iets grotere CSS-bestand.
Is Base64-afbeeldingscodering veilig voor gevoelige afbeeldingen?
Base64 is een codering, geen versleuteling. Iedereen die de data URI kan zien, kan deze terugdecoderen naar de originele afbeelding. Vertrouw niet op Base64 om vertrouwelijke afbeeldingen te beschermen. Dit hulpmiddel verwerkt afbeeldingen volledig in je browser — er worden geen gegevens naar enige server verzonden — maar de resulterende data URI is platte tekst die leesbaar is voor iedereen met toegang tot je HTML- of CSS-broncode.
Hoe converteer ik een Base64 data URI terug naar een afbeeldingsbestand?
In JavaScript gebruik je fetch() met de data URI en roep je blob() aan op de response, waarna je een downloadlink aanmaakt. In Python splits je de string bij de komma, decodeer je het Base64-gedeelte met base64.b64decode() en schrijf je de bytes naar een bestand. Je kunt ook de Base64 Image Decoder op deze site gebruiken.
Moet ik alle afbeeldingen op mijn website Base64-coderen?
Nee. Base64-inlining is voordelig voor kleine afbeeldingen (pictogrammen, logo's, 1x1 pixels) waarbij de overhead van het HTTP-verzoek groter is dan de 33% omvangstoename. Gebruik voor grotere afbeeldingen afzonderlijke bestanden met correcte cache-headers — de browser kan ze onafhankelijk cachen en parallel laden. Een gangbare drempelwaarde is 2-8 KB: afbeeldingen onder deze grootte profiteren van inlining, terwijl grotere afbeeldingen beter als externe bestanden geserveerd kunnen worden.