Skip to content

Base64 から PDF・ファイルに変換(PDF → Base64 も対応)

Base64 を PDF に変換するオンラインツール。生の Base64、data URI、JSON の値や API レスポンス全体もそのまま貼り付けるだけ。先頭バイトから本当のファイル形式を判定してプレビュー・ダウンロードし、途中で切れた PDF など開けない原因も表示します。PDF → Base64 にも対応、アップロードは一切なし。

トラッキングなし ブラウザで動作 無料
デコードとエンコードはすべてブラウザ内で行われます。Base64 もファイルもアップロードされません。

前処理:

この Base64 は何のファイル? 先頭の文字で見分ける

ファイル形式ごとに決まった「マジック」バイトで始まるため、その Base64 も決まった文字で始まります。下の表のプレフィックスは、このツールと同じエンジンが実際のファイルヘッダーから算出したものです。

Base64 の先頭 ファイル形式 マジックバイト(16 進数)
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
RFC 4648、RFC 2045、RFC 2397、および PDF・PNG・ZIP・Office のファイルシグネチャと照らし合わせて動作を確認しています。 — Go Tools エンジニアリングチーム · Sep 30, 2026

Go Tools のエンコード系ツールを開発しているエンジニアが執筆・レビューしています。このページに載っている長さ、プレフィックス、例はすべてページ自身のエンジンで算出し、自動テストで検証しています。

Base64 PDF 変換 — すぐわかる答え

JVBERi0 で始まる Base64 は何のファイル?

JVBERi0 = PDF PDF です。すべての PDF はバイト列 `%PDF-` で始まり、これを Base64 にすると `JVBERi0` になります。同様に `iVBORw0KGgo` は PNG、`/9j/` は JPEG、`UEsDB` は ZIP(DOCX や XLSX も ZIP 形式)です。

Base64 は元のファイルよりどれくらい大きくなる?

+33.3% 3 バイトごとに 4 文字になるため、約 33.3% 増えます。1 MB(1,048,576 バイト)の PDF は 1,398,104 文字です。メール添付のように 76 文字ごとに改行を入れると 1,434,896 文字、約 36.8% 増になります。

Base64 PDF とは?

Base64 は、任意のバイト列を 64 種類の安全なテキスト文字(A–Z、a–z、0–9、+、/)とパディングの = だけで表す方式で、3 バイトが 4 文字になります。これにより、PDF のようなバイナリファイルを JSON のフィールド、XML の要素、メール本文、データベースのテキスト列など、テキストしか通さない経路に載せられます。Base64 から PDF への変換はその逆で、文字をバイトに戻して .pdf 拡張子で保存するだけです。問題は、実際に手元に届く Base64 がきれいな形であることはまれだという点です。data: プレフィックス、JSON エスケープ、改行、別のアルファベットが混じっていることが多く、多くの変換ツールは黙って開けないファイルを作ってしまいます。

%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

主な機能

受け取ったまま貼り付けられる

data URI、\/ や \n の JSON エスケープ、引用符、MIME の改行、URL セーフの - _、URL からコピーした %2B %2F、PEM ヘッダー、欠けた = パディングを自動で処理し、行った手順を一つずつ表示します。

JSON レスポンス全体を受け付ける

{"code":0,"data":{"file":"JVBERi0…"}} をそのまま貼り付けてください。最も Base64 らしい一番長いフィールドを使い、そのパス(data.file)を表示するので、どのフィールドをデコードしたかがわかります。

マジックバイトで本当の形式を判定

PDF、PNG、JPEG、GIF、WebP、DOCX、XLSX、PPTX、ZIP、GZIP、MP3、MP4 など 50 種類以上を先頭バイトから識別します。プレフィックスの記載が違っていても、ダウンロード時は正しい拡張子が付きます。

開けないファイルの原因を説明

%%EOF のない PDF(コピー漏れや列の長さ制限で途中切れ)、二重にエンコードされた Base64、Base64 として貼られた 16 進数、gzip 圧縮されたデータ、暗号化された PDF をそれぞれ個別に警告します。

その場でプレビュー

PDF はブラウザ内蔵のビューアで開き、画像と SVG は画像として、テキストと JSON はテキストとして表示します。HTML はこのページ上で実行されてしまうため、描画せずソースだけを表示します。

