本文へスキップ

Base64エンコード・デコード

Base64 Encoder & Decoder

テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。

テキストでもファイル全体でもBase64にし、また元に戻します。data: URIも、JWTが使うURLセーフなアルファベットも扱います。テキストはまずUTF-8を通しますが、ブラウザ組み込みの`btoa`がまったくできないのがそこです。

🔒 ブラウザの中だけで動きますbase64encodedecode
モード
字母

MIMEで使う +/ の字母。

テキストまたはファイルの入力

ファイルを何でも置く

このタブの中で読みます。アップロードはしません。

Base64出力

Base64 0文字。

テキストはBase64にする前にUTF-8でエンコードします。だから日本語も絵文字も往復して生き残ります。ブラウザ自身の btoa にはこれができません。U+00FFを超える文字をそのまま拒否するからです。だからここのエンコーダは借りずに書き起こしてあります。

使い方

  1. 手元のものを入力するか、ドロップします

    入力欄にはどんなテキストでも、下の領域にはどんなファイルでも置けます。ファイルは分割して符号化するので、大きくてもタブが固まりません。エンコードのモードで、すでにBase64に見えるものを貼り付けると、切り替えるかどうかを尋ねます。

  2. アルファベットを選びます

    Base64はMIMEの`+/`のアルファベットです。Base64URLは`-_`のほうで、URLのパスやJWTの断片に入るのがこちらです。互いに入れ替えて使うことはできません。一方のデコーダはもう一方を受け付けません。

  3. パディングと折り返しを決めます

    末尾の`=`は、必須とするパーサもあれば、JWTのように付けてはいけない場面もあります。76文字での折り返しはMIMEの行長で、出力がメールのヘッダーやPEMの形のファイルへ行くときにだけ意味があります。

  4. data URIが目的なら、それを持っていきます

    ファイルを置くとMIMEタイプの付いた`data:`のURIも一緒に出て、元のファイルよりどれだけ大きくなったかを表示します。おおよそ3分の1で、インラインに埋め込むかどうかはその数字で決まります。

よくある質問

他のサイトでは文字化けする日本語が、ここでは崩れないのはなぜですか

Base64にする前に、テキストをUTF-8のバイト列に変換しているからです。ブラウザの`btoa`はU+00FFを超える文字で例外を投げますし、よくある回避策の`unescape(encodeURIComponent(…))`は、多くのサイトが使いながら静かに間違えている方法です。どちらも避けるためにエンコーダを自分で書いてあります。

Base64は暗号化ですか

違います。これは大事な区別です。Base64は符号化なので誰でも元に戻せますし、このページも戻します。Base64になったパスワードやトークンは、そのまま見えているのと同じです。隠したいなら、このサイトのテキスト暗号化ツールがパスフレーズでAES-GCMをかけます。

エラーは出ないのに、デコードの結果が空です

バイト列は正しく戻ったものの、UTF-8のテキストではない場合です。PNG、zip、protobufといったものです。そのときは16進のプレビューとダウンロードのボタンに切り替わります。テキストが無いので、テキスト欄に表示するものがありません。

どのくらい大きいファイルまでエンコードできますか

エンコード自体は分割して走るのでページは止まりません。ただし結果はファイルより3分の1ほど大きい1つの文字列で、それがすべてメモリに載ります。数十メガバイトのあたりからブラウザのタブが苦しくなりますし、その大きさのdata: URIはどのみち使い道がありません。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。