MiServe DevTools

あなたのステッカー

ツールをここにピン留めできます。このブラウザに保存されます。

Base64 エンコード・デコード

テキストやファイルを Base64 にエンコードし、元に戻します。URL セーフなアルファベット、パディングの省略、MIME 形式の改行にも対応しています。

ブラウザ内で動作します。貼り付けた内容はアップロードされません。

このツールについて

Base64 とは

Base64 は、任意のバイト列を 64 種類の印字可能な ASCII 文字(A–Z、a–z、0–9、+、/)で表します。3 バイトごとに 4 文字になり、入力の長さが 3 の倍数でないときは、最後のグループを = で埋めます。仕様は RFC 4648 で定義されています。

Base64 は、テキスト用に作られた経路でバイナリデータを運ぶためのものです。メールの添付ファイル、HTML や CSS の data: URI、JSON のバイナリフィールド、HTTP の Authorization: Basic ヘッダー、署名付き JWT の 3 つの部分などで使われています。

Base64 はエンコードであって、暗号化ではありません。誰でもデコードできるため、何も隠せません。

よく見かけるバリエーション

URL セーフなアルファベットは、+ と / を - と _ に置き換えたもので、エスケープせずに URL やファイル名に入れられます。JWT はこれを使い、さらにパディングも省きます。

MIME(RFC 2045)は、出力を 1 行 76 文字以内に区切ります。データ URI は、data:image/png;base64,… のようにペイロードの前にメディアタイプを付けたもので、URL セーフではなく標準のアルファベットを使います。

このツールはデコード時に、どちらのアルファベットも受け付け、パディングの欠落、スペース、タブ、改行も許容し、data:…;base64, の接頭辞は読み飛ばします。アルファベットに含まれない文字があれば、その文字と位置を示します。

テキスト、バイト列、ファイル

Base64 がエンコードするのはバイト列なので、テキストはまずバイト列に変換する必要があります。このツールは、現在ほとんどのシステムが前提としている UTF-8 を使います。JavaScript 標準の btoa() は U+00FF までの文字しか受け付けず、それ以外では例外を投げます。絵文字をそのまま btoa() に渡すコードが失敗するのはこのためです。é のような文字では例外になりませんが、btoa() は UTF-8 の 2 バイトではなく、Latin-1 の 1 バイトとしてエンコードします。

デコード後、このツールはバイト列が制御文字を含まない有効な UTF-8 テキストかどうかを確認します。そうでなければその旨を表示し、PNG、JPEG、GIF、WebP、PDF、ZIP のデータは先頭のバイトから判別して、バイト列をファイルとしてダウンロードできるようにします。選択したファイルはブラウザが読み込み、端末の外に出ることはありません。

よくある質問

Base64 は暗号化の一種ですか?

いいえ。Base64 は鍵を使わない可逆なエンコードなので、誰でもデコードできます。パスワード、トークン、個人情報の保護には使わないでください。

Base64 の出力が入力より大きくなるのはなぜですか?

Base64 の 1 文字が表すのは 8 ビットではなく 6 ビットなので、3 バイトごとに 4 文字が必要になります。結果は元のデータより約 3 分の 1 大きくなり、さらにパディングと改行の分が加わります。

Base64 と base64url の違いは何ですか?

base64url は RFC 4648 の 5 章で定められたバリエーションです。+ と / の代わりに - と _ を使い、= のパディングを省くことも多いため、URL やファイル名で安全に使えます。データは同じで、違うのはこれらの文字だけです。このツールはどちらもデコードできます。

エンコードしたファイルはどこかにアップロードされますか?

いいえ。ファイルはブラウザが読み込み、お使いの端末上でエンコードします。サーバーには送信されません。

エンコードのほかのツール