Skip to content

Base64 naar PDF & bestand omzetten · PDF naar Base64

Base64 naar PDF online: plak kale Base64, een data-URI of het hele JSON-antwoord. Herkent het echte bestandstype, toont een voorbeeld, downloadt het en waarschuwt bij afgekapte PDF's. Ook PDF naar Base64. Er wordt niets geüpload.

Geen tracking Draait in je browser Gratis
Decoderen en encoderen gebeuren volledig in je browser. Je Base64 en bestanden worden nooit geüpload.

Gelezen als:

Welk bestand is deze Base64? Kijk hoe hij begint

Elk bestandstype begint met vaste “magic” bytes, dus de Base64 ervan begint met vaste tekens. De prefixen hieronder zijn berekend uit echte bestandsheaders, met dezelfde engine die deze tool gebruikt.

Base64 begint met Bestandstype Magic bytes (hex)
JVBERi0 PDF 25 50 44 46 2D
iVBORw0KGgoAAAANSUhEU PNG 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
/9j/ JPEG FF D8 FF
R0lGOD GIF 47 49 46 38
UEsDB ZIP / DOCX / XLSX / PPTX 50 4B 03 04
0M8R4KGxGu Office 97–2003 (DOC/XLS/PPT) D0 CF 11 E0 A1 B1 1A E1
H4sI Gzip 1F 8B 08
UklGR RIFF (WebP / WAV / AVI) 52 49 46 46
SUQz MP3 (ID3) 49 44 33
e1xydG RTF 7B 5C 72 74 66
Gedrag gecontroleerd aan de hand van RFC 4648, RFC 2045 en RFC 2397, en van de bestandssignaturen van PDF, PNG, ZIP en Office. — Go Tools Engineering · Sep 30, 2026

Geschreven en gecontroleerd door de engineers die de encoderingstools van Go Tools bouwen. Elke lengte, prefix en elk voorbeeld op deze pagina komt uit de engine van de pagina zelf en wordt door geautomatiseerde tests gecontroleerd.

Base64 naar PDF — korte antwoorden

Welk bestand is Base64 dat begint met JVBERi0?

JVBERi0 = PDF Een PDF. Elke PDF begint met de bytes `%PDF-`, en die worden in Base64 `JVBERi0`. `iVBORw0KGgo` is een PNG, `/9j/` een JPEG en `UEsDB` een ZIP, en daar horen ook DOCX en XLSX bij.

Hoeveel groter is Base64 dan het originele bestand?

+33,3% 4 tekens per 3 bytes, dus ongeveer 33,3% groter: een PDF van 1 MB (1.048.576 bytes) wordt 1.398.104 tekens. Met een regeleinde na elke 76 tekens, zoals bij e-mailbijlagen, zijn het er 1.434.896, oftewel 36,8% groter.

Wat is een Base64-PDF?

Base64 schrijft willekeurige bytes met maar 64 veilige teksttekens (A–Z, a–z, 0–9, +, /), met = als padding. Elke 3 bytes worden 4 tekens. Zo kan een binair bestand zoals een PDF mee via kanalen die alleen tekst vervoeren: een JSON-veld, een XML-element, de tekst van een e-mail, een tekstkolom in een database. Base64 naar PDF omzetten draait dat gewoon om: de tekens weer in bytes veranderen en die opslaan met de extensie .pdf. Het probleem is dat echte Base64 zelden schoon binnenkomt: er zit een data:-prefix voor, er staan JSON-escapes of regeleinden in, of er is een ander alfabet gebruikt, en veel converters maken dan zonder melding een bestand dat niet opengaat.

%PDF-1.4          → bytes 25 50 44 46 2D 31 2E 34
JVBERi0xLjQ=      → the same bytes in Base64
data:application/pdf;base64,JVBERi0xLjQ=   → data URI form

Functies

Plak het zoals je het kreeg

Kan overweg met data-URI's, JSON-escapes \/ en \n, aanhalingstekens, MIME-regeleinden, URL-veilige - _, %2B %2F uit URL's, PEM-headers en ontbrekende =-padding, en laat elke stap zien die het heeft gezet.

Neemt het hele JSON-antwoord

Plak {"code":0,"data":{"file":"JVBERi0…"}} zoals het is. Het langste veld dat op Base64 lijkt wordt gebruikt en het pad ervan (data.file) wordt getoond, zodat je weet welk veld is gedecodeerd.

