Base64 File Encoder

あらゆるファイルをBase64にエンコード(PDF、ZIP、画像など)

ファイルをここにドロップするかクリックしてアップロード

あらゆるファイル形式に対応:PDF、ZIP、画像、バイナリファイル

Base64ファイルエンコーディングとは?

Base64ファイルエンコーディングは、バイナリファイル(PDF、ZIP、画像、実行ファイル、フォント、音声)をRFC 4648で定義されたアルファベットを使ったプレーンなASCIIテキストに変換します。バイナリ入力の3バイトごとに4つのBase64文字が生成され、テキスト専用チャネル(JSON APIペイロード、XMLドキュメント、メール本文、HTML属性、環境変数)を通じて転送できるテキスト表現が得られます。

文字列を対象とするテキスト→Base64エンコーディングとは異なり、ファイル→Base64エンコーディングはファイル形式に依存せず生のバイトストリームを読み込みます。PDFのバイナリヘッダー、ZIPの圧縮ブロック、PNGのピクセルデータはすべて同じように扱われます——8ビット列(オクテット)として再エンコードされます。結果は常に有効なASCIIであり、印刷可能文字を受け付ける場所であればどこにでも安全に埋め込めます。

トレードオフはサイズです:Base64出力は元のバイナリより約33%大きくなります。1MBのPDFであれば、約1.33MBのBase64テキストになります。このオーバーヘッドは8ビットのバイトを6ビットの文字で表現するコストであり、エンコーディングの本質的な特性です——どの実装でも回避できません。それでも、Base64ファイルエンコーディングはテキスト専用フォーマットにバイナリデータを埋め込む標準的な方法であり、MIME(RFC 2045)、データURI(RFC 2397)、JSON Web Token(RFC 7519)にわたって規定されています。

このBase64ファイルエンコーダーを使う理由

このツールはFileReader APIを使ってブラウザ上で直接ファイルをBase64にエンコードします。ファイルはサーバーに一切アップロードされず、変換全体がブラウザ内のJavaScriptでクライアントサイドに完結します。

🛡
プライバシー優先の処理
ファイルがデバイスの外に出ることはありません。FileReader APIがファイルをローカルのメモリに読み込み、Base64出力もブラウザ内で完全に生成されます。ネットワークリクエストは一切発生しません。
即時ドラッグ&ドロップ
ツールにファイルをドロップするだけでBase64出力が即座に表示されます。アップロードの待機やプログレスバー、サーバー側のファイルサイズ制限はありません。
📁
あらゆるファイル形式に対応
PDF、ZIP、画像、フォント、音声ファイル、WebAssemblyモジュール、その他あらゆるバイナリ形式をエンコードできます。エンコーダーはすべてのファイルを生のバイトストリームとして扱います——形式は関係ありません。
🔒
アカウント不要
サインアップ、ログイン、Cookieの承認なしにすぐ使えます。出力はワンクリックでコピーするか、.b64.txtファイルとしてダウンロードできます。

Base64ファイルエンコーディングのユースケース

フロントエンド開発者
小さなアイコン、フォント、SVGをCSSやHTMLにデータURIとして直接埋め込み、余分なHTTPリクエストを削減できます。2KBのアイコンをBase64でインライン化すれば、50〜200msのレイテンシを追加するネットワークラウンドトリップを節約できます。
バックエンドエンジニア
トランスポートプロトコルがマルチパートアップロードをサポートしていない場合、JSON APIペイロードにファイル添付を含めます。PDFやレポート、署名済みドキュメントをRESTやGraphQLレスポンスの文字列フィールドとして送信する前にエンコードします。
DevOps / インフラ
バイナリ設定ファイル(TLS証明書、SSHキー、ライセンスファイル)を、生のバイナリ値が許可されていない環境変数、Kubernetes Secret、Terraform tfvarsにBase64文字列として保存します。
QA / テストエンジニア
バージョン管理でバイナリテストファイルを管理せずに、アップロードエンドポイント、メール添付処理、ドキュメント処理パイプラインを検証する自動テスト用のBase64ファイルフィクスチャを生成します。
データエンジニア
JSONベースのデータカタログ、設定ストア、マイグレーションスクリプトへの保存に向けて、バイナリBLOB(Parquetメタデータ、Protobufスキーマ、小さなバイナリアセット)をBase64にシリアライズします。
学習者 / 学生
小さなファイルをエンコードして出力を確認することで、バイナリファイルがテキストになる仕組みを観察できます。Base64の長さと元のファイルサイズを比較して、RFC 4648に記述された33%オーバーヘッドを実際に確認できます。

