Base64 エンコード・デコード
テキストやファイルを Base64 にエンコードし、Base64 をデコードします。UTF-8 にも安全に対応。 処理はすべて端末内で完結し、アップロードは一切ありません。
- 入力
- Text · any file · Base64
- 出力
- Base64 · Base64URL · text · file
テキスト
36 文字 · 50 B
Base64
68 文字 · UTF-8 のバイト数比 +36%
SGVsbG8sIHdvcmxkISBIw6lsbG8sIHfDtnJsZCEg44GT44KT44Gr44Gh44GvIPCfkYs=
テキストにもファイルにも使える Base64 エンコードとデコード
この Base64 エンコーダー・デコーダーは、入力と同時にテキストや任意のファイルを Base64 に変換し、元に戻すこともできます。テキストは先に UTF-8 でエンコードされるので、アクセント付き文字、絵文字、日本語などのラテン文字以外の文字も往復で崩れることはなく、URL で安全に使える Base64URL もワンクリックで切り替えられます。すべてブラウザ内で処理され、貼り付けたテキストやドロップしたファイルがアップロードされることはありません。
Base64 をエンコード・デコードする方法
- 入力・貼り付けできる内容を扱うならテキストを、ファイルをエンコードしたり Base64 文字列をファイルに戻したりするならファイルを選びます。
- エンコードかデコードを選びます。エンコード中に Base64 を貼り付けると、ツールが気づいて代わりにデコードすることを提案します。
- エンコードする場合は、標準か URL セーフの Base64 か、
=のパディングを残すか、76 文字で改行するかを選びます。 - 結果をコピーするか、入力に戻して逆の操作をするか、別のツールに送ります。デコードしたファイルはダウンロードでき、拡張子はファイル自体のシグネチャから判定されます。
Base64 とは何か、なぜ存在するのか
Base64 は、任意のバイト列を A–Z、a–z、0–9、+、/ の安全な 64 文字だけで表します。入力の 3 バイトごとに出力が 4 文字になり、入力の長さが 3 の倍数でない場合は、末尾に 1 つか 2 つの = が埋められます。
Base64 が存在するのは、多くの通信経路がバイナリデータではなくテキスト向けに作られていたためです。メール(MIME)、JSON、XML、HTML の属性、HTTP ヘッダー、環境変数は、生のバイトでは壊れてしまう場面でも Base64 なら安全に運べます。そのため、メールの添付ファイル、data: URI、Basic 認証のヘッダー、JSON Web Token、ファイルを埋め込む API のデータなどで目にします。
Base64 はエンコードであって暗号化ではありません。誰でもデコードできるので何も隠せません。値を秘密にする必要があるなら暗号化してください。データが変わっていないかを確認したいなら、ハッシュ値計算ツールのチェックサムが適しています。
標準の Base64、Base64URL、改行
デコーダーはこれらすべてを受け付けます。どちらの文字セットでも、パディングや改行・スペースの有無にかかわらず使えます。data:…;base64, で始まる URI 全体をそのまま貼り付けることもできます。
- 標準(RFC 4648)
- + と / を使い、= でパディングします。MIME、data URI、ほとんどのライブラリ、base64 コマンドが出力する形式です。
- URL セーフ、Base64URL
- + を - に、/ を _ に置き換え、パーセントエンコードなしで URL やファイル名に入れられるようにします。JWT はパディングを除いた形で使っており、パディングのオプションがあるのはそのためです。
- MIME の改行
- メールでは 1 行が 76 文字以下である必要があるため、MIME エンコーダーは 76 文字ごとに改行を入れます。メールのソースや PEM のようなブロックに貼り付けるときはオンにし、JSON、URL、コードではオフのままにしてください。
テキストを先に UTF-8 にする理由
Base64 がエンコードするのは文字ではなくバイトなので、テキストはエンコードの前にバイトに変換する必要があります。ブラウザ組み込みの btoa() は U+00FF までの文字しか受け付けず、それ以外ではエラーになるため、素朴なエンコーダーは「€」「日本」や絵文字で失敗します。このツールは、ほぼすべてのシステムが前提とする UTF-8 でテキストをエンコードするので、é は 2 バイトの C3 A9 になり、どのプラットフォームでも é にデコードされます。
デコードするときは、バイト列が有効な UTF-8 かどうかを確認します。そうでない場合、その Base64 はほぼ確実にテキストではなくバイナリファイルなので、画面いっぱいの文字化けを表示する代わりにそのことを伝え、シグネチャを認識できればファイルの種類も示します。
ファイル:サイズ、シグネチャ、大きな入力
Base64 にするとデータは約 3 分の 1 大きくなります。3 バイトごとに 4 文字になり、改行すればその分も加わります。3 MB の画像はおよそ 4 MB のテキストになります。ファイル表示ではコピーする前に両方のサイズが表示されるので、大きなファイルをスタイルシートや JSON ドキュメントに埋め込む前に確認する価値があります。
Base64 文字列をファイルにデコードする場合はその逆です。ほとんどのファイル形式の先頭バイトは決まったシグネチャで、PNG は 89 50 4E 47、PDF は %PDF、ZIP(つまり DOCX や XLSX も)は PK です。ツールはこれを読み取ってダウンロードに正しい名前を付け、画像をプレビューします。大きなファイルは進捗バー付きで分割してエンコードされるのでページの反応は保たれ、非常に長い結果は一部だけプレビューされますが、コピーとダウンロードでは常に全体が得られます。
画像の場合は、画像 Base64 変換を使えば、そのまま貼り付けられる HTML、CSS、Markdown のスニペットも作れます。
よくある質問
- Base64 の文字列をデコードするには?
- 「デコード」を選んで文字列を貼り付けてください。入力と同時にデコードされたテキストが表示されます。Base64 の中身がテキストではなくファイルの場合は、ファイルモードに切り替えると正しい拡張子でダウンロードできます。
- Base64 は暗号化ですか?
- いいえ。Base64 は、鍵なしで誰でもデコードできる可逆的なエンコードです。バイナリデータをテキストとして安全に運べるようにするもので、データを保護するものではありません。
- Base64 にするとファイルが大きくなるのはなぜですか?
- 3 バイトごとに 4 文字になるため、出力は入力より約 33% 大きくなり、メール用に改行するとさらに少し増えます。
- Base64 と Base64URL の違いは何ですか?
- Base64URL は + と / の文字を - と _ に置き換えて URL やファイル名で使えるようにしたもので、通常は = のパディングも省きます。JSON Web Token は Base64URL を使っています。
- デコードしたテキストが記号の羅列(文字化け)になるのはなぜですか?
- その Base64 には、テキストではなく画像、PDF、圧縮データなどのバイナリが入っている可能性が高いです。ツールはこれを検出し、ファイルとして扱ってダウンロードすることを提案します。
- 末尾の = 記号は何を意味しますか?
- パディングです。Base64 は 3 バイト単位で処理し、入力がグループの途中で終わると、1 つか 2 つの = が最後の 4 文字のブロックを埋めます。このツールを含め、多くのデコーダーは = があってもなくても動作します。
- Base64 の文字列を PDF や画像に変換できますか?
- はい。ファイルモードで「デコード」を選び、文字列または data URI 全体を貼り付けてください。PNG、JPEG、GIF、WebP、PDF、ZIP、GZIP などの形式を先頭バイトから判別し、画像はプレビューして、ファイルをダウンロードできます。
- 機密データを貼り付けても安全ですか?
- エンコードとデコードはすべてブラウザ内で行われます。貼り付けたりドロップしたりしたものがアップロードや保存されることはありません。