PDF や任意のファイルを Base64 に

最大 50 MB のファイルをドロップすると、プレーンな Base64 または data URI を出力します。URL セーフや 76 文字改行も選べ、サイズの増加率も正確に表示します。

Python・Java・JavaScript などで Base64 を PDF に変換

Python

base64.b64decode

open('out.pdf', 'wb').write(base64.b64decode(s))。- と _ を含む場合は urlsafe_b64decode を使います。b64decode は validate=True を渡さない限り改行を無視します。

Java

java.util.Base64

Files.write(Path.of("out.pdf"), Base64.getMimeDecoder().decode(s))。getDecoder() は改行を拒否し、getUrlDecoder() は - と _ 用です。

Node.js

Buffer

fs.writeFileSync('out.pdf', Buffer.from(s, 'base64'))。Buffer は両方のアルファベットを受け付けて空白も無視しますが、それ以外の不正な文字もエラーにせず黙って読み飛ばすので、結果が %PDF- で始まるか確認してください。

ブラウザの JavaScript

atob / Uint8Array.fromBase64

Blob を作る前に Uint8Array を組み立てます。Uint8Array.fromBase64() は新しい組み込みメソッドなので、対象ブラウザの対応状況を確認してください。

PHP

base64_decode

file_put_contents('out.pdf', base64_decode($s, true))。true を渡して厳格モードにしないと、不正な文字が黙って捨てられます。

C#

Convert.FromBase64String

File.WriteAllBytes("out.pdf", Convert.FromBase64String(s))。空白は許容されますが、- と _ は受け付けません。

コマンドライン

base64 -d / certutil

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

Base64 PDF 変換の例

PDF のプレーンな Base64

JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4K…
PDF · バージョン 1.4 · file.pdf として保存

JVBERi0、つまり %PDF- で始まっています。整える必要がないので、そのままデコードします。

JSON レスポンスからコピーした文字列

"data:application\/pdf;base64,JVBERi0xLjQK…"
前処理:前後の引用符を削除 → JSON エスケープを復元 → data URI プレフィックスを削除(application/pdf)

PHP の json_encode や一部の Java シリアライザは / を \/ と書き出します。これを復元しないデコーダーに貼り付けると、バックスラッシュが不正な文字になります。

API レスポンス全体

{"code":0,"data":{"name":"invoice.pdf","file":"JVBERi0xLjQK…"}}
前処理:JSON からフィールド data.file を取り出し

文字列を手で切り出す必要はありません。最も Base64 らしい一番長いフィールドを使い、そのパスを表示します。

PDF と書かれているが中身は PNG

data:application/pdf;base64,iVBORw0KGgoAAAANSUhEUgAA…
注意:data URI は application/pdf ですが、中身は PNG です。file.png として保存しました

多くの変換ツールは、どのビューアでも開けない .pdf を書き出してしまいます。ここではラベルよりマジックバイトを優先します。

Base64 のつもりで 16 進数を貼り付けた

255044462d312e370a…
注意:これは 16 進数のようです。16 進数として読むと PDF です。[16 進数としてデコード]

16 進数の文字はすべて Base64 として有効な文字なので、Base64 デコードは失敗せず、黙って意味のないデータを生成します。25 50 44 46 は %PDF です。

Base64 を PDF に変換する方法

  1. 1

    Base64 を受け取ったまま貼り付ける

    生の Base64、data:application/pdf;base64,…、\/ エスケープ付きで JSON からコピーした文字列、API レスポンス全体のどれでも構いません。非常に長い文字列は貼り付けより「.txt ファイルを開く」のほうが確実です。

  2. 2

    どう読み取られたかを確認する

    入力欄の下に、プレフィックスの削除、エスケープの復元、パディングの補完、JSON から取り出したフィールドなど、行った前処理がすべて並びます。入力に問題があれば、エラーが該当する文字と位置を示します。

  3. 3

    判定された形式と警告を確認する

    バッジにはファイルのマジックバイトから読み取った形式が表示されます。実は PDF ではない場合、data URI の宣言と中身が食い違う場合、PDF が %%EOF の手前で切れている場合は黄色の注意が出ます。

  4. 4

    プレビューしてダウンロード

    PDF はブラウザ内蔵のビューアで開き、画像やテキストはその場に表示されます。必要ならファイル名を変えて「ダウンロード」をクリック。逆方向は「PDF / ファイル → Base64」に切り替えてファイルをドロップします。

