ツールガイド

Base64エンコードとは?使い方・デコード方法をわかりやすく解説

Base64(ベース64)は、バイナリデータをテキスト形式に変換するエンコード方式です。Web開発・セキュリティ・メールなど様々な場面で使われますが「なんとなく知っているけど詳しくない」という方も多いでしょう。この記事では Base64 の仕組みと、オンラインツールを使った実践的な使い方を解説します。

Base64とは?

Base64は、バイナリデータ(画像・音声・バイト列など)を A-Z・a-z・0-9・+・/ の64種類の文字だけで表現するエンコード方式です。「64」という数字はこの64種類の文字に由来します。

元のデータを3バイト(24ビット)ずつ取り出し、6ビットずつ4つに分割して各文字にマッピングします。このため、Base64エンコード後のデータ量は元の約4/3倍(約33%増)になります。

Base64が使われる場面

  • メール添付ファイル:MIME形式でバイナリをテキストに変換して送信
  • JWT(JSON Web Token):ヘッダー・ペイロード・署名が Base64URL でエンコードされている
  • HTML/CSS のインライン画像data:image/png;base64,... の形式
  • Basic認証Authorization: Basic <Base64(user:password)>
  • APIのバイナリデータ送信:JSONはテキストのみのため、バイナリをBase64で渡す

エンコードの例

元のテキスト:

Hello, World!

Base64エンコード後:

SGVsbG8sIFdvcmxkIQ==

末尾の = は「パディング」と呼ばれ、3バイトに満たない端数を補うためのものです。1つまたは2つ付くことがあります。

オンラインツールの使い方

st0z.com の Base64ツールでは、テキストのエンコード・デコードを簡単に行えます。

エンコード(テキスト→Base64)

  1. 「エンコード」タブを選択します
  2. テキスト入力欄にエンコードしたい文字列を入力します
  3. 「エンコード」ボタンをクリックすると Base64 文字列が表示されます
  4. 「コピー」ボタンでクリップボードにコピーできます

デコード(Base64→テキスト)

  1. 「デコード」タブを選択します
  2. Base64 文字列を入力欄に貼り付けます
  3. 「デコード」ボタンをクリックすると元のテキストが表示されます

Base64URL との違い

通常の Base64 では +/ を使いますが、URLの中ではこれらが特殊文字として解釈されてしまいます。そこでURLやファイル名に安全に使える Base64URL という変種があり、+-/_に置き換えています。JWTはこのBase64URLを使用しています。

プログラミングでの使い方

// JavaScript

const encoded = btoa('Hello, World!');

// → 'SGVsbG8sIFdvcmxkIQ=='


const decoded = atob('SGVsbG8sIFdvcmxkIQ==');

// → 'Hello, World!'

# Python

import base64

encoded = base64.b64encode(b'Hello, World!').decode()

# → 'SGVsbG8sIFdvcmxkIQ=='

よくある質問

Q. Base64は暗号化ですか?

A. いいえ。Base64はエンコード(変換)であり、暗号化ではありません。デコードすれば誰でも元のデータを取り出せます。秘密情報の保護には暗号化(AES等)を使ってください。

Q. 日本語もBase64でエンコードできますか?

A. できますが、JavaScriptのbtoa()はASCII文字のみ対応しています。日本語(マルチバイト文字)はUTF-8でエンコードしてからBase64にする必要があります。当ツールはこの変換に対応しています。

Q. データサイズはどのくらい増えますか?

A. Base64エンコード後のデータは元データの約1.33倍(4/3倍)になります。画像をインラインで埋め込む場合などはこのサイズ増加を考慮する必要があります。

まとめ

Base64はバイナリデータをテキストとして扱うための重要なエンコード方式です。Web開発やセキュリティの現場では頻繁に登場するので、エンコード・デコードの仕組みを理解しておくと役立ちます。オンラインツールを使えばコーディング不要で手軽に変換できます。