Base64エンコード・デコード|日本語対応・URLセーフ・ファイル変換(無料)

APIの認証ヘッダー、メールの添付、設定ファイルに埋め込まれた文字列。Base64は「暗号」ではなく、バイナリを文字だけで表すための変換方式です。誰でも元に戻せます。ここを誤解したまま機密情報を入れてしまう事故が、実際によく起きています。

このツールは、テキストとBase64を相互に変換します。日本語(UTF-8)に対応し、URLに埋め込める「URLセーフ」形式にも切り替えられます。画像などのファイルを選べば、HTMLやCSSに直接埋め込めるdata URI形式で出力します。

すべての処理はブラウザの中で完結し、入力した内容もファイルもサーバーへ送信されません。

Base64エンコード・デコード

日本語(UTF-8)に対応。ブラウザ内で処理し、データは送信されません。

MODE
エンコード
INPUT SIZE
OUTPUT SIZE
増加率

FILE / ファイルをBase64にする

画像などを選ぶと、data URI形式で出力します(5MBまで)。

Base64は暗号ではない|最も多い誤解

Base64された文字列は、一見すると意味の分からない英数字の羅列に見えます。そのため「読めないから安全」と考えてしまいがちですが、鍵は不要で、誰でも一瞬で元に戻せます。このページの「Base64 → テキスト」を押すだけです。

Base64暗号化(AESなど)ハッシュ(SHA-256など)
目的バイナリを文字で表現する鍵を持つ人だけが読めるようにする同一性の検証
不要必要不要
元に戻せるか誰でも戻せる鍵があれば戻せる戻せない
秘密の保持できないできる

実際に起きている事故。Basic認証のヘッダー(Authorization: Basic …)は、IDとパスワードをコロンでつないでBase64しただけの文字列です。これをログに残すと、パスワードを平文で記録しているのと同じです。設定ファイルやスクリーンショットにも、同じ理由で注意が必要です。パスワードそのものの扱いはパスワード管理の記事にまとめています。

サイズが約1.33倍になる理由

Base64は、3バイトのデータを4文字に置き換えます。使える文字が64種類(A-Z、a-z、0-9、+、/)に限られるため、1文字で6ビットしか表現できないからです。

元のサイズBase64後増加
3 B4 B+33%
100 KB約133 KB+33%
1 MB の画像約1.33 MB+33%

この増加率が、実務上の判断に効いてきます。画像をdata URIとしてHTMLやCSSに埋め込むと、ファイルは3割ほど大きくなり、しかもブラウザのキャッシュが効きません。使いどころを間違えると、表示速度が落ちます。

用途data URI埋め込み理由
小さなアイコン(数KB)向いている通信の往復が1回減る。サイズ増加より効果が大きい
メールで使う画像向いている外部読み込みはブロックされることが多い
写真・大きな画像向いていないサイズが3割増え、キャッシュも効かない
複数ページで共有する画像向いていないページごとに毎回ダウンロードされる

URLセーフ形式は、何が違うのか

通常のBase64は +/ を使いますが、この2文字はURLの中で別の意味を持ちます。そのままURLに入れると壊れるため、置き換えた形式が用意されています。

通常URLセーフ
62番目の文字+(ハイフン)
63番目の文字/_(アンダースコア)
末尾の詰め物=省略されることが多い
使われる場所メール、設定ファイルURL、JWT、ファイル名

JWT(ログイン状態を表すトークン)は、このURLセーフ形式で作られています。ピリオドで区切られた3つの部分のうち、最初の2つはBase64を解くだけで中身が読めます。ここにも秘密情報を入れてはいけない、という原則が同じように当てはまります。

デコードできないときの原因

原因症状対処
文字が欠けているコピー時に末尾が切れた元のデータからコピーし直す
改行が混ざっているメール由来のBase64は76文字ごとに改行される当ツールは自動で除去します
URLセーフ形式– や _ が含まれている当ツールは自動で判別します
= が足りない末尾の詰め物が省略されている当ツールは自動で補います
そもそもBase64ではない16進数やURLエンコードだった形式を確認する。URLエンコードのツールも用意しています
UTF-8ではない元がShift_JISなどのバイナリテキストとしては復元できない。バイナリのまま扱う