Base64ファイルサイズのオーバーヘッド

Base64エンコーディングはデータサイズをちょうど3分の1増加させます。入力3バイトごとに4文字の出力が生成されます(各文字は6ビットを表します)。入力長が3の倍数でない場合、パディング文字(=)が付加されます。以下の表は元のファイルサイズとエンコード後の出力サイズの関係を示しています。

ファイルサイズ元のバイト数Base64バイト数オーバーヘッド
1 KB1,024 B1,368 B+33.3%
10 KB10,240 B13,656 B+33.4%
100 KB102,400 B136,536 B+33.3%
1 MB1,048,576 B1,398,104 B+33.3%
5 MB5,242,880 B6,990,508 B+33.3%
10 MB10,485,760 B13,981,016 B+33.3%

データURIとMIMEタイプリファレンス

データURIは、data:[MIMEタイプ];base64,[エンコードされたデータ] という形式でファイルの内容をHTML、CSS、JavaScriptに直接埋め込みます。MIMEタイプはブラウザにデコードされたバイトの解釈方法を伝えます。以下は一般的なファイル拡張子、MIMEタイプ、対応するデータURIプレフィックスの一覧です。

拡張子MIMEタイプデータURIプレフィックス
.pdfapplication/pdfdata:application/pdf;base64,...
.zipapplication/zipdata:application/zip;base64,...
.pngimage/pngdata:image/png;base64,...
.jpgimage/jpegdata:image/jpeg;base64,...
.gifimage/gifdata:image/gif;base64,...
.svgimage/svg+xmldata:image/svg+xml;base64,...
.woff2font/woff2data:font/woff2;base64,...
.mp3audio/mpegdata:audio/mpeg;base64,...
.wasmapplication/wasmdata:application/wasm;base64,...
.binapplication/octet-streamdata:application/octet-stream;base64,...

コード例

以下の実行可能な例は、JavaScript、Python、Node.js、bash、Goでバイナリファイルを読み込んでBase64にエンコードする方法を示しています。各スニペットはパディング付きの標準Base64(RFC 4648 セクション4)を生成します。

JavaScript (browser)
// Read a file from an <input> element and encode to Base64
const input = document.querySelector('input[type="file"]')
input.addEventListener('change', (e) => {
  const file = e.target.files[0]
  const reader = new FileReader()
  reader.onload = () => {
    const base64 = reader.result.split(',')[1]
    console.log(base64) // → "JVBERi0xLjQK..." (raw Base64, no data URI prefix)
  }
  reader.readAsDataURL(file)
})

// Convert a Blob to Base64 with async/await
async function blobToBase64(blob) {
  const buffer = await blob.arrayBuffer()
  const bytes = new Uint8Array(buffer)
  let binary = ''
  bytes.forEach(b => binary += String.fromCharCode(b))
  return btoa(binary) // → standard Base64 string
}
Python
import base64
from pathlib import Path

# Encode a file to Base64
file_bytes = Path('document.pdf').read_bytes()
encoded = base64.b64encode(file_bytes).decode('ascii')
print(encoded[:40])  # → "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PA..."

# Write encoded output to a text file
Path('document.b64.txt').write_text(encoded)

# Build a data URI from a file
mime_type = 'application/pdf'
data_uri = f'data:{mime_type};base64,{encoded}'
print(data_uri[:60])  # → "data:application/pdf;base64,JVBERi0xLj..."
Node.js
import { readFileSync, writeFileSync } from 'fs'

// Encode a file to Base64
const buffer = readFileSync('archive.zip')
const base64 = buffer.toString('base64')
console.log(base64.length) // → 1398104 (for a ~1 MB file)

// Save Base64 output to a file
writeFileSync('archive.b64.txt', base64)