Base64 から変換した PDF が開けない:よくある間違い

data URI プレフィックスごとデコードしてしまう

data:application/pdf;base64, は Base64 の一部ではありません。残したままだとエラーになる(: と ; は不正な文字)か、寛容なデコーダーでは先頭のバイトが壊れ、ファイルが %PDF- で始まらなくなります。

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

デコードしたバイト列をテキストとして書き込む

PDF はバイナリです。デコード結果を文字列に変換してテキストエンコーディングで書き出すと、不正なバイトが置き換えられ改行コードも変わるため、相互参照テーブルが壊れます。

✗ 誤り
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64').toString())
✓ 正しい
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64'))

改行入りの Base64 を厳格なデコーダーに渡す

Java の Base64.getDecoder() は改行を受け付けません。一方、メールや Linux の base64 コマンドが出力する Base64 は 76 文字ごとに改行されています。MIME デコーダーを使うか、先に空白を取り除いてください。

✗ 誤り
byte[] pdf = Base64.getDecoder().decode(wrapped);  // IllegalArgumentException
✓ 正しい
byte[] pdf = Base64.getMimeDecoder().decode(wrapped);

URL セーフな Base64 を標準デコーダーに渡す

JWT や多くの URL パラメータは + と / の代わりに - と _ を使い、= パディングを省略します。標準デコーダーはこれを拒否するか、誤ったバイトにデコードします。

✗ 誤り
base64.b64decode(token_part)  # contains - and _
✓ 正しい
base64.urlsafe_b64decode(token_part + '=' * (-len(token_part) % 4))

atob() の結果をテキストのまま使う

ブラウザの atob は 1 バイトを 1 文字とする「バイナリ文字列」を返します。これをそのまま new Blob([str]) に渡すと UTF-8 でエンコードされ、127 を超えるバイトはすべて 2 バイトになります。先に Uint8Array へコピーしてください。

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

文字列が途中で切れている

PDF は %%EOF で終わります。Base64 が VARCHAR 列、ログの行長制限、コピー漏れで切れていても、デコード自体はできますが、ビューアはエラーを出すかページが欠けます。送信側が出力した長さと比べてください。

✗ 誤り
SELECT LENGTH(pdf_b64) FROM docs;  -- 65535: suspiciously round
✓ 正しい
ALTER TABLE docs MODIFY pdf_b64 LONGTEXT;  -- or store the bytes in a BLOB

Base64 PDF 変換が必要な場面

API が PDF を Base64 で返してくる
請求書、電子署名、送り状印刷などの API は、書類を JSON に入れて返すことがよくあります。保存処理のコードを書く前に、レスポンスを貼り付けて中身の書類を確認できます。
開けない PDF のデバッグ
保存したファイルが真っ白、または壊れていると言われたら、同じ Base64 をここに貼り付けてください。途中で切れている、二重エンコードされている、そもそも PDF ではない、あるいは問題なし、のどれかがわかります。問題なしなら、原因はファイルを書き出すコードの側です。
JSON リクエストでファイルを送る
多くのアップロード API は {"filename": …, "content": "<base64>"} の形式を求めます。ここでファイルをエンコードして、Postman や cURL 用のテストリクエストを組み立てられます。
HTML・CSS・メールにファイルを埋め込む
インラインの PDF リンク、フォント、小さな画像用の data URI や、MIME メールのパート用に 76 文字で改行した Base64 を作成できます。
ログやデータベースから添付ファイルを取り出す
テキスト列に保存されたファイルやログに出力されたファイルを、そのまま元に戻せます。%%EOF がないと表示されたら、列やログの行が短すぎて切れていたということです。

Base64 によるファイルエンコードの仕組み

