Base64とは?
Base64は、テキストや画像、ファイル全体など、あらゆるデータを64種類の安全な文字だけで表す方式です。使う文字は A–Z、a–z、0–9、+ と / で、末尾にはパディング(埋め草)として = が付きます(RFC 4648で定義)。メール、JSON、HTML、HTTPヘッダーなど、プレーンテキスト向けに作られた仕組みの中でバイナリデータを運ぶために使われています。
入力の3バイトごとにBase64の4文字になるため、エンコード後のデータは元より約33%大きくなります。たとえばテキスト Hi は SGk= になります。Base64は、メールの添付ファイル、HTMLやCSSの data: 画像URI、ファイルを返すAPIレスポンス、JSON Web Token、HTTP Basic認証ヘッダーなどでよく見かけます。

Base64をデコードする方法
デコード 欄に貼り付けます。改行、スペース、data:...;base64, プレフィックス、URLセーフ文字(- と _)、= パディングの欠落にもすべて対応しています。
データがテキストなら、デコードされたUTF-8テキストがすぐに表示され、そのままコピーできます。
データがファイルの場合は、先頭のバイトから形式を判別します。画像はプレビュー表示され、PDFやZIPなどのファイルはダウンロードできます。
Advertisement
テキストやファイルをBase64にエンコードする方法
エンコード タブでテキストを入力するか貼り付けます。UTF-8としてエンコードされるため、アクセント付き文字、日本語などのアジアの文字、絵文字も正しく往復変換できます。
URLセーフ にチェックを入れるとBase64URL(URLやJWTで使用)に、76文字で折り返し にチェックを入れるとMIMEメール本文向けの形式になります。
ファイル→Base64 タブに、10 MBまでの任意のファイルをドロップします。生のBase64、またはHTMLやCSSに埋め込める data:image/png;base64,... のようなdata URIをそのままコピーできます。
Base64を画像に変換・Base64をPDFに変換
Base64は、Webページやメールに埋め込まれた画像や、APIが返すPDFのように、ファイルを包んでいることがよくあります。デコーダーはマジックナンバーと呼ばれる先頭のバイトを調べて、ファイルの種類を判別します。PNG、JPEG、GIF、WebP、SVGの画像はその場でプレビューされ、PDF、ZIP、GZIP、MP3、MP4のファイルにはダウンロードボタンが表示されます。PDFは新しいタブで開くこともできます。
逆方向の画像→Base64変換は「ファイル→Base64」タブで行えます。画像をドロップして、data URIをコピーするだけです。
Advertisement
Base64の種類:標準、URLセーフ、MIME、data URI
+ と / を使い、= でパディングします。ほとんどのライブラリやAPIのデフォルトです。
+ と / を - と _ に置き換え、通常はパディングを省くため、URLやファイル名にそのまま使えます。JSON Web Tokenで使われています。
標準Base64を76文字ごとに改行したもので、メールの添付ファイルに使われます。
data:image/png;base64, のようにファイル形式を示すプレフィックスを付けたBase64で、ブラウザがそのままインライン表示できます。
Base64は暗号化ではなくエンコード
Base64はデータを安全に運ぶためのもので、秘密にするためのものではありません。このツールを含め、誰でも一瞬でデコードできます。
パスワードや鍵を隠す目的でBase64を使わないでください。 HTTP Basic認証ヘッダーは
user:passwordをBase64にしただけのものなので、必ずHTTPS経由で送る必要があります。サイトの証明書はSSL証明書チェックで確認できます。JWTのペイロードは読めます。 JSON Web Tokenの中央部分はBase64URLでエンコードされたJSONなので、トークンを持っていれば誰でもクレームを読めます。
ここでのデコードはプライベートです。 このツールは完全にブラウザ内で動作し、貼り付けたりアップロードしたりしたデータが当社のサーバーに届くことはありません。
本当に秘密にしたい場合は? 適切な暗号化を使い、強力なシークレットはパスワード生成ツールで作成してください。
Advertisement
JavaScript・Python・コマンドラインでのBase64
どの言語にもBase64の機能が標準で備わっています。先にテキストをUTF-8としてエンコードしないと、日本語など英語以外の文字が文字化けするので注意してください。
// Encode UTF-8 text
const b64 = btoa(String.fromCharCode(...new TextEncoder().encode('héllo'))) // 'aMOpbGxv'
// Decode back to text
const text = new TextDecoder().decode(Uint8Array.from(atob(b64), (c) => c.charCodeAt(0)))import base64
b64 = base64.b64encode('héllo'.encode()).decode() # 'aMOpbGxv'
text = base64.b64decode(b64).decode() # 'héllo'
url_safe = base64.urlsafe_b64encode(b'\xfb\xff\xbf') # b'-_-_'echo -n 'hello' | base64 # aGVsbG8=
echo 'aGVsbG8=' | base64 --decode # hello
base64 -w 0 image.png > image.txt # Linux: one line, no wrapping[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('hello')) # aGVsbG8=
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aGVsbG8=')) # helloその他のエンコード・テキストツール
テキストやデータを扱うためのその他の変換ツールです。