encode | file | copy

> base64 encoder | text | file <

// テキスト・UTF-8・JSON・画像・任意のファイルを Base64 にエンコード — 標準、URL セーフ、パディングあり/なしに対応。100% クライアントサイド処理。最大 100 MB のファイルをドラッグ&ドロップで。

0 文字
[TEXT]

テキスト・UTF-8 エンコード

プレーンテキスト、UTF-8 マルチバイト文字、絵文字、JSON、XML、HTML をエンコード。ネイティブ TextEncoder を使用し、バイトレベルで正確な UTF-8 を実現。

[FILE]

ファイル → Base64

ドラッグ&ドロップまたはクリックで任意のファイル(PNG、JPG、PDF、ZIP、バイナリ)を最大 100 MB までアップロード。純粋な Base64 を出力 — Data URI、JSON API、HTML に直接貼り付け可能。

[VARIANTS]

URL セーフ + パディングなし

<code>--url-safe</code> をオンにすると、JWT/OAuth 互換の <code>-_</code> アルファベットを使った Base64 を生成。<code>--no-padding</code> で末尾の <code>=</code> を除去します。

// BASE64 エンコードの仕組み

Base64 エンコードアルゴリズム:

Base64 は 3 バイト(24 ビット)の入力を、4 つの 6 ビットグループに分割し、それぞれを 64 文字のアルファベット(A-Z a-z 0-9 + /)の 1 文字にマップします。入力長が 3 の倍数でない場合は、出力長が 4 の倍数になるように = パディングを付加します。URL セーフ Base64 では +/ の代わりに -_ を使用 — URL、ファイル名、JWT でもパーセントエンコードなしで安全に使えます。

エンコード例:

Text   : Hi!
Bytes  : 72 105 33
Bits   : 01001000 01101001 00100001
         010010 000110 100100 100001
B64    : S     G     k     h
Output : SGkh

よくあるエンコードの用途:

  • >HTML/CSS に画像をインライン埋め込み(Data URI)
  • >MIME メール添付ファイルの生成(RFC 2045 §6.8)
  • >HTTP Basic 認証ヘッダーの構築(Authorization: Basic ...)
  • >JWT のヘッダー/ペイロード作成(URL セーフ、パディングなし)
  • >生バイトを扱えない JSON API 向けのバイナリペイロードのエンコード
  • >OAuth 2.0 code verifier や S3 プリサインド URL の構築

// よくある質問

オンラインでテキストを Base64 にエンコードするには?

上の 入力 エリアにテキストを入力または貼り付けるだけです。自動エンコードはデフォルトで有効 — 入力中に 出力 ボックスへ Base64 の結果が表示されます。[ENCODE] をクリックするか Ctrl/Cmd + Enter でエンコードを手動実行できます。Base64 を使う用途(JWT、OAuth、URL → 両方オン)に合わせて --url-safe--no-padding を切り替えてください。すべてブラウザ内で完結: アップロードなし、ログなし、入力に紐づくネットワーク通信は一切ありません。

ファイル(PNG、JPG、PDF、ZIP、バイナリ)を Base64 にエンコードするには?

入力エリア下の [upload file] ボタンをクリックし、最大 100 MB までのファイルを選択します。エンコーダーは FileReader.readAsArrayBuffer で読み取り、btoa を介して 32 KB のチャンクごとにストリーム処理(大きなファイルでブラウザがクラッシュしないように)し、完全な Base64 を出力ボックスに書き込みます。より大きなファイルはコマンドラインのエンコーダーをご利用ください: base64 < input.bin > output.txt(macOS/Linux)、または PowerShell の [Convert]::ToBase64String([IO.File]::ReadAllBytes('input.bin'))

Base64 を Data URI(例: data:image/png;base64,...)として整形したい場合は、出力の先頭に MIME タイプと ;base64, を付加するか、専用の 画像 → Base64 ツールをご利用ください。PNG、JPG、GIF、WebP、SVG 向けにそのまま貼り付け可能な Data URI を出力します。

標準・URL セーフ・パディングなし Base64 の違いは?

3 種類はすべて RFC 4648 で定義されています:

標準 Base64 (§4)A-Z a-z 0-9 + / のアルファベットと = パディングを使用。出力長は常に 4 の倍数。MIME、HTTP Basic 認証、JSON 文字列値に適しています。

URL セーフ Base64 (§5)+- に、/_ に置換。URL のパス・クエリパラメータ・ファイル名・JWT セグメントに Base64 を埋め込むときに必須 — 標準の +/ はパーセントエンコードが必要になります。

パディングなし(§4・§5 の両方、base64url unpadded) は末尾の = を除去。長さはもはや 4 の倍数ではありませんが、デコーダーは余りを 4 で割って元の長さを計算できます。JWT(RFC 7515 の base64url)、WebAuthn、一部の CBOR/COSE 実装で利用されます。