Base64 が 33% 大きくなる理由
1 文字が運べるのは 6 ビットなので、3 バイト(24 ビット)には 4 文字が必要です。パディング込みの長さは 4 × ⌈n ÷ 3⌉ で、100 KB(102,400 バイト)は 136,536 文字になります。MIME 形式では 76 文字ごとに CRLF が入るため、1 MB は 1,398,104 文字ではなく 1,434,896 文字になります。
標準アルファベットと URL セーフアルファベット
RFC 4648 は、最後の 2 文字だけが異なる 2 つのアルファベットを定義しています。+ /(標準、4 章)と - _(URL・ファイル名セーフ、5 章)です。URL セーフな Base64 は通常 = パディングを省略します。1 つの文字列に両方が混ざっている場合、編集されたか連結されたものです。
パディングとあり得ない長さ
= パディングは長さを 4 の倍数にそろえるためのものです。パディングがない場合、4 で割った余りが 2 か 3 なら復元できますが、余り 1 は正しい Base64 では起こり得ません。コピー時に 1 文字欠けたか増えたということです。途中に = がある場合は、たいてい 2 つの文字列が連結されています。
形式はマジックバイトで決まる
ファイルは先頭のバイトで自分の形式を示します。PDF は %PDF-、PNG は 89 50 4E 47、DOCX や XLSX などの ZIP ベースの形式は 50 4B 03 04 です。これらのバイトが Base64 の先頭文字を決めるので、デコードする前に形式を読み取れます。ツール内の対応表を参照してください。
途中で切れた PDF の見分け方
PDF は %%EOF で終わります。末尾 1,024 バイトの中にそれが見つからなければ、ファイルはほぼ確実に途中で切れています。ヘッダーは先頭から 1,024 バイト以内のどこかで始まってもよく、ほとんどのビューアはそのようなファイルも開けるため、報告はしますが拒否はしません。

ファイルを Base64 で送るときのベストプラクティス

MIME タイプとファイル名をデータと一緒に送る
Base64 自体には名前も形式も含まれません。両方を横に並べる({"filename": "invoice.pdf", "mime": "application/pdf", "content": "…"})か、data URI を使えば、受信側が推測する必要がなくなります。
受信側でマジックバイトを確認する
保存する前に、デコード結果が %PDF- で始まるかを確かめてください。フィールドの取り違え、二重エンコード、Base64 化されたエラーページを、1 行のコードで検出できます。
大きなファイルは multipart か URL で
Base64 はサイズを 3 分の 1 増やし、文字列全体をメモリに載せる必要があります。数 MB を超えるなら、multipart/form-data や署名付きダウンロード URL のほうが送信側・受信側ともに軽くなります。
データベースには Base64 ではなくバイト列を保存する
BLOB/bytea 列なら 3 分の 1 小さく、VARCHAR のように黙って切り詰められることもありません。Base64 へのエンコードは API の境界でだけ行いましょう。

Base64 PDF 変換 — よくある質問