Echt type uit de magic bytes

PDF, PNG, JPEG, GIF, WebP, DOCX, XLSX, PPTX, ZIP, GZIP, MP3, MP4 en meer dan 40 andere formaten worden herkend aan hun eerste bytes. De download krijgt de juiste extensie, ook als de prefix iets anders beweert.

Legt uit waarom een bestand niet opengaat

Signaleert een PDF zonder %%EOF (afgekapt bij het kopiëren of door een maximale kolomlengte), Base64 die twee keer is geëncodeerd, hex die als Base64 is geplakt, met gzip gecomprimeerde data en versleutelde PDF's.

Voorbeeld op de pagina

PDF's openen in de ingebouwde viewer van de browser, afbeeldingen en SVG worden weergegeven, tekst en JSON als tekst getoond. HTML wordt nooit gerenderd, alleen de broncode, omdat het anders op deze pagina zou worden uitgevoerd.

PDF of elk ander bestand naar Base64

Sleep een bestand tot 50 MB erin en krijg kale Base64 of een data-URI, eventueel URL-veilig of afgebroken op 76 tekens, met de exacte toename in grootte.

Base64 naar PDF in Python, Java, JavaScript en meer

Python

base64.b64decode

open('out.pdf', 'wb').write(base64.b64decode(s)). Gebruik urlsafe_b64decode voor - en _; b64decode negeert regeleinden, tenzij je validate=True meegeeft.

Java

java.util.Base64

Files.write(Path.of("out.pdf"), Base64.getMimeDecoder().decode(s)). getDecoder() weigert regeleinden; getUrlDecoder() is voor - en _.

Node.js

Buffer

fs.writeFileSync('out.pdf', Buffer.from(s, 'base64')). Buffer accepteert beide alfabetten en negeert witruimte, maar slaat ook elk ander ongeldig teken zonder melding over in plaats van een fout te geven. Controleer dus of het resultaat met %PDF- begint.

JavaScript in de browser

atob / Uint8Array.fromBase64

Maak een Uint8Array voordat je de Blob aanmaakt. Uint8Array.fromBase64() is de nieuwere ingebouwde variant; controleer de ondersteuning in de browsers waar je op mikt.

PHP

base64_decode

file_put_contents('out.pdf', base64_decode($s, true)). Geef true mee voor de strikte modus, anders worden ongeldige tekens zonder melding weggegooid.

C#

Convert.FromBase64String

File.WriteAllBytes("out.pdf", Convert.FromBase64String(s)). Witruimte mag; - en _ niet.

Commandoregel

base64 -d / certutil

macOS en Linux: base64 -d < in.txt > out.pdf. Windows: certutil -decode in.txt out.pdf.

Voorbeelden van Base64 naar PDF

Kale Base64 van een PDF

JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4K…
PDF · versie 1.4 · gedownload als file.pdf

Begint met JVBERi0, en dat is %PDF-. Er valt niets op te schonen, dus het wordt ongewijzigd gedecodeerd.

String gekopieerd uit een JSON-antwoord

"data:application\/pdf;base64,JVBERi0xLjQK…"
Gelezen als: aanhalingstekens eromheen verwijderd → JSON-escapes ongedaan gemaakt → data-URI-prefix verwijderd (application/pdf)

json_encode van PHP en sommige Java-serializers schrijven / als \/. Plak je dat in een decoder die dat niet terugdraait, dan is de backslash een ongeldig teken.

Compleet API-antwoord

{"code":0,"data":{"name":"invoice.pdf","file":"JVBERi0xLjQK…"}}
Gelezen als: veld data.file uit de JSON gehaald

Je hoeft de string niet met de hand uit te knippen. Het langste veld dat op Base64 lijkt wordt gebruikt en het pad wordt getoond.

Gelabeld als PDF, maar eigenlijk een PNG

data:application/pdf;base64,iVBORw0KGgoAAAANSUhEUgAA…
Waarschuwing: de data-URI zegt application/pdf, maar de bytes zijn PNG. Opgeslagen als file.png

Veel converters zouden een .pdf wegschrijven die geen enkele reader kan openen. De magic bytes gaan boven het label.

Hex geplakt in plaats van Base64

255044462d312e370a…
Waarschuwing: dit lijkt hexadecimaal — als hex gelezen is het een PDF. [Als hex decoderen]