どのバリアントを想定するかはデコーダーに伝える必要があります — 弊ツールの Base64 デコーダー は 3 種すべてを自動判定します。

コード(JavaScript、Python、PHP、Go、Java)で Base64 をエンコードするには?

主要な言語とランタイムはすべて Base64 エンコードを標準搭載しています。コピー&ペーストで使えるスニペット:

JavaScript (ブラウザ):
btoa('Hello') // SGVsbG8=
// UTF-8 の場合:
btoa(String.fromCharCode(...new TextEncoder().encode(s))) // UTF-8 対応


Node.js:
Buffer.from('Hello', 'utf-8').toString('base64') // SGVsbG8=
Buffer.from(bytes).toString('base64url') // URL セーフ、パディングなし


Python:
import base64
base64.b64encode(b'Hello').decode() # SGVsbG8=
base64.urlsafe_b64encode(b'Hello').decode().rstrip('=') # URL セーフ、パディングなし


PHP: base64_encode('Hello')
Ruby: Base64.strict_encode64('Hello') / Base64.urlsafe_encode64('Hello')
Go: base64.StdEncoding.EncodeToString([]byte("Hello")) / base64.URLEncoding.EncodeToString(...) / base64.RawURLEncoding.EncodeToString(...)(パディングなし)
Java: Base64.getEncoder().encodeToString("Hello".getBytes(StandardCharsets.UTF_8))
C#: Convert.ToBase64String(Encoding.UTF8.GetBytes("Hello"))
Rust: base64::engine::general_purpose::STANDARD.encode("Hello")

シェル (macOS/Linux): echo -n 'Hello' | base64SGVsbG8=。Linux では base64 -w 0 で 76 列での折り返しを抑止できます。

Base64 出力は入力に対してどのくらい大きい? Base64 を使うべきでないのはいつ?

Base64 出力は入力より約 33% 大きくなります: 入力 3 バイトごとに出力 4 文字になります。正確な式: パディングを含めると ceil(n / 3) × 4、含めない場合は ceil(n × 4 / 3)。さらに 76 列(MIME)や 64 列(PEM)で改行する場合はオーバーヘッドが数バイト増えます。

例:
• 1 KB のバイナリ → 約 1.37 KB の Base64
• 100 KB の画像 → 約 137 KB の Data URI
• 1 MB の PDF → JSON 中で約 1.37 MB の Base64

Base64 を避けるべきケース:
大きなファイル転送: 10 MB の画像を HTML に Base64 で埋め込むと、パース後は 13.7 MB のテキストとなり、メインスレッドをブロックし、個別キャッシュもできません。<img src="/assets/photo.png"> を推奨。
パフォーマンス重視の API: JSON 中の 500 KB の Base64 ペイロードは、同等のバイナリエンドポイントより約 2〜3 倍遅くパースされます。
セキュリティ対策として: Base64 は暗号化ではありません — 誰でもデコードできます。機密性が必要なら AES-GCM などを使用してください。
データベースの BLOB: 生バイトを BLOB/BYTEA として保存すれば、Base64 テキストより 33% のストレージを節約でき、エンコード/デコードの往復も不要です。

JWT や OAuth パラメータ用に URL セーフ Base64 にエンコードするには?

JWT (RFC 7515) と OAuth PKCE (RFC 7636) はどちらも パディングなしの URL セーフ Base64(通称 base64url)を使用します。本ツールで生成するには: --url-safe--no-padding の両チェックボックスをオンにしてからテキストをエンコードします。

プログラミング言語での等価:
• JavaScript: btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')
• Node.js: Buffer.from(s).toString('base64url')
• Python: base64.urlsafe_b64encode(s.encode()).decode().rstrip('=')
• Go: base64.RawURLEncoding.EncodeToString([]byte(s))
• Java: Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)

base64url が必要な JWT の代表的なフィールド: ドットで区切られた 3 セグメント(ヘッダー、ペイロード、署名)、OAuth PKCE の code_verifier/code_challenge、WebAuthn のチャレンジ、Web Push の p256dh/auth キー、Google の Request.state パラメータなど。

よくあるバグは、標準 Base64(+/)の JWT を送信してしまうこと — + が転送時に URL デコードされてスペースになるため、API 側で不正として拒否されます。

このツールで Data URI (data:image/png;base64,...) をエンコードできる?

はい、ただし 1 点注意があります。このエンコーダーが生成するのは Data URI の Base64 部分;base64, 以降の部分です。完全な Data URI を作成するには、先頭に次を付加します:

data:<mime-type>;base64,<encoded-output>

主な MIME タイプ:
data:image/png;base64,... — PNG 画像
data:image/jpeg;base64,... — JPEG 画像
data:image/svg+xml;base64,... — SVG(または Base64 を使わず data:image/svg+xml;utf8, が通常は小さい)
data:application/pdf;base64,... — PDF ファイル
data:application/font-woff2;base64,... — フォント埋め込み
data:text/plain;charset=utf-8;base64,... — Base64 でラップされたテキスト