// Build a data URI
const mime = 'application/zip'
const dataUri = `data:${mime};base64,${base64}`
CLI (bash)
# Encode a file to Base64 (macOS / Linux)
base64 < document.pdf > document.b64.txt

# Encode with no line wrapping (GNU coreutils)
base64 -w 0 < document.pdf > document.b64.txt

# Encode and copy to clipboard (macOS)
base64 < image.png | pbcopy

# Encode with OpenSSL (available everywhere)
openssl base64 -in archive.zip -out archive.b64.txt

# Pipe directly into curl for API upload
base64 -w 0 < photo.jpg | curl -X POST -d @- https://api.example.com/upload
Go
package main

import (
	"encoding/base64"
	"fmt"
	"os"
)

func main() {
	data, err := os.ReadFile("document.pdf")
	if err != nil {
		panic(err)
	}
	encoded := base64.StdEncoding.EncodeToString(data)
	fmt.Println(len(encoded)) // → 1398104 (for a ~1 MB file)

	// Write to file
	os.WriteFile("document.b64.txt", []byte(encoded), 0644)
}

よくある質問

Base64にエンコードできる最大ファイルサイズは?
このツールはブラウザ上で完全に動作するため、制限は利用可能なメモリに依存します。最新のブラウザは50〜100MBのファイルを問題なく処理できます。それより大きなファイルには、コマンドラインツールのbase64(macOS/Linux)やPythonのbase64モジュールを使用してください。これらはファイルをチャンク単位で処理し、出力全体をメモリに一度に読み込みません。
Base64出力は元のファイルより何パーセント大きくなりますか?
Base64出力は常に入力より約33.3%大きくなります。具体的には、nを入力バイト数とすると ceil(n / 3) * 4 という式で計算されます。1MBのファイルは約1.33MBのBase64テキストになります。このオーバーヘッドはエンコーディングの本質的な特性であり、削減できません。
ファイルをBase64にエンコードしてデータURIとして使用できますか?
はい。Base64文字列の前にMIMEタイプのプレフィックスを付加します:data:application/pdf;base64, に続けてエンコードされた内容を記述します。ブラウザはデータURIを通常のファイルと同様にデコードして表示します。データURIはimg src、link href、CSS url()、アンカーのdownload属性で動作します。
Base64ファイルエンコーディングは暗号化と同じですか?
いいえ。Base64はエンコーディングであり、暗号化ではありません。バイナリデータをテキスト表現に変換するもので、Base64デコーダーがあれば誰でも元のファイルを復元できます。Base64は機密性、完全性、認証を一切提供しません。ファイルの内容を保護する必要がある場合は、まずファイルを暗号化し(例:AES-256-GCM)、その後で転送用にBase64でエンコードしてください。
Base64文字列が1つまたは2つの=文字で終わるのはなぜですか?
=文字はパディングです。Base64は入力を3バイト単位で処理し、グループごとに4文字を出力します。ファイルサイズが3の倍数でない場合、出力長が常に4の倍数になるよう1つまたは2つのパディング文字が付加されます。=が1つの場合は最後のグループが2バイト、==が2つの場合は最後のグループが1バイトだったことを意味します。
コマンドラインからファイルをBase64にエンコードするには?
macOSとLinuxでは、base64コマンドを使用します:base64 < file.pdf > file.b64.txt。GNU/Linuxでは改行抑制のために -w 0 を追加します。OpenSSLも使用可能です:openssl base64 -in file.pdf -out file.b64.txt。Windows PowerShellでは:[Convert]::ToBase64String([IO.File]::ReadAllBytes('file.pdf'))。
multipart/form-dataではなくBase64ファイルエンコーディングを使うべき場面は?
テキスト専用フォーマット(JSON API、XML-RPC、環境変数、Kubernetes Secret)を使用する場合はBase64を使用します。HTMLフォームやバイナリストリームをサポートするRESTエンドポイントでファイルをアップロードする場合はmultipart/form-dataを使用します。マルチパートは33%のサイズオーバーヘッドを回避できるためより効率的ですが、サーバー側でマルチパート境界を解析する必要があります。