Hexcijfers zijn allemaal geldige Base64-tekens, dus Base64-decodering mislukt niet, maar levert zonder melding onzin op. 25 50 44 46 is %PDF.

Zo zet je Base64 om naar PDF

  1. 1

    Plak de Base64 zoals je hem kreeg

    Kale Base64, data:application/pdf;base64,…, een string uit JSON met \/-escapes of het hele API-antwoord. Gebruik voor heel lange strings .txt-bestand openen in plaats van plakken.

  2. 2

    Controleer hoe het is gelezen

    De regel onder het vak noemt elke opschoonstap: prefix verwijderd, escapes ongedaan gemaakt, padding aangevuld, veld uit de JSON gehaald. Klopt er iets niet, dan noemt de foutmelding het precieze teken en de positie.

  3. 3

    Bekijk het herkende type en de waarschuwingen

    De badge toont het type dat uit de magic bytes van het bestand is gelezen. Er verschijnt een gele melding als het eigenlijk geen PDF is, als de data-URI over het type liegt of als de PDF vóór %%EOF ophoudt.

  4. 4

    Voorbeeld bekijken en downloaden

    PDF's openen in de ingebouwde viewer van de browser, afbeeldingen en tekst worden direct getoond. Geef het bestand eventueel een andere naam en klik op Downloaden. Voor de omgekeerde richting schakel je over naar PDF / bestand → Base64 en sleep je er een bestand in.

Waarom een Base64-PDF niet opengaat: veelgemaakte fouten

De data-URI-prefix mee decoderen

data:application/pdf;base64, hoort niet bij de Base64. Laat je het staan, dan krijg je een fout (: en ; zijn ongeldig) of, bij tolerante decoders, beschadigde eerste bytes, waardoor het bestand niet meer met %PDF- begint.

✗ Fout
base64.b64decode(value)  # value = 'data:application/pdf;base64,JVBERi0…'
✓ Correct
b64 = value.split(',', 1)[1] if value.startswith('data:') else value
pdf = base64.b64decode(b64)

De gedecodeerde bytes als tekst wegschrijven

Een PDF is binair. Zet je de gedecodeerde bytes om naar een string en schrijf je die weg met een tekencodering, dan worden ongeldige bytes vervangen en regeleinden aangepast, en daarmee is de kruisverwijzingstabel (xref) stuk.

✗ Fout
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64').toString())
✓ Correct
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64'))

Strikte decoder krijgt afgebroken Base64

Base64.getDecoder() van Java weigert regeleinden. Base64 uit e-mail of uit base64 op Linux is afgebroken op 76 tekens. Gebruik de MIME-decoder of haal eerst de witruimte weg.

✗ Fout
byte[] pdf = Base64.getDecoder().decode(wrapped);  // IllegalArgumentException
✓ Correct
byte[] pdf = Base64.getMimeDecoder().decode(wrapped);

URL-veilige Base64 in een standaarddecoder

JWT's en veel URL-parameters gebruiken - en _ in plaats van + en /, en laten de =-padding weg. Een standaarddecoder weigert ze of decodeert de verkeerde bytes.

✗ Fout
base64.b64decode(token_part)  # contains - and _
✓ Correct
base64.urlsafe_b64decode(token_part + '=' * (-len(token_part) % 4))

Het resultaat van atob() als tekst gebruiken

In de browser geeft atob een binaire string terug, één teken per byte. Geef je die door aan new Blob([str]), dan wordt hij als UTF-8 geëncodeerd en wordt elke byte boven 127 twee bytes. Kopieer hem eerst naar een Uint8Array.

✗ Fout
new Blob([atob(b64)], { type: 'application/pdf' })
✓ Correct
const bytes = Uint8Array.from(atob(b64), c => c.charCodeAt(0));
new Blob([bytes], { type: 'application/pdf' })

Afgekapte string

Een PDF eindigt met %%EOF. Is de Base64 ingekort door een VARCHAR-kolom, een limiet op logregels of een onvolledige kopie, dan valt het bestand wel te decoderen, maar tonen readers een fout of ontbrekende pagina's. Vergelijk de lengte met wat de afzender heeft gemaakt.

✗ Fout
SELECT LENGTH(pdf_b64) FROM docs;  -- 65535: suspiciously round
✓ Correct
ALTER TABLE docs MODIFY pdf_b64 LONGTEXT;  -- or store the bytes in a BLOB