画像や SVG の場合は、画像 → Base64 ツールが、CSS background-image、インライン <img src="..."><object data="..."> タグにそのまま貼り付けられる完全な Data URI を出力します。

サイズに関する注意: 20〜30 KB を超える Data URI は、ブラウザがプリロードできないため LCP(Largest Contentful Paint)を損ないます — インラインの Base64 画像は小さく保ち、大きめのアセットは loading="lazy" を付けた通常の <img> を優先してください。

機密テキストや API キーを扱うのに安全?

はい — 何もブラウザから外に出ません。 エンコーダーはネイティブの btoa()TextEncoderFileReader API を使用し、すべて JavaScript で完結します。入力内容に関するネットワーク通信・テレメトリ・ログ・サードパーティ分析は一切ありません。DevTools のネットワークタブを開きながらエンコードを実行しても、関連リクエストがゼロであることを確認できます。

ただし、Base64 は暗号化ではありません — 可逆的なエンコードであり、出力を持っている人なら誰でもデコードできます。そのため:
本番のシークレットをエンコード形式でもチャット・スクリーンショット・ログに貼り付けない。
• HTTP Basic 認証の Authorization: Basic ヘッダーは TLS(HTTPS)上でのみ安全です。平文 HTTP 上では簡単に傍受されます。
• 本当に機密性を確保したいなら、AES-GCMagesops、あるいは KMS を使用してください — 必要なら転送用に暗号文を Base64 エンコードします。

厳格なデータ持ち出し制限のある環境では、ページをオフライン保存(Cmd/Ctrl + S)してください。サーバー依存はないため、1 度ロードすれば完全エアギャップで動作します。

非常に大きなファイルを Base64 にエンコードできる? ブラウザの上限は?

エンコーダーはファイルハンドラーのハード上限により 最大 100 MB のファイルに対応 — ほとんどの画像、PDF、ZIP アーカイブ、短い動画に十分な大きさです。パフォーマンス目安:

< 1 MB: エンコードは 50 ms 未満で完了、UI フリーズなし。
1 – 10 MB: CPU 次第で 100〜500 ms。32 KB のチャンクでエンコードするためブラウザは応答可能。
10 – 100 MB: 2〜15 秒。巨大な Base64 文字列を貼り付け/スクロールする際、出力テキストエリアがわずかにもたつく可能性あり。必要に応じて DevTools から出力を .txt ファイルとしてダウンロードしてください。
> 100 MB: ブロック — ブラウザのメモリオーバーヘッド(入力バイト + バイナリ文字列 + Base64 文字列 ≈ ファイルサイズの 3〜4 倍)でタブがクラッシュするリスクがあります。代わりに:

# macOS / Linux
base64 -i huge.bin -o huge.b64

# Windows PowerShell
$bytes = [IO.File]::ReadAllBytes('huge.bin')
[IO.File]::WriteAllText('huge.b64', [Convert]::ToBase64String($bytes))


ストリーミングやマルチ GB のワークフローについては、メモリに全部を読み込まずに済む Node.js/Python のチャンク方式を解説した 大きなファイルの Base64 エンコード をご覧ください。

この Base64 エンコーダーはテキスト入力にどの文字エンコーディングを使用する?

本エンコーダーは UTF-8 を使用します。現代的な Web、JSON、Linux、macOS、ほとんどのプログラミング言語のデフォルトと同じエンコーディングです。内部では、テキストを new TextEncoder().encode(input) に通して常に UTF-8 バイトを生成し、それから Base64 にエンコードしています。

なぜこれが重要か: 古い JavaScript の btoa() 関数は Latin-1 しか扱えず、é😀 のような文字で InvalidCharacterError を投げます。弊ツールのラッパーが UTF-8 変換を肩代わりするため、絵文字、中国語、日本語、韓国語、アラビア語、キリル文字、あらゆる Unicode コードポイントが正しくエンコードされます。

別のエンコーディングが必要な場合:
UTF-16 LE(Windows ネイティブ): まれ — 多くはレガシー互換の兆候です。とりあえず new TextEncoder({ fatal: true }).encode(s) を使い、上流で変換してください。
ISO-8859-1 / Latin-1: コードポイント 0〜255 をバイトに手動マップしてからエンコード。
GB18030、Shift_JIS、EUC-KR: Node.js では iconv-lite のようなライブラリで先にトランスコードしてください。

注意が必要な落とし穴: 元データがすでに非 UTF-8 エンコーディング(例: レガシー MySQL ダンプを読み込んだ場合)であれば、まず正しいコーデックでデコードし、UTF-8 に再エンコードしてから Base64 にしてください — そうしないと Base64 をデコードしたときに文字化けがそのまま残ります。

// RELATED TOOLS

// OTHER LANGUAGES