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.
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.
Gelezen als:
Sleep hier een PDF of een ander bestand naartoe, of klik om te bladeren
Elk bestandstype · tot 50 MB · nooit geüpload
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 | 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 |
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.
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.
+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.
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
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.
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.
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.
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.
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.
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.b64decode open('out.pdf', 'wb').write(base64.b64decode(s)). Gebruik urlsafe_b64decode voor - en _; b64decode negeert regeleinden, tenzij je validate=True meegeeft.
java.util.Base64 Files.write(Path.of("out.pdf"), Base64.getMimeDecoder().decode(s)). getDecoder() weigert regeleinden; getUrlDecoder() is voor - en _.
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.
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.
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.
Convert.FromBase64String File.WriteAllBytes("out.pdf", Convert.FromBase64String(s)). Witruimte mag; - en _ niet.
base64 -d / certutil macOS en Linux: base64 -d < in.txt > out.pdf. Windows: certutil -decode in.txt out.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.
"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.
{"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.
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.
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.
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.
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.
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.
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.
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.
base64.b64decode(value) # value = 'data:application/pdf;base64,JVBERi0…'
b64 = value.split(',', 1)[1] if value.startswith('data:') else value
pdf = base64.b64decode(b64) 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.
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64').toString()) fs.writeFileSync('out.pdf', Buffer.from(b64, '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.
byte[] pdf = Base64.getDecoder().decode(wrapped); // IllegalArgumentException
byte[] pdf = Base64.getMimeDecoder().decode(wrapped);
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.
base64.b64decode(token_part) # contains - and _
base64.urlsafe_b64decode(token_part + '=' * (-len(token_part) % 4))
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.
new Blob([atob(b64)], { type: 'application/pdf' }) const bytes = Uint8Array.from(atob(b64), c => c.charCodeAt(0));
new Blob([bytes], { type: 'application/pdf' }) 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.
SELECT LENGTH(pdf_b64) FROM docs; -- 65535: suspiciously round
ALTER TABLE docs MODIFY pdf_b64 LONGTEXT; -- or store the bytes in a BLOB
{"filename": …, "content": "<base64>"}. Encodeer het bestand hier om een testrequest voor Postman of cURL op te bouwen.%%EOF vertelt je dat de kolom of de logregel te kort was.+ / (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.= 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.%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.%%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.{"filename": "invoice.pdf", "mime": "application/pdf", "content": "…"}) of gebruik een data-URI, zodat de ontvanger niet hoeft te raden.%PDF- beginnen. Zo vang je verkeerde velden, dubbele encodering en foutpagina's die als Base64 zijn teruggestuurd met één regel code af.multipart/form-data of een vooraf ondertekende download-URL lichter voor beide kanten.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.data:application/pdf;base64,, aanhalingstekens, regeleinden en JSON-escapes mogen blijven staan; die worden automatisch verwijderd. 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. 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. 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. %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. %%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. Encodering en formattering
De volledige ASCII-tabel: 128 tekens in decimaal, hex, octaal en binair, plus een converter die beide kanten op werkt. Stuurtekens met escape-sequenties, caret-notatie en de plek waar je ze echt tegenkomt.
Encodering en formattering
Genereer EAN-13, UPC-A, Code 128, Code 39 en 11 andere soorten barcodes als SVG of afdrukklare PNG. Typ 12 cijfers; het controlecijfer wordt aangevuld. Is er één fout, dan noemen we het cijfer dat het moet zijn.
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
Encodering en formattering
Decodeer een Base64-string of data-URI terug naar een afbeelding in je browser. Bekijk voorbeeld, lees afmetingen & MIME, download als PNG, JPG, GIF, SVG. Geen upload.
Encodering en formattering
Zet CSV om naar JSON in uw browser. RFC 4180, type-afleiding, headerregel, big-int veilig. 100% privé, geen upload.
Encodering en formattering
Plak verminkte tekst en krijg het origineel terug. Elke plausibele coderingsketen — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — wordt geprobeerd en gerangschikt, met de keten erbij. Gratis: alles draait in je browser.