Base64 を PDF に変換するには?
このページの入力欄に Base64 を貼り付けるだけです。すぐにデコードされ、PDF がプレビューに表示されます。「ダウンロード」で .pdf として保存できます。data:application/pdf;base64, プレフィックス、引用符、改行、JSON エスケープは残したままで構いません。自動で取り除かれます。
デコードした PDF が開けないのはなぜ?
よくある原因は次のとおりです。data: プレフィックスをデータの一部としてデコードした、バイト列をバイナリではなくテキストとして書き込んだ、文字列が途中で切れている(末尾に %%EOF がない)、Base64 が二重にエンコードされている、そもそも PDF ではない(PNG 画像や JSON のエラーメッセージなど)。同じ文字列をここに貼り付ければ、どのケースでもそれぞれ専用の警告が表示されます。
ファイルはサーバーにアップロードされますか?
いいえ。デコード、形式判定、プレビュー、エンコードはすべてブラウザ内の JavaScript で実行されます。貼り付けた内容もドロップしたファイルもどこにも送信されないので、請求書、契約書、身分証明書でも安心して使えます。
Base64 が何のファイルかを見分けるには?
先頭を見てください。JVBERi0 は PDF、iVBORw0KGgo は PNG、/9j/ は JPEG、R0lGOD は GIF、UEsDB は ZIP(つまり DOCX、XLSX、PPTX も)、H4sI は gzip です。このツールはデコード後のマジックバイトを読んで形式を表示し、対応する拡張子で保存します。
Base64 を Word、Excel、画像、ZIP に変換できますか?
できます。どの形式のファイルもデコードでき、拡張子は中身から決まります。DOCX、XLSX、PPTX は ZIP コンテナの中身から見分け、古い DOC/XLS ファイルは Office 97–2003 として認識します。画像、音声、動画はプレビューでき、それ以外の形式はそのままダウンロードします。
PDF を Base64 に変換するには?
「PDF / ファイル → Base64」タブを開いて PDF をドロップします。プレーンな Base64 か data URI を選び、必要なら URL セーフや 76 文字改行をオンにして、コピーするか .txt ファイルとしてダウンロードします。
Base64 と data URI の違いは?
data URI は、Base64 の前に形式を示すヘッダーを付けたものです:data:application/pdf;base64,JVBERi0…。ブラウザはこれをリンクや src として直接開けます。API が求めるのは通常、カンマより後ろの Base64 部分だけです。
「これは PDF ではありません」と表示されるのはなぜ?
デコードしたバイト列が %PDF- で始まっていないからです。表示される形式は、そのバイト列の実際の形式です。よくあるのは、スキャン画像が実は PNG や JPEG だった、DOCX だった、複数の PDF をまとめた ZIP だった、あるいは書類の代わりに JSON や HTML のエラーメッセージが Base64 化されていた、というケースです。
「末尾に %%EOF がない」とはどういう意味?
すべての PDF は %%EOF というマーカーで終わります。これがない場合、Base64 はほぼ確実に途中で切れています。一部しかコピーされなかった、MySQL の TEXT(65,535 バイト)のようなデータベース列で切り詰められた、ログの行長制限で短くなった、などです。完全な文字列を取得し直してください。欠けたデータはデコードでは取り戻せません。
「もう一度デコードしました」とはどういう意味?
デコードしたデータ自体が Base64 のテキストだったということです。自分のコードで一度エンコードし、フレームワークや HTTP クライアントがさらにもう一度エンコードした場合に起こります。内側の層を解くのは、それが認識できるファイルだった場合だけなので、普通のテキストを誤って展開することはありません。
サイズの上限はありますか?
貼り付けるテキストは最大 100 MB、エンコードするファイルは最大 50 MB です。非常に長い Base64 は、貼り付けるより「.txt ファイルを開く」のほうが速く読み込めます。テキストのプレビューは先頭 100,000 文字までですが、ダウンロードは常に完全なファイルです。
スマートフォンで PDF のプレビューが真っ白になるのはなぜ?
モバイルブラウザは埋め込み PDF の扱いがまちまちで、1 ページ目しか表示しないものや何も表示しないものがあります。「新しいタブで開く」か「ダウンロード」を使ってください。ファイル自体には問題ありません。

ASCIIコード表・アスキー変換ツール

エンコーディングとフォーマット

ASCII 128文字の完全なコード表。10進・16進・8進・2進を並べ、文字⇔ASCIIコードの双方向変換もその場でできます。制御文字には各言語のエスケープ、キャレット表記、そして実際にどこで出会うかを併記。すべてブラウザ内で動作し、入力は送信されません。

無料バーコード生成 — EAN-13・UPC-A・Code 128

エンコーディングとフォーマット

EAN-13、UPC-A、Code 128、Code 39など15種類のバーコードをSVGまたは印刷用PNGで生成。12桁を入力すればチェックディジットは自動計算されます。末尾が違っていれば、本来あるべき数字をその場で指摘します。

Base64エンコーダー&デコーダー

エンコーディングとフォーマット

Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。

Base64 画像変換ツール

エンコーディングとフォーマット

Base64 文字列やデータURIをブラウザ上で画像に戻します。プレビューし、寸法と MIME を確認して、PNG・JPG・GIF・SVG としてダウンロード。アップロード不要。

CSV to JSON 変換ツール

エンコーディングとフォーマット

CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。

エンコード変換・文字化け修復ツール

エンコーディングとフォーマット

文字化けしたテキストを貼り付けるだけで元の文字列を復元します。UTF-8、GBK、Big5、Shift_JIS、EUC-KR、Windows-1252 の組み合わせを総当たりで試し、往復検証を通ったチェーンを上位に並べて表示。各エンコードでのバイト対照と hex からの逆変換も可能です。無料・ブラウザ内処理で、貼り付けた内容は送信されません。