ファイルを Base64 に変換する方法
- 1 つ以上のファイルを枠にドロップするか、ファイル選択を使うか、コピーしたファイルを Ctrl+V で貼り付けます。
- 出力形式 を選びます。プレーン Base64(このページのデフォルト)、Data URI、HTML
<a download>、JSON、それに画像やフォント用のラッパーがあります。 - 必要なら設定を変えます。URLセーフ(- _) は
+と/を-と_に置き換え、76 文字で折り返し は MIME メール向けに改行を入れます。 - 出力をコピー するか、.txt で保存 で
filename.ext.b64.txtを保存します。
複数のファイルを選ぶと一覧が表示され、各ファイルの名前と、元のサイズ、エンコード後のサイズが並びます。表示 で 1 つの結果を表示し、すべて JSON でコピー で全ファイルを {name, type, size, data} オブジェクトの配列としてコピーします。フィクスチャファイルやシードスクリプトにすぐ貼り付けられます。
画像以外のファイルでの出力形式の意味
| 出力形式 | report.zip の結果 | 用途 |
|---|---|---|
| プレーン Base64 | UEsDBBQAAAAI... | API のフィールド、環境変数、設定値 |
| Data URI | data:application/zip;base64,UEsDBBQA... | HTML や JavaScript 内の URL |
HTML <a download> | <a href="data:application/zip;base64,..." download="report.zip">report.zip</a> | それ単体で完結するダウンロードリンク |
| JSON | {"name": "report.zip", "type": "application/zip", "size": 323, "data": "UEsDBBQA..."} | テスト用フィクスチャ、自前のアップロード用エンドポイント |
JSON のキーは固定です(name、type、size、data)。API が別の名前を求めるなら、貼り付けてから名前を変えてください。size は元のファイルのバイト数で、受信側はデコード後の長さが一致するか確認できます。
Data URI の MIME タイプと JSON の type は、ブラウザから取得します。ブラウザがそのファイルを知らなければ拡張子から推測し、それも失敗すると application/octet-stream を使います。これで変わるのはラベルだけで、Base64 はどちらでも同じです。
CI のシークレットや設定に入れるバイナリファイル
ファイル全体をエンコードするよくある理由は、テキストしか保存できないシークレットストアです。CI の変数、.env ファイル、Kubernetes の Secret などがそうです。署名用のキーストア、証明書、サービスアカウントのファイルを Base64 の 1 行として登録し、パイプラインの中で復元します。
echo "$KEYSTORE_B64" | base64 -d > release.keystore
この用途では 76 文字で折り返し はオフにしてください。改行を含む値は、シークレットの UI やシェルで壊れがちです。Kubernetes は data: の下のすべての値をこの方法で保存しており、Kubernetes Secret デコーダー で読み戻せます。
先頭の数文字で中身を知る
ほとんどのファイル形式は先頭のバイトが決まったシグネチャなので、Base64 の書き出しを見ればデコードせずに形式がわかります。よく見るものをいくつか挙げます。
| ファイル形式 | Base64 の先頭 |
|---|---|
JVBERi0 | |
| ZIP、DOCX、XLSX、PPTX、JAR、APK | UEsDB |
gzip(.gz、.tgz) | H4sI |
| 7-Zip | N3q8ryc |
| Windows の EXE や DLL | TVqQ(大半のファイル)、必ず TV |
| Linux の ELF バイナリ | f0VMRg |
| SQLite データベース | U1FMaXRlIGZvcm1hdCAz |
| ID3 タグ付き MP3 | SUQz |
| PNG | iVBORw0KGgo |
| JSON オブジェクト | eyJ({" の場合) |
より長い一覧は よくある Base64 の接頭辞 にあります。Base64 をファイルに変換 でデコードするときも、同じ方法で形式を判定します。
サイズ、メモリ、大きなファイル
Base64 の出力は入力の 4/3 で、4 文字の倍数に切り上げられます。1 MB のファイルは 1,398,104 文字になり、76 文字で折り返し をオンにするとさらに 18,396 文字の改行が加わります。出力の下のカウンターには、両方のサイズと増加率(%)が表示されます。
すべてブラウザのタブ内で動くので、実際の上限は端末のメモリです。
- テキストボックスには出力の最初の 4 MB だけが表示されます。出力をコピー と .txt で保存 は常に結果全体を使います。
- 出力が約 48 MB を超えると 出力をコピー は無効になります。
- 約 48 MB を超えるファイルは分割してエンコードされ、結果は .txt で保存 でのみ取得できます。
それほど大きなファイルなら、Base64 が適切な運び方かどうか考え直してください。マルチパートのアップロードやバイナリの直接転送なら、33% の増加も、送受信両側でのメモリの急増も避けられます。サイズ計算ツール を使えば、始める前にエンコード後のサイズがわかります。
コマンドラインやコードでファイルをエンコードする
Linux(GNU coreutils、-w 0 でデフォルトの 76 文字折り返しを無効化):
base64 -w 0 report.zip > report.zip.b64
macOS(こちらの base64 はデフォルトで折り返しません):
base64 -i report.zip -o report.zip.b64
Windows PowerShell:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\data\report.zip")) | Set-Content report.zip.b64
Python:
import base64
from pathlib import Path
encoded = base64.b64encode(Path("report.zip").read_bytes()).decode("ascii")
大きなファイルをメモリに読み込まずにストリーミングする方法は、Python の Base64、Node.js、Java、PHP をご覧ください。
よくある問題
- 出力に改行が入る。 GNU の
base64はデフォルトで 76 文字、openssl base64は 64 文字で折り返し、certutil -encodeはヘッダー行まで付けます。JSON の API や環境変数の多くは 1 行を必要とします。-w 0、openssl base64 -A、または折り返しをオフにしたこのツールを使ってください。 - Data URI が
application/octet-streamになる。 ブラウザがタイプを知らず、拡張子もツールのリストにありませんでした。バイト列は正しいままです。受信側が気にするなら、接頭辞の MIME タイプを書き換えてください。 - 「出力をコピー」がグレーアウトしている。 結果がコピーの上限(約 48 MB)を超えています。.txt で保存 は使えますし、文字列を必要とするツールのほとんどはファイルから読み込めます。
- JSON で 1 つのファイルだけ
"data": nullになっている。 一括処理では、約 48 MB を超えるファイルはダウンロード専用に分割エンコードされるため、すべて JSON でコピー ではデータが省かれます。そのファイルだけを単独でエンコードし、.txt で保存してください。 - デコードしたファイルが元より小さい。 文字列が途中で切れています。デコード後の長さを JSON 出力の
sizeの値と比べてください。 - 入力がテキストだったのに文字化けする。 Base64 は元の文字コードも含めてバイト列をそのまま保ちます。UTF-16 のテキストファイルは UTF-8 ではなく UTF-16 にデコードされます。入力するテキストには、文字コードを選べる テキストを Base64 に変換 を使ってください。
よくある質問
どんな種類のファイルを Base64 に変換できますか?
どんなファイルでも変換できます。Base64 はバイトをエンコードするだけで、その意味は気にしないので、実行ファイル、アーカイブ、データベース、文書もテキストと同じように扱えます。PDF を Base64 に変換 のような形式別のページは、その形式向けのヒントを加えているだけです。
ファイルサイズに上限はありますか?
処理はブラウザ内で行われるので、決まった上限はありません。約 48 MB までの出力はコピーでき、それを超える場合は .txt で保存 を使います。約 48 MB を超えるファイルは分割してエンコードされ、ダウンロードでのみ提供されます。
Windows で追加のツールなしにファイルを Base64 エンコードするには?
PowerShell なら 1 行でできます:[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\path\file.bin"))。certutil -encode も使えますが、-----BEGIN CERTIFICATE----- の行が付き、出力が折り返されるので、それを取り除く必要があります。
Data URI ではどの MIME タイプが使われますか?
ブラウザがそのファイルについて報告するタイプです。報告がなければ拡張子から推測し、それでもわからなければ application/octet-stream になります。受信側が特定のタイプを必要とするなら、接頭辞を手で書き換えてください。
Base64 をファイルに戻すには?
Base64 をファイルに変換 を使ってください。デコードしたバイト列からファイル形式を判定し、合う拡張子を提案します。