なお、画像やPDFをBase64にしたものを「テキストとして」デコードすることはできません。元がバイナリなので、文字として意味をなさないためです。その場合はdata URI形式のまま、ブラウザのアドレス欄に貼り付けると内容を確認できます。

Base64が使われている、身近な場所

場所理由
メールの添付ファイルメールの規格は文字しか運べない。バイナリを文字に変換する必要がある
data URI(HTML・CSS内の画像)外部ファイルを読みに行かずに済む
Basic認証のヘッダーIDとパスワードを1つの文字列にまとめるため
JWT(認証トークン)URLやヘッダーに安全に載せるため
APIキーの受け渡し改行や特殊文字を含む鍵を1行にするため
証明書ファイル(PEM形式)BEGIN CERTIFICATE で始まるあの中身がBase64

どれも共通しているのは、「文字しか通せない場所に、文字以外のデータを通す」という目的です。秘密を守るための仕組みではない、という点だけ押さえておけば、使い方を誤ることはありません。

JWTの中身を、Base64で読んでみる

ログイン状態を表すJWT(JSON Web Token)は、ピリオドで区切られた3つの部分でできています。前の2つはBase64(URLセーフ形式)を解くだけで読めます。

部分中身読めるか
1つ目(ヘッダー)署名の方式など読める
2つ目(ペイロード)ユーザーID、有効期限、権限など読める
3つ目(署名)改ざん検知用の署名読めない。検証にのみ使う

試すときは、URLセーフのチェックを入れて「Base64 → テキスト」を実行し、ピリオドで区切った2つ目だけを貼り付けてください。JSONが出てきます。JSON整形ツールに通せば読みやすくなります。exp は有効期限で、値はUNIXタイム(秒)です。UNIXタイム変換で日時に直せます。

ここから分かる重要なこと。JWTのペイロードは暗号化されていません。署名は「改ざんされていないこと」を保証するだけで、「中身を隠すこと」はしません。したがって、JWTにパスワードや個人情報を入れてはいけません。ブラウザに保存されたトークンを見れば、誰でも中身を読めます。

data URIの書式と、使いどころの見極め

このツールでファイルを選ぶと出力される data:image/png;base64,.... という形式は、ファイルの中身をURLとして表現したものです。書式は3つの部分でできています。

部分意味
スキームdata:これがdata URIであることを示す
MIMEタイプimage/png中身の種類。省略するとtext/plain扱い
エンコード指定;base64これがないと、URLエンコードとして解釈される

使いどころの判断は、サイズとキャッシュのトレードオフで決まります。

状況data URI通常の画像ファイル
数KBのアイコン1つ有利。通信の往復が減る
同じ画像を複数ページで使う不利。ページごとに毎回読み込む有利。2回目以降はキャッシュ
数百KB以上の画像不利。サイズが3割増える有利
メールに埋め込む有利。外部読み込みは遮断されがち不利
CSSの背景に使う小さな模様有利

目安として、2〜3KB以下の画像はdata URI、それ以上はファイルと考えると、大きく外しません。表示速度の考え方はWordPressの高速化にまとめています。

Basic認証のヘッダーを、実際に組み立ててみる

Basic認証は、「ID:パスワード」という文字列をBase64にしただけのものです。仕組みを知るために、実際に試してみてください。

順番やること
1入力欄に testuser:testpass と入力する(本物の認証情報は使わないこと
2「テキスト → Base64」を押す
3出てきた文字列の前に Basic を付けたものが、Authorizationヘッダーの中身になる
4「入れ替え」を押すと、元のID:パスワードに戻ることを確認する

4番目を実際にやってみると、Basic認証のヘッダーが平文と変わらないことが体感できます。だからこそ、Basic認証は必ずHTTPS上で使う必要があり、ログやスクリーンショットに残してはいけません。認証まわりの安全な設計は二段階認証の記事を参照してください。