Wanneer je Base64 naar PDF nodig hebt

Een API geeft de PDF terug als Base64
API's voor facturatie, e-handtekeningen en verzendlabels sturen documenten vaak in JSON terug. Plak het antwoord hier om het document te controleren voordat je de code schrijft die het opslaat.
Een PDF debuggen die niet opengaat
Is het opgeslagen bestand leeg of beschadigd, plak dan dezelfde Base64 hier. De tool vertelt je of het afgekapt is, dubbel geëncodeerd, helemaal geen PDF, of in orde, en in dat laatste geval zit de bug in hoe je code het bestand wegschrijft.
Een bestand meesturen in een JSON-request
Veel upload-endpoints verwachten {"filename": …, "content": "<base64>"}. Encodeer het bestand hier om een testrequest voor Postman of cURL op te bouwen.
Een bestand insluiten in HTML, CSS of e-mail
Maak een data-URI voor een inline PDF-link, een lettertype of een kleine afbeelding, of Base64 met 76 kolommen voor een MIME-deel van een e-mail.
Bijlagen uit logs en databases halen
Bestanden die in een tekstkolom staan of naar een log zijn geschreven, haal je er zo weer uit, en een ontbrekende %%EOF vertelt je dat de kolom of de logregel te kort was.

Zo werkt Base64-encodering van bestanden

