logo
GeekFormat

Base64 エンコード

入力テキスト
0文字

無料オンラインBase64エンコード・デコードツール。UTF-8/ASCII/ISO-8859-1文字セットに対応し、Standard/URL-Safe/MIMEの3種類のバリアントをサポート。リアルタイムでボリューム増加率を表示し、MIMEの改行はRFC 2045規格に準拠しています。

関連おすすめ

ユースケース

  • JWTデバッグ:JWTのheaderとpayloadセグメント(Base64URL形式)をデコードし、Tokenクレームの内容を確認
  • Basic Auth:username:passwordをHTTP Basic認証資格情報にエンコード
  • OAuth開発:PKCEシナリオでのcode_verifierの生成またはcode_challengeの検証
  • APIデバッグ:JSONデータのエンコードまたはAPIが返すBase64フィールドの内容をデコード
  • Data URI画像埋め込み:小さなアイコンをdata:image/...;base64,...形式に変換してCSS/HTMLに埋め込み
  • メール添付エンコード:MIME Base64形式でメールのバイナリ添付ファイルをエンコード

特徴

  • Encode/Decodeワンクリック切り替え:エンコードとデコードモードを自由に切り替え、出力を直接入力に変換して循環処理をサポート
  • 3種類の文字セット対応:UTF-8(日本語/中国語/emoji)、ASCII、ISO-8859-1、プロフェッショナル向けに多シナリオをカバー
  • 3種類のバリアント出力:Standard(標準)、URL-Safe(JWT/OAuth/PKCE対応)、MIME(RFC 2045規格76文字改行)
  • リアルタイムボリューム統計:入力/出力文字数と増加率をリアルタイム表示(Base64は約33%ボリューム増加)
  • わかりやすいエラー表示:文字が範囲外の場合、単なるエラーではなく具体的なエラーメッセージを表示
  • ドラッグ可能なセパレーター:PCで左右のエディタエリアの比率を調整して、現在のタスクに集中可能
  • モバイル独立Tab:スマホ/タブレットユーザーは入力エリアと出力エリアを独立して切り替え、スムーズな操作性を実現

使い方

  1. モードを選択:Encode(エンコード)またはDecode(デコード)をクリックして処理方向を切り替え
  2. バリアントを選択:Standard(標準)、URL-Safe(JWT/OAuth)、MIME(メール形式76文字改行)
  3. コンテンツを入力:テキストまたはBase64文字列を貼り付けると、自動的にリアルタイム処理
  4. 統計を確認:下部に文字数とボリューム増加率を表示(エンコード時は約33%ボリューム増加)
  5. 結果をコピー:ワンクリックでBase64文字列またはデコードされたテキストをコピー

よくある質問

Base64エンコードと暗号化は同じものですか?

いいえ。Base64はテキストを別の可逆的表現形式に変換するだけで、誰でも簡単に元のテキストにデコードできます。機密データ(パスワード、Token)を扱う場合は、AESなどの真の暗号化方式を使用してください。Base64はデータ形式の変換に適しており、テキストシステムでバイナリデータを転送しやすくするためのものです。

AES暗号化ツール

Base64エンコード後のボリュームはどのくらい増加しますか?

Base64エンコードにより、元のデータのボリュームは約33%増加します。これは3バイト(24ビット)ごとに4つのBase64文字にエンコードされるためです。例えば100バイトのテキストはエンコード後に約133バイトになります。ツールの下部にリアルタイムで増加率が表示され、データサイズを評価できます。例:`Hello` → `SGVsbG8=`(ボリューム+33%)。

Base64統計ツール

Standard、URL-Safe、MIMEの3種類のバリアントの違いは何ですか?

Standardは標準のBase64で、A-Z、a-z、0-9、+、/の文字を使用します。URL-Safeは+/を-_に置き換え、URLパラメータやJWT Tokenに適しています。MIMEは76文字ごとに改行を挿入し、RFC 2045のメール転送規格に準拠しており、メールの添付ファイルや複数行テキストに適しています。

URL-Safe Base64MIME Base64

JWTのheaderまたはpayloadをデコードするにはどうすればよいですか?

JWTはBase64URLエンコード(URL-Safeバリアント)を使用しています。URL-Safeモードを選択した後、JWTの最初のセグメント(header)または2番目のセグメント(payload)を貼り付けるだけでデコードできます。JWTの3番目のセグメントは署名であり、デコードして検証すべきではないことに注意してください。

JWTツール

Base64のPadding(パディング)とは何ですか?