Waarom Base64 33% groter is
Elk teken draagt 6 bits, dus 3 bytes (24 bits) hebben 4 tekens nodig. Met padding is de lengte 4 × ⌈n ÷ 3⌉: 100 KB (102.400 bytes) wordt 136.536 tekens. MIME-afbreking voegt na elke 76 tekens een CRLF toe, dus 1 MB wordt 1.434.896 in plaats van 1.398.104.
Standaard en URL-veilig alfabet
RFC 4648 definieert twee alfabetten die alleen in de laatste twee tekens verschillen: + / (standaard, sectie 4) en - _ (veilig voor URL's en bestandsnamen, sectie 5). URL-veilige Base64 laat de =-padding meestal weg. Staan beide door elkaar in één string, dan is die bewerkt of samengevoegd.
Padding en onmogelijke lengtes
De padding = maakt de lengte een veelvoud van 4. Zonder padding is een rest van 2 of 3 te herstellen; een rest van 1 is onmogelijk voor geldige Base64: er is een teken kwijtgeraakt of bijgekomen. Een = in het midden betekent meestal dat twee strings aan elkaar zijn geplakt.
Magic bytes bepalen het type
Een bestand geeft zijn formaat aan in de eerste bytes: %PDF- voor PDF, 89 50 4E 47 voor PNG, 50 4B 03 04 voor op ZIP gebaseerde formaten zoals DOCX en XLSX. Die bytes leggen de eerste Base64-tekens vast, dus het type is al vóór het decoderen af te lezen; zie de tabel in de tool.
Zo wordt een afgekapte PDF herkend
Een PDF eindigt met %%EOF. Staat die niet in de laatste 1.024 bytes, dan is het bestand vrijwel zeker ingekort. De header mag tot 1.024 bytes na het begin staan; de meeste readers openen zulke bestanden toch, dus dat wordt gemeld maar niet geweigerd.

Aanbevolen aanpak voor bestanden als Base64

Stuur het MIME-type en de bestandsnaam mee
Base64 bevat geen naam of type. Zet ze er allebei naast ({"filename": "invoice.pdf", "mime": "application/pdf", "content": "…"}) of gebruik een data-URI, zodat de ontvanger niet hoeft te raden.
Controleer de magic bytes aan de ontvangende kant
Controleer vóór het opslaan of de gedecodeerde bytes met %PDF- beginnen. Zo vang je verkeerde velden, dubbele encodering en foutpagina's die als Base64 zijn teruggestuurd met één regel code af.
Kies voor grote bestanden multipart of een URL
Base64 maakt het bestand een derde groter en de hele string moet in het geheugen staan. Boven een paar megabyte is multipart/form-data of een vooraf ondertekende download-URL lichter voor beide kanten.
Sla bytes op in de database, geen Base64
Een BLOB/bytea-kolom is een derde kleiner en kan niet zonder melding worden afgekapt zoals een VARCHAR. Encodeer pas naar Base64 op de grens van de API.

Base64 naar PDF — veelgestelde vragen

Hoe zet ik Base64 om naar PDF?
Plak de Base64 in het vak op deze pagina. Hij wordt meteen gedecodeerd, de PDF opent in het voorbeeld en met Downloaden sla je hem op als .pdf. De prefix data:application/pdf;base64,, aanhalingstekens, regeleinden en JSON-escapes mogen blijven staan; die worden automatisch verwijderd.
Waarom gaat mijn gedecodeerde PDF niet open?
De gebruikelijke oorzaken: de data:-prefix is als onderdeel van de data gedecodeerd; de bytes zijn als tekst in plaats van binair weggeschreven; de string is afgekapt (geen %%EOF aan het eind); de Base64 is twee keer geëncodeerd; of het is helemaal geen PDF, bijvoorbeeld een PNG of een JSON-foutmelding. Plak dezelfde string hier: elk van deze gevallen geeft een eigen waarschuwing.
Wordt mijn bestand naar een server geüpload?
Nee. Decoderen, typeherkenning, voorbeeld en encoderen draaien allemaal met JavaScript in je browser. Niets wat je plakt of erin sleept gaat ergens heen, dus het is veilig voor facturen, contracten en identiteitsbewijzen.
Hoe weet ik welk type bestand de Base64 is?
Kijk hoe hij begint: JVBERi0 is PDF, iVBORw0KGgo is PNG, /9j/ is JPEG, R0lGOD is GIF, UEsDB is ZIP (en dus ook DOCX, XLSX, PPTX), H4sI is gzip. De tool leest de magic bytes na het decoderen, toont het type en slaat het bestand op met de bijpassende extensie.
Kan ik Base64 omzetten naar Word, Excel, een afbeelding of een ZIP?
Ja. Elk bestandstype is te decoderen; de extensie volgt uit de inhoud. DOCX, XLSX en PPTX worden herkend binnen de ZIP-container, en oudere DOC-/XLS-bestanden als Office 97–2003. Afbeeldingen, audio en video krijgen een voorbeeld; andere types worden direct gedownload.
Hoe zet ik een PDF om naar Base64?
Open het tabblad PDF / bestand → Base64 en sleep de PDF erin. Kies kale Base64 of een data-URI, eventueel URL-veilig of afgebroken op 76 tekens, en kopieer het resultaat of download het als .txt-bestand.
Wat is het verschil tussen Base64 en een data-URI?
Een data-URI is Base64 met een kop die het type vermeldt: data:application/pdf;base64,JVBERi0…. Browsers kunnen hem direct openen als link of src. API's willen meestal alleen het Base64-deel na de komma.
Waarom staat er “Dit is geen PDF”?
Omdat de gedecodeerde bytes niet met %PDF- beginnen. Het getoonde type is wat de bytes werkelijk zijn. Veelvoorkomende verrassingen zijn een PNG- of JPEG-scan, een DOCX, een ZIP met meerdere PDF's, of een JSON- of HTML-foutmelding die in plaats van het document als Base64 is geëncodeerd.
Wat betekent “geen %%EOF aan het eind”?
Elke PDF eindigt met de markering %%EOF. Ontbreekt die, dan is de Base64 vrijwel zeker afgekapt: maar deels gekopieerd, ingekort door een databasekolom zoals MySQL TEXT (65.535 bytes) of door een limiet op logregels. Haal de volledige string opnieuw op; ontbrekende data kan decoderen niet terugtoveren.
Wat betekent “nog een keer gedecodeerd”?
De gedecodeerde data was zelf weer Base64-tekst. Dat gebeurt als een waarde één keer door je eigen code wordt geëncodeerd en daarna nog eens door een framework of HTTP-client. De tool decodeert de binnenste laag alleen als daar een herkenbaar bestand uit komt, zodat gewone tekst nooit per ongeluk wordt uitgepakt.
Is er een maximale grootte?
Geplakte tekst mag tot 100 MB zijn en bestanden om te encoderen tot 50 MB. Voor heel lange Base64 is .txt-bestand openen sneller dan plakken. Het tekstvoorbeeld toont de eerste 100.000 tekens; de download is altijd compleet.
Waarom is het PDF-voorbeeld leeg op mijn telefoon?
Mobiele browsers gaan verschillend om met ingesloten PDF's; sommige tonen alleen de eerste pagina of helemaal niets. Gebruik Openen in nieuw tabblad of Downloaden; het bestand zelf is in orde.

Gerelateerde tools

Alle tools bekijken →