Base64エンコード結果の長さは4の倍数である必要があります。入力の長さが3の倍数でない場合、=文字で埋められます。URL-Safeバリアントではpaddingを使用しません。ツールはpaddingを自動的に処理し、デコード時には=文字を自動的に除去します。

Base64 Paddingツール

JavaScriptのbtoaとatobが日本語に対応していないのはなぜですか?

btoaとatobはブラウザネイティブのAPIで、Latin-1(ISO-8859-1)文字セットを操作し、各文字は1バイトです。日本語の文字はUTF-8では3バイトを占めるため、直接渡すとエラーが発生します。解決方法は、最初にencodeURIComponentで日本語をUTF-8バイトシーケンスの%xx形式に変換し、次にunescapeでLatin-1文字列に変換してから、btoaでエンコードすることです。

Data URI Schemeとは何ですか?Base64で画像を埋め込むにはどうすればよいですか?

Data URIはデータを直接URLに埋め込むためのURI形式で、構文は次のとおりです:`data:[<mediatype>][;base64],<data>`。例えば`data:image/png;base64,iVBORw0KGgo...`のように使用します。小さなアイコンやCSS背景画像などを埋め込んでHTTPリクエスト数を減らすのによく使われます。ただしBase64ではボリュームが33%増加するため、小さなファイルにのみ適しており、大きなファイルは通常のURLを使用する必要があります。

Data URIツールBase64を画像に変換

Base64エンコードとは何ですか?

Base64は64個の印刷可能なASCII文字に基づくバイナリからテキストへのエンコード方式で、RFC 2045(MIME規格)によって初めて定義されました。Base64は3バイト(24ビット)ごとに4つのBase64文字(A-Z、a-z、0-9、+、/)に変換し、バイナリデータをHTTPヘッダー、JSONペイロード、XMLドキュメント、URLクエリパラメータなどのテキストのみをサポートするシステムで安全に転送できるようにします。

**Base64は暗号化ではありません**。データ形式の変換のみを提供し、誰でも簡単にデコードできます。機密データを保護する必要がある場合は、AESなどの真の暗号化方式を使用してください。Base64の主な用途には、HTTP Basic Authentication(`Authorization: Basic dXNlcjpwYXNz`)、JWT Tokenのheaderとpayloadセグメント(Base64URL形式)、Data URI(`data:image/png;base64,...`)、メール添付のMIMEエンコードなどがあります。

**URL-Safe Base64**(RFC 4648 §5)は、標準Base64の+/を-_に置き換え、通常はpaddingの=を省略します。これにより、エンコード結果をURL、ファイルパス、JSONフィールドに安全に含めることができます。JWT Token、OAuth PKCEのcode_verifier、AWS Signature V4はすべてURL-Safe Base64エンコードを使用しています。

**MIME折り返し**はRFC 2045で規定された1行あたり76文字を超えない規格です。Base64コンテンツが電子メールや特定の改行表示が必要なシナリオで使用される場合、MIMEバリアントは76文字ごとに改行文字(`\n`)を自動的に挿入します。これは電子メールの添付ファイル転送の標準形式です。

このツールはブラウザネイティブの**btoa/atob API**を使用し、UTF-8安全な処理ロジックと組み合わせて、日本語、中国語、emojiなどのマルチバイト文字が正しくエンコードされることを保証します。すべての計算はローカルで完了し、データはいかなるサーバーにも送信されません。ブラウザの開発者ツールのネットワークパネルを開くと、外部リクエストが一切ないことを確認できます。

术语表

RFC 4648
IETFによって発行されたBase16/Base32/Base64エンコードの公式規格。標準Base64とURL-Safe Base64の2種類のアルファベット、およびpadding、改行、非アルファベット文字の処理などのルールを定義しています。現在のBase64エンコードの事実上の標準であり、以前のRFC 3548に代わるものです。URL-Safe Base64ツールBase64 Paddingツール
RFC 2045 (MIME)
多目的インターネットメール拡張(MIME)規格。Base64をメールコンテンツ転送エンコード方式として初めて採用しました。Base64エンコードは1行76文字を超えずCRLFで改行することを規定しており、MIME Base64バリアントと呼ばれます。MIME Base64ツール
Base64URL(URL-Safe Base64)
RFC 4648 §5で定義されたURL安全なバリアント。標準Base64の+を-に、/を_に置き換え、通常はpaddingの=文字を省略します。JWT Token、OAuth PKCE、URLパラメータ、ファイル名などのシナリオで広く使用されています。URL-Safe Base64ツールJWTツール
MIME Base64
RFC 2045規格に準拠したBase64バリアントで、76文字ごとに改行文字(CRLF)を挿入します。主に電子メールの添付ファイル転送に使用されます。これは初期のSMTPプロトコルには1行の長さに制限があったためです。MIME Base64ツール
Padding(パディング)
Base64エンコード結果の長さは4の倍数である必要があります。入力バイト数が3の倍数でない場合、末尾が=文字で埋められます。標準Base64はpaddingを使用し、Base64URLは通常paddingを省略します。Base64 Paddingツール
Base64アルファベット(Alphabet)
Base64エンコードで使用される64文字のセット。標準Base64アルファベットは:A-Z(26文字)、a-z(26文字)、0-9(10文字)、+、/の計64文字に、パディング文字=を加えたものです。
btoa / atob
ブラウザネイティブのBase64エンコード/デコードAPI。btoa(binary to ASCII)はエンコードに、atob(ASCII to binary)はデコードに使用されます。これらのAPIはLatin-1文字セットのみをサポートしていることに注意してください。日本語を処理するにはUTF-8トランスコードと組み合わせる必要があります。
Data URI Scheme
小さなファイルを直接URLに埋め込むことができるURI形式で、形式はdata:[<mediatype>][;base64],<data>です。小さなアイコンやCSS背景画像などを埋め込んでHTTPリクエストを減らすのによく使われます。Data URIツールBase64を画像に変換
HTTP Basic Authentication
HTTPプロトコルの認証方式の1つ。ユーザー名とパスワードをコロンで連結してBase64エンコードし、Authorizationリクエストヘッダーに入れて送信します。形式は次のとおりです:Authorization: Basic <base64(username:password)>。Auth Headerビルダー
Base64ボリューム増加率
Base64エンコード後のデータボリュームの増加率。3バイト(24ビット)が4つのBase64文字にエンコードされるため、ボリュームは約33%増加します(4/3 ≈ 1.333)。paddingを含めると増加率はわずかに高くなります。

Base64 3種類のバリアント比較

機能StandardURL-SafeMIME
特殊文字+ /- _+ /
Padding(=)使用通常省略使用
改行なしなし76文字ごとに改行
標準規格RFC 4648 §4RFC 4648 §5RFC 2045
主な用途Data URI、汎用エンコードJWT、URLパラメータ、ファイル名メール添付、SMTP転送

Baseシリーズエンコード比較表

エンコード方式文字数文字セットの特徴ボリューム増加主な用途
Base16 (Hex)160-9, A-F100%デバッグ、ハッシュ表示
Base3232A-Z, 2-7(大文字で混同しにくい)60%DNS、TOTPキー、QRコード
Base5858混同しやすい文字0/O/I/lを除外38%ビットコインアドレス、暗号通貨
Base6262A-Z, a-z, 0-934%URL短縮、IDエンコード
Base6464A-Z, a-z, 0-9, +, /33%Data URI、MIME、JWT(URL-Safeバリアント)

Code Examples

JavaScriptでのBase64エンコード(日本語UTF-8対応)

// 编码(支持 UTF-8 中文)
function b64Encode(str) {
  return btoa(unescape(encodeURIComponent(str)));
}

// 解码(支持 UTF-8 中文)
function b64Decode(str) {
  return decodeURIComponent(escape(atob(str)));
}

// URL-Safe 编码(用于 JWT / OAuth)
function b64UrlEncode(str) {
  return btoa(unescape(encodeURIComponent(str)))
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=+$/, '');
}

console.log(b64Encode('Hello 世界')); // SGVsbG8g5LiW55WM
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界

PythonでのBase64エンコード

import base64

# Standard 编码(UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
print(encoded.decode())  # SGVsbG8g5LiW55WM

# Standard 解码
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded)  # Hello 世界

# URL-Safe 编码(用于 JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
print(url_safe.decode())  # SGVsbG8g5LiW55WM(无 padding 需手动去除)

# 去除 padding(JWT 标准做法)
url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)

JavaでのBase64エンコード

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        String text = "Hello 世界";

        // Standard 编码
        String encoded = Base64.getEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(encoded); // SGVsbG8g5LiW55WM

        // Standard 解码
        String decoded = new String(
            Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(decoded); // Hello 世界

        // URL-Safe 编码(用于 JWT / URL)
        String urlSafe = Base64.getUrlEncoder().withoutPadding()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(urlSafe);

        // MIME 编码(76字符换行)
        String mime = Base64.getMimeEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
    }
}

